lkml.org 
[lkml]   [2022]   [Apr]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[v8 3/4] ASoC: mediatek: mt8192: refactor for I2S8/I2S9 DAI links of headset
    Date
    MT8192 platform use rt5682 codec, so through the snd_soc_of_get_dai_link_codecs()
    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>
    ---
    .../mt8192/mt8192-mt6359-rt1015-rt5682.c | 34 ++++++++++++++-----
    1 file changed, 26 insertions(+), 8 deletions(-)

    diff --git a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
    index a0b305c45ac8..fd140df0fd23 100644
    --- a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
    +++ b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
    @@ -28,9 +28,6 @@
    #define RT1015_DEV0_NAME "rt1015.1-0028"
    #define RT1015_DEV1_NAME "rt1015.1-0029"

    -#define RT5682_CODEC_DAI "rt5682-aif1"
    -#define RT5682_DEV0_NAME "rt5682.1-001a"
    -
    struct mt8192_mt6359_priv {
    struct snd_soc_jack headset_jack;
    struct snd_soc_jack hdmi_jack;
    @@ -626,14 +623,12 @@ SND_SOC_DAILINK_DEFS(i2s7,

    SND_SOC_DAILINK_DEFS(i2s8,
    DAILINK_COMP_ARRAY(COMP_CPU("I2S8")),
    - DAILINK_COMP_ARRAY(COMP_CODEC(RT5682_DEV0_NAME,
    - RT5682_CODEC_DAI)),
    + DAILINK_COMP_ARRAY(COMP_EMPTY()),
    DAILINK_COMP_ARRAY(COMP_EMPTY()));

    SND_SOC_DAILINK_DEFS(i2s9,
    DAILINK_COMP_ARRAY(COMP_CPU("I2S9")),
    - DAILINK_COMP_ARRAY(COMP_CODEC(RT5682_DEV0_NAME,
    - RT5682_CODEC_DAI)),
    + DAILINK_COMP_ARRAY(COMP_EMPTY()),
    DAILINK_COMP_ARRAY(COMP_EMPTY()));

    SND_SOC_DAILINK_DEFS(connsys_i2s,
    @@ -1114,7 +1109,7 @@ static int mt8192_mt6359_card_set_be_link(struct snd_soc_card *card,
    static int mt8192_mt6359_dev_probe(struct platform_device *pdev)
    {
    struct snd_soc_card *card;
    - struct device_node *platform_node, *hdmi_codec, *speaker_codec;
    + struct device_node *platform_node, *hdmi_codec, *headset_codec, *speaker_codec;
    int ret, i;
    struct snd_soc_dai_link *dai_link;
    struct mt8192_mt6359_priv *priv;
    @@ -1142,6 +1137,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, "headset-codec");
    + if (!headset_codec) {
    + ret = -EINVAL;
    + dev_err_probe(&pdev->dev, ret, "Property 'headset-codec' missing or invalid\n");
    + goto err_headset_codec;
    + }
    +
    for_each_card_prelinks(card, i, dai_link) {
    ret = mt8192_mt6359_card_set_be_link(card, dai_link, speaker_codec, "I2S3");
    if (ret) {
    @@ -1150,6 +1152,20 @@ static int mt8192_mt6359_dev_probe(struct platform_device *pdev)
    goto err_probe;
    }

    + ret = mt8192_mt6359_card_set_be_link(card, dai_link, headset_codec, "I2S8");
    + if (ret) {
    + dev_err_probe(&pdev->dev, ret, "%s set headset_codec fail\n",
    + dai_link->name);
    + goto err_probe;
    + }
    +
    + ret = mt8192_mt6359_card_set_be_link(card, dai_link, headset_codec, "I2S9");
    + if (ret) {
    + dev_err_probe(&pdev->dev, ret, "%s set headset_codec fail\n",
    + dai_link->name);
    + goto err_probe;
    + }
    +
    if (hdmi_codec && strcmp(dai_link->name, "TDM") == 0) {
    dai_link->codecs->of_node = hdmi_codec;
    dai_link->ignore = 0;
    @@ -1180,6 +1196,8 @@ static int mt8192_mt6359_dev_probe(struct platform_device *pdev)
    dev_err_probe(&pdev->dev, ret, "%s snd_soc_register_card fail\n", __func__);

    err_probe:
    + of_node_put(headset_codec);
    +err_headset_codec:
    of_node_put(speaker_codec);
    err_speaker_codec:
    of_node_put(platform_node);
    --
    2.18.0
    \
     
     \ /
      Last update: 2022-04-02 07:18    [W:2.474 / U:0.596 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site