From nobody Sun Sep 22 07:27:17 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E237AC433F5 for ; Wed, 23 Mar 2022 16:45:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245514AbiCWQrC (ORCPT ); Wed, 23 Mar 2022 12:47:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239277AbiCWQqr (ORCPT ); Wed, 23 Mar 2022 12:46:47 -0400 Received: from mailgw01.mediatek.com (unknown [60.244.123.138]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89FDC4A3CB; Wed, 23 Mar 2022 09:45:16 -0700 (PDT) X-UUID: eafe73e201da4ff29899425d27de526d-20220324 X-UUID: eafe73e201da4ff29899425d27de526d-20220324 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 2060070821; Thu, 24 Mar 2022 00:45:11 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 24 Mar 2022 00:45:05 +0800 Received: from localhost.localdomain (10.17.3.154) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 24 Mar 2022 00:45:04 +0800 From: Jiaxin Yu To: , , CC: , , , , , , , , , , , Jiaxin Yu , Tzung-Bi Shih Subject: [v6 4/4] ASoC: mediatek: mt8192: support rt1015p_rt5682s Date: Thu, 24 Mar 2022 00:44:42 +0800 Message-ID: <20220323164442.921-5-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220323164442.921-1-jiaxin.yu@mediatek.com> References: <20220323164442.921-1-jiaxin.yu@mediatek.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Tzung-Bi Shih --- sound/soc/mediatek/Kconfig | 1 + .../mt8192/mt8192-mt6359-rt1015-rt5682.c | 61 ++++++++++++------- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/sound/soc/mediatek/Kconfig b/sound/soc/mediatek/Kconfig index d515613a79da..cacfbab4262d 100644 --- a/sound/soc/mediatek/Kconfig +++ b/sound/soc/mediatek/Kconfig @@ -176,6 +176,7 @@ config SND_SOC_MT8192_MT6359_RT1015_RT5682 select SND_SOC_RT1015 select SND_SOC_RT1015P select SND_SOC_RT5682_I2C + select SND_SOC_RT5682S select SND_SOC_DMIC help This adds ASoC driver for Mediatek MT8192 boards diff --git a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c b/soun= d/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c index 328a71aa413b..61eeb973a405 100644 --- a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c +++ b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c @@ -28,6 +28,14 @@ #define RT1015_DEV0_NAME "rt1015.1-0028" #define RT1015_DEV1_NAME "rt1015.1-0029" =20 +#define RT1015_RT5682_CARD_NAME "mt8192_mt6359_rt1015_rt5682" +#define RT1015P_RT5682_CARD_NAME "mt8192_mt6359_rt1015p_rt5682" +#define RT1015P_RT5682S_CARD_NAME "mt8192_mt6359_rt1015p_rt5682s" + +#define RT1015_RT5682_OF_NAME "mediatek,mt8192_mt6359_rt1015_rt5682" +#define RT1015P_RT5682_OF_NAME "mediatek,mt8192_mt6359_rt1015p_rt5682" +#define RT1015P_RT5682S_OF_NAME "mediatek,mt8192_mt6359_rt1015p_rt5682s" + struct mt8192_mt6359_priv { struct snd_soc_jack headset_jack; struct snd_soc_jack hdmi_jack; @@ -68,8 +76,8 @@ static int mt8192_rt1015_i2s_hw_params(struct snd_pcm_sub= stream *substream, return snd_soc_dai_set_sysclk(cpu_dai, 0, mclk_fs, SND_SOC_CLOCK_OUT); } =20 -static int mt8192_rt5682_i2s_hw_params(struct snd_pcm_substream *substream, - struct snd_pcm_hw_params *params) +static int mt8192_rt5682x_i2s_hw_params(struct snd_pcm_substream *substrea= m, + struct snd_pcm_hw_params *params) { struct snd_soc_pcm_runtime *rtd =3D asoc_substream_to_rtd(substream); struct snd_soc_card *card =3D rtd->card; @@ -118,8 +126,8 @@ static const struct snd_soc_ops mt8192_rt1015_i2s_ops = =3D { .hw_params =3D mt8192_rt1015_i2s_hw_params, }; =20 -static const struct snd_soc_ops mt8192_rt5682_i2s_ops =3D { - .hw_params =3D mt8192_rt5682_i2s_hw_params, +static const struct snd_soc_ops mt8192_rt5682x_i2s_ops =3D { + .hw_params =3D mt8192_rt5682x_i2s_hw_params, }; =20 static int mt8192_mt6359_mtkaif_calibration(struct snd_soc_pcm_runtime *rt= d) @@ -950,7 +958,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[= ] =3D { .init =3D mt8192_rt5682_init, .be_hw_params_fixup =3D mt8192_i2s_hw_params_fixup, SND_SOC_DAILINK_REG(i2s8), - .ops =3D &mt8192_rt5682_i2s_ops, + .ops =3D &mt8192_rt5682x_i2s_ops, }, { .name =3D "I2S9", @@ -959,7 +967,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[= ] =3D { .ignore_suspend =3D 1, .be_hw_params_fixup =3D mt8192_i2s_hw_params_fixup, SND_SOC_DAILINK_REG(i2s9), - .ops =3D &mt8192_rt5682_i2s_ops, + .ops =3D &mt8192_rt5682x_i2s_ops, }, { .name =3D "CONNSYS_I2S", @@ -1039,7 +1047,7 @@ static struct snd_soc_codec_conf rt1015_amp_conf[] = =3D { }; =20 static struct snd_soc_card mt8192_mt6359_rt1015_rt5682_card =3D { - .name =3D "mt8192_mt6359_rt1015_rt5682", + .name =3D RT1015_RT5682_CARD_NAME, .owner =3D THIS_MODULE, .dai_link =3D mt8192_mt6359_dai_links, .num_links =3D ARRAY_SIZE(mt8192_mt6359_dai_links), @@ -1053,14 +1061,13 @@ static struct snd_soc_card mt8192_mt6359_rt1015_rt5= 682_card =3D { .num_configs =3D ARRAY_SIZE(rt1015_amp_conf), }; =20 -static const struct snd_soc_dapm_widget -mt8192_mt6359_rt1015p_rt5682_widgets[] =3D { +static const struct snd_soc_dapm_widget mt8192_mt6359_rt1015p_rt5682x_widg= ets[] =3D { SND_SOC_DAPM_SPK("Speakers", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), }; =20 -static const struct snd_soc_dapm_route mt8192_mt6359_rt1015p_rt5682_routes= [] =3D { +static const struct snd_soc_dapm_route mt8192_mt6359_rt1015p_rt5682x_route= s[] =3D { /* speaker */ { "Speakers", NULL, "Speaker" }, /* headset */ @@ -1069,23 +1076,22 @@ static const struct snd_soc_dapm_route mt8192_mt635= 9_rt1015p_rt5682_routes[] =3D { { "IN1P", NULL, "Headset Mic" }, }; =20 -static const struct snd_kcontrol_new mt8192_mt6359_rt1015p_rt5682_controls= [] =3D { +static const struct snd_kcontrol_new mt8192_mt6359_rt1015p_rt5682x_control= s[] =3D { SOC_DAPM_PIN_SWITCH("Speakers"), SOC_DAPM_PIN_SWITCH("Headphone Jack"), SOC_DAPM_PIN_SWITCH("Headset Mic"), }; =20 -static struct snd_soc_card mt8192_mt6359_rt1015p_rt5682_card =3D { - .name =3D "mt8192_mt6359_rt1015p_rt5682", +static struct snd_soc_card mt8192_mt6359_rt1015p_rt5682x_card =3D { .owner =3D THIS_MODULE, .dai_link =3D mt8192_mt6359_dai_links, .num_links =3D ARRAY_SIZE(mt8192_mt6359_dai_links), - .controls =3D mt8192_mt6359_rt1015p_rt5682_controls, - .num_controls =3D ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682_controls), - .dapm_widgets =3D mt8192_mt6359_rt1015p_rt5682_widgets, - .num_dapm_widgets =3D ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682_widgets), - .dapm_routes =3D mt8192_mt6359_rt1015p_rt5682_routes, - .num_dapm_routes =3D ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682_routes), + .controls =3D mt8192_mt6359_rt1015p_rt5682x_controls, + .num_controls =3D ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682x_controls), + .dapm_widgets =3D mt8192_mt6359_rt1015p_rt5682x_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682x_widgets), + .dapm_routes =3D mt8192_mt6359_rt1015p_rt5682x_routes, + .num_dapm_routes =3D ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682x_routes), }; =20 static int mt8192_mt6359_card_set_be_link(struct snd_soc_card *card, @@ -1119,6 +1125,13 @@ static int mt8192_mt6359_dev_probe(struct platform_d= evice *pdev) return -EINVAL; card->dev =3D &pdev->dev; =20 + if (of_device_is_compatible(pdev->dev.of_node, RT1015P_RT5682_OF_NAME)) + card->name =3D RT1015P_RT5682_CARD_NAME; + else if (of_device_is_compatible(pdev->dev.of_node, RT1015P_RT5682S_OF_NA= ME)) + card->name =3D RT1015P_RT5682S_CARD_NAME; + else + dev_dbg(&pdev->dev, "No need to set card name\n"); + platform_node =3D of_parse_phandle(pdev->dev.of_node, "mediatek,platform"= , 0); if (!platform_node) { ret =3D -EINVAL; @@ -1213,12 +1226,16 @@ static int mt8192_mt6359_dev_probe(struct platform_= device *pdev) #ifdef CONFIG_OF static const struct of_device_id mt8192_mt6359_dt_match[] =3D { { - .compatible =3D "mediatek,mt8192_mt6359_rt1015_rt5682", + .compatible =3D RT1015_RT5682_OF_NAME, .data =3D &mt8192_mt6359_rt1015_rt5682_card, }, { - .compatible =3D "mediatek,mt8192_mt6359_rt1015p_rt5682", - .data =3D &mt8192_mt6359_rt1015p_rt5682_card, + .compatible =3D RT1015P_RT5682_OF_NAME, + .data =3D &mt8192_mt6359_rt1015p_rt5682x_card, + }, + { + .compatible =3D RT1015P_RT5682S_OF_NAME, + .data =3D &mt8192_mt6359_rt1015p_rt5682x_card, }, {} }; --=20 2.18.0