mbox series

[v5,0/4] ASoC: mediatek: mt8192: support rt1015p_rt5682s

Message ID 20220319114111.11496-1-jiaxin.yu@mediatek.com
Headers show
Series ASoC: mediatek: mt8192: support rt1015p_rt5682s | expand

Message

Jiaxin Yu (俞家鑫) March 19, 2022, 11:41 a.m. UTC
The series reuses mt8192-mt6359-rt10150rt5682.c for supporting machine
driver with rt1015p speaker amplifier and rt5682s headset codec.

Changes form v4:
  - split a large patch into three small patches for easy reviewing
  - correct coding style

Changes from v3:
  - fix build error: too many arguments for format
    [-Werror-format-extra-args]

Changes from v2:
  - fix build warnings such as "data argument not used by format string"

Changes from v1:
  - uses the snd_soc_of_get_dai_link_codecs to complete the
  configuration of dai_link's codecs
  - uses definitions to simplifies card name and compatible name

Jiaxin Yu (4):
  ASoC: dt-bindings: mt8192-mt6359: add new compatible and new
    properties
  ASoC: mediatek: mt8192: refactor for I2S3 DAI link of speaker
  ASoC: mediatek: mt8192: refactor for I2S8/I2S9 DAI links of headset
  ASoC: mediatek: mt8192: support rt1015p_rt5682s

 .../sound/mt8192-mt6359-rt1015-rt5682.yaml    |  29 +++
 sound/soc/mediatek/Kconfig                    |   1 +
 .../mt8192/mt8192-mt6359-rt1015-rt5682.c      | 201 +++++++++++-------
 3 files changed, 153 insertions(+), 78 deletions(-)

Comments

Tzung-Bi Shih March 21, 2022, 3:59 a.m. UTC | #1
On Sat, Mar 19, 2022 at 07:41:09PM +0800, Jiaxin Yu wrote:
>  static int mt8192_mt6359_dev_probe(struct platform_device *pdev)
[...]
> +	hdmi_codec = of_parse_phandle(pdev->dev.of_node, "mediatek,hdmi-codec", 0);
> +	if (!hdmi_codec) {
>  		ret = -EINVAL;
> -		goto put_platform_node;
> +		dev_err_probe(&pdev->dev, ret, "Property 'hdmi-codec' missing or invalid\n");
> +		goto err_hdmi_codec;
>  	}
> -	card->dev = &pdev->dev;
>  
> -	hdmi_codec = of_parse_phandle(pdev->dev.of_node,
> -				      "mediatek,hdmi-codec", 0);
> +	speaker_codec = of_get_child_by_name(pdev->dev.of_node, "mediatek,speaker-codec");
> +	if (!speaker_codec) {
> +		ret = -EINVAL;
> +		dev_err_probe(&pdev->dev, ret, "Property 'speaker_codec' missing or invalid\n");
> +		goto err_speaker_codec;
> +	}

(to be neat) Does it have any reason to prevent from using of_parse_phandle()
but of_get_child_by_name()?
Tzung-Bi Shih March 21, 2022, 3:59 a.m. UTC | #2
On Sat, Mar 19, 2022 at 07:41:10PM +0800, Jiaxin Yu wrote:
> @@ -1145,6 +1140,13 @@ static int mt8192_mt6359_dev_probe(struct platform_device *pdev)
>  		goto err_speaker_codec;
>  	}
>  
> +	headset_codec = of_get_child_by_name(pdev->dev.of_node, "mediatek,headset-codec");
> +	if (!headset_codec) {
> +		ret = -EINVAL;
> +		dev_err_probe(&pdev->dev, ret, "Property 'headset_codec' missing or invalid\n");
> +		goto err_headset_codec;
> +	}

(to be neat) Does it have any reason to prevent from using of_parse_phandle()
but of_get_child_by_name()?
Tzung-Bi Shih March 21, 2022, 3:59 a.m. UTC | #3
On Sat, Mar 19, 2022 at 07:41:11PM +0800, Jiaxin Yu wrote:
> To support machine that only choose one of the rt5682s and rt5682 as
> headset codec, adds new compatible string "mt8192_mt6359_rt1015p_rt5682s".
> Meanwhile, using macros to simplifies card name and compatible name.
> 
> Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com>

Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Jiaxin Yu (俞家鑫) March 21, 2022, 9:14 a.m. UTC | #4
On Mon, 2022-03-21 at 11:59 +0800, Tzung-Bi Shih wrote:
> On Sat, Mar 19, 2022 at 07:41:10PM +0800, Jiaxin Yu wrote:
> > @@ -1145,6 +1140,13 @@ static int mt8192_mt6359_dev_probe(struct
> > platform_device *pdev)
> >  		goto err_speaker_codec;
> >  	}
> >  
> > +	headset_codec = of_get_child_by_name(pdev->dev.of_node,
> > "mediatek,headset-codec");
> > +	if (!headset_codec) {
> > +		ret = -EINVAL;
> > +		dev_err_probe(&pdev->dev, ret, "Property
> > 'headset_codec' missing or invalid\n");
> > +		goto err_headset_codec;
> > +	}
> 
> (to be neat) Does it have any reason to prevent from using
> of_parse_phandle()
> but of_get_child_by_name()?

Hi Tzung-Bi,

"mediatek,headset-codec" is a child node of pdev->dev.of_node, so I use
of_get_child_by_name() to get and   pass it to
snd_soc_of_get_dai_link_codecs().

Jiaxin.Yu
Thanks
Tzung-Bi Shih March 21, 2022, 9:21 a.m. UTC | #5
On Mon, Mar 21, 2022 at 05:14:08PM +0800, Jiaxin Yu wrote:
> On Mon, 2022-03-21 at 11:59 +0800, Tzung-Bi Shih wrote:
> > On Sat, Mar 19, 2022 at 07:41:10PM +0800, Jiaxin Yu wrote:
> > > @@ -1145,6 +1140,13 @@ static int mt8192_mt6359_dev_probe(struct
> > > platform_device *pdev)
> > >  		goto err_speaker_codec;
> > >  	}
> > >  
> > > +	headset_codec = of_get_child_by_name(pdev->dev.of_node,
> > > "mediatek,headset-codec");
> > > +	if (!headset_codec) {
> > > +		ret = -EINVAL;
> > > +		dev_err_probe(&pdev->dev, ret, "Property
> > > 'headset_codec' missing or invalid\n");
> > > +		goto err_headset_codec;
> > > +	}
> > 
> > (to be neat) Does it have any reason to prevent from using
> > of_parse_phandle()
> > but of_get_child_by_name()?
> 
> "mediatek,headset-codec" is a child node of pdev->dev.of_node, so I use
> of_get_child_by_name() to get and   pass it to
> snd_soc_of_get_dai_link_codecs().

"mediatek,platform" and "mediatek,hdmi-codec" are also children of
pdev->dev.of_node.  I guess my question is: why doesn't it also use
of_parse_phandle() for "mediatek,headset-codec"?  Did I misunderstand?
Jiaxin Yu (俞家鑫) March 21, 2022, 2:38 p.m. UTC | #6
On Mon, 2022-03-21 at 17:21 +0800, Tzung-Bi Shih wrote:
> On Mon, Mar 21, 2022 at 05:14:08PM +0800, Jiaxin Yu wrote:
> > On Mon, 2022-03-21 at 11:59 +0800, Tzung-Bi Shih wrote:
> > > On Sat, Mar 19, 2022 at 07:41:10PM +0800, Jiaxin Yu wrote:
> > > > @@ -1145,6 +1140,13 @@ static int
> > > > mt8192_mt6359_dev_probe(struct
> > > > platform_device *pdev)
> > > >  		goto err_speaker_codec;
> > > >  	}
> > > >  
> > > > +	headset_codec = of_get_child_by_name(pdev->dev.of_node,
> > > > "mediatek,headset-codec");
> > > > +	if (!headset_codec) {
> > > > +		ret = -EINVAL;
> > > > +		dev_err_probe(&pdev->dev, ret, "Property
> > > > 'headset_codec' missing or invalid\n");
> > > > +		goto err_headset_codec;
> > > > +	}
> > > 
> > > (to be neat) Does it have any reason to prevent from using
> > > of_parse_phandle()
> > > but of_get_child_by_name()?
> > 
> > "mediatek,headset-codec" is a child node of pdev->dev.of_node, so I
> > use
> > of_get_child_by_name() to get and   pass it to
> > snd_soc_of_get_dai_link_codecs().
> 
> "mediatek,platform" and "mediatek,hdmi-codec" are also children of
> pdev->dev.of_node.  I guess my question is: why doesn't it also use
> of_parse_phandle() for "mediatek,headset-codec"?  Did I
> misunderstand?
Hi Tzung-Bi,

The following is from bindings, "mediatek,speaker-codec" and
"mediatek,headset-codec" are sub nodes of sound but "mediatek,platform"
and "mediatek,hdmi-codec" are the name of properties. So we can't get
the sub node pointer through of_parse_phandle().

      sound: mt8192-sound {
          compatible = "mediatek,mt8192_mt6359_rt1015_rt5682";
          mediatek,platform = <&afe>;
          mediatek,hdmi-codec = <&anx_bridge_dp>;
          pinctrl-names = "aud_clk_mosi_off",
                          "aud_clk_mosi_on";
          pinctrl-0 = <&aud_clk_mosi_off>;
          pinctrl-1 = <&aud_clk_mosi_on>;
 
          mediatek,headset-codec {
              sound-dai = <&rt5682>;
          };
 
          mediatek,speaker-codec {
              sound-dai = <&rt1015_l>,
                          <&rt1015_r>;
          };
      };
Tzung-Bi Shih March 21, 2022, 3:23 p.m. UTC | #7
On Mon, Mar 21, 2022 at 10:38:48PM +0800, Jiaxin Yu wrote:
> On Mon, 2022-03-21 at 17:21 +0800, Tzung-Bi Shih wrote:
> > On Mon, Mar 21, 2022 at 05:14:08PM +0800, Jiaxin Yu wrote:
> > > On Mon, 2022-03-21 at 11:59 +0800, Tzung-Bi Shih wrote:
> > > > On Sat, Mar 19, 2022 at 07:41:10PM +0800, Jiaxin Yu wrote:
> > > > > @@ -1145,6 +1140,13 @@ static int
> > > > > mt8192_mt6359_dev_probe(struct
> > > > > platform_device *pdev)
> > > > >  		goto err_speaker_codec;
> > > > >  	}
> > > > >  
> > > > > +	headset_codec = of_get_child_by_name(pdev->dev.of_node,
> > > > > "mediatek,headset-codec");
> > > > > +	if (!headset_codec) {
> > > > > +		ret = -EINVAL;
> > > > > +		dev_err_probe(&pdev->dev, ret, "Property
> > > > > 'headset_codec' missing or invalid\n");
> > > > > +		goto err_headset_codec;
> > > > > +	}
> > > > 
> > > > (to be neat) Does it have any reason to prevent from using
> > > > of_parse_phandle()
> > > > but of_get_child_by_name()?
> > > 
> > > "mediatek,headset-codec" is a child node of pdev->dev.of_node, so I
> > > use
> > > of_get_child_by_name() to get and   pass it to
> > > snd_soc_of_get_dai_link_codecs().
> > 
> > "mediatek,platform" and "mediatek,hdmi-codec" are also children of
> > pdev->dev.of_node.  I guess my question is: why doesn't it also use
> > of_parse_phandle() for "mediatek,headset-codec"?  Did I
> > misunderstand?
> 
> The following is from bindings, "mediatek,speaker-codec" and
> "mediatek,headset-codec" are sub nodes of sound but "mediatek,platform"
> and "mediatek,hdmi-codec" are the name of properties. So we can't get
> the sub node pointer through of_parse_phandle().
> 
>       sound: mt8192-sound {
>           compatible = "mediatek,mt8192_mt6359_rt1015_rt5682";
>           mediatek,platform = <&afe>;
>           mediatek,hdmi-codec = <&anx_bridge_dp>;
>           pinctrl-names = "aud_clk_mosi_off",
>                           "aud_clk_mosi_on";
>           pinctrl-0 = <&aud_clk_mosi_off>;
>           pinctrl-1 = <&aud_clk_mosi_on>;
>  
>           mediatek,headset-codec {
>               sound-dai = <&rt5682>;
>           };
>  
>           mediatek,speaker-codec {
>               sound-dai = <&rt1015_l>,
>                           <&rt1015_r>;
>           };
>       };

Got it, thanks for the explanation.  Will provide my R-b tag in another
thread.
Tzung-Bi Shih March 21, 2022, 3:24 p.m. UTC | #8
On Sat, Mar 19, 2022 at 07:41:10PM +0800, Jiaxin Yu wrote:
> MT8192 platform use rt5682 codec, so through the snd_soc_of_get_dai_link_codes()
> to complete the configuration of I2S8/I2S9 dai_link's codecs.
> 
> Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com>

Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Tzung-Bi Shih March 21, 2022, 3:24 p.m. UTC | #9
On Sat, Mar 19, 2022 at 07:41:09PM +0800, Jiaxin Yu wrote:
> MT8192 platform will use rt1015 or rt105p codec, so through the
> snd_soc_of_get_dai_link_codecs() to complete the configuration
> of dai_link's codecs.
> 
> Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com>

Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>