From patchwork Sat Apr 2 05:17:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxin Yu X-Patchwork-Id: 12798985 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C14FAC433EF for ; Sat, 2 Apr 2022 05:29:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WnQM4nVVseG0SN+YMjlBfDVVbnecq/6g0gMhA738ylY=; b=Uy7weVZswx5hqQ e+lQdWER3P0EYG0/XLl9jvcRF9OGZL8Jgy+Qz11b4a/6EYMOc9ZRsYMu+4Uv20Z4C+RofETmZKeT/ HOE2rblLQZOethOn1xEpUOQJy9wpcNzCxdBTsgy6zSGNsfN2nxoI+/I9uANUxQikVqlCPp9Bebl48 N2SA32KsmICOUV9HsbnrCTCrY7ZRYU4IHUPQG5/AbndgI6vzUPFEBjH/L2n1Xe237CU/YlWQHODo0 hLlAql3+hQeUDQGy1kB9PY3DPcMNa3lI/LBVGadOEdNyzlE5EYpWZHGxA3b14hvWCxJ6X5Wk/4nFE Sov/Qk3ZuBJs+jKB8ypw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1naWJZ-0085Ql-T8; Sat, 02 Apr 2022 05:28:46 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1naWJ9-0085LK-4I; Sat, 02 Apr 2022 05:28:21 +0000 X-UUID: 0f59c2dbbf0d4e84aa50d4eef6d03401-20220401 X-UUID: 0f59c2dbbf0d4e84aa50d4eef6d03401-20220401 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1820648925; Fri, 01 Apr 2022 22:28:13 -0700 Received: from mtkexhb01.mediatek.inc (172.21.101.102) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 1 Apr 2022 22:18:11 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkexhb01.mediatek.inc (172.21.101.102) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 2 Apr 2022 13:18:00 +0800 Received: from localhost.localdomain (10.17.3.154) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 2 Apr 2022 13:17:59 +0800 From: Jiaxin Yu To: , , CC: , , , , , , , , , , , Jiaxin Yu , Tzung-Bi Shih Subject: [v8 4/4] ASoC: mediatek: mt8192: support rt1015p_rt5682s Date: Sat, 2 Apr 2022 13:17:54 +0800 Message-ID: <20220402051754.17513-5-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220402051754.17513-1-jiaxin.yu@mediatek.com> References: <20220402051754.17513-1-jiaxin.yu@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220401_222819_250798_2FAE21E6 X-CRM114-Status: GOOD ( 15.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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 | 63 ++++++++++++------- 2 files changed, 41 insertions(+), 23 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/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c index fd140df0fd23..780ba7106d9f 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" +#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_substream *substream, return snd_soc_dai_set_sysclk(cpu_dai, 0, mclk_fs, SND_SOC_CLOCK_OUT); } -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 *substream, + struct snd_pcm_hw_params *params) { struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); struct snd_soc_card *card = rtd->card; @@ -118,8 +126,8 @@ static const struct snd_soc_ops mt8192_rt1015_i2s_ops = { .hw_params = mt8192_rt1015_i2s_hw_params, }; -static const struct snd_soc_ops mt8192_rt5682_i2s_ops = { - .hw_params = mt8192_rt5682_i2s_hw_params, +static const struct snd_soc_ops mt8192_rt5682x_i2s_ops = { + .hw_params = mt8192_rt5682x_i2s_hw_params, }; static int mt8192_mt6359_mtkaif_calibration(struct snd_soc_pcm_runtime *rtd) @@ -950,7 +958,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = { .init = mt8192_rt5682_init, .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, SND_SOC_DAILINK_REG(i2s8), - .ops = &mt8192_rt5682_i2s_ops, + .ops = &mt8192_rt5682x_i2s_ops, }, { .name = "I2S9", @@ -959,7 +967,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = { .ignore_suspend = 1, .be_hw_params_fixup = mt8192_i2s_hw_params_fixup, SND_SOC_DAILINK_REG(i2s9), - .ops = &mt8192_rt5682_i2s_ops, + .ops = &mt8192_rt5682x_i2s_ops, }, { .name = "CONNSYS_I2S", @@ -1039,7 +1047,7 @@ static struct snd_soc_codec_conf rt1015_amp_conf[] = { }; static struct snd_soc_card mt8192_mt6359_rt1015_rt5682_card = { - .name = "mt8192_mt6359_rt1015_rt5682", + .name = RT1015_RT5682_CARD_NAME, .owner = THIS_MODULE, .dai_link = mt8192_mt6359_dai_links, .num_links = ARRAY_SIZE(mt8192_mt6359_dai_links), @@ -1053,14 +1061,13 @@ static struct snd_soc_card mt8192_mt6359_rt1015_rt5682_card = { .num_configs = ARRAY_SIZE(rt1015_amp_conf), }; -static const struct snd_soc_dapm_widget -mt8192_mt6359_rt1015p_rt5682_widgets[] = { +static const struct snd_soc_dapm_widget mt8192_mt6359_rt1015p_rt5682x_widgets[] = { SND_SOC_DAPM_SPK("Speakers", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), }; -static const struct snd_soc_dapm_route mt8192_mt6359_rt1015p_rt5682_routes[] = { +static const struct snd_soc_dapm_route mt8192_mt6359_rt1015p_rt5682x_routes[] = { /* speaker */ { "Speakers", NULL, "Speaker" }, /* headset */ @@ -1069,23 +1076,22 @@ static const struct snd_soc_dapm_route mt8192_mt6359_rt1015p_rt5682_routes[] = { { "IN1P", NULL, "Headset Mic" }, }; -static const struct snd_kcontrol_new mt8192_mt6359_rt1015p_rt5682_controls[] = { +static const struct snd_kcontrol_new mt8192_mt6359_rt1015p_rt5682x_controls[] = { SOC_DAPM_PIN_SWITCH("Speakers"), SOC_DAPM_PIN_SWITCH("Headphone Jack"), SOC_DAPM_PIN_SWITCH("Headset Mic"), }; -static struct snd_soc_card mt8192_mt6359_rt1015p_rt5682_card = { - .name = "mt8192_mt6359_rt1015p_rt5682", +static struct snd_soc_card mt8192_mt6359_rt1015p_rt5682x_card = { .owner = THIS_MODULE, .dai_link = mt8192_mt6359_dai_links, .num_links = ARRAY_SIZE(mt8192_mt6359_dai_links), - .controls = mt8192_mt6359_rt1015p_rt5682_controls, - .num_controls = ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682_controls), - .dapm_widgets = mt8192_mt6359_rt1015p_rt5682_widgets, - .num_dapm_widgets = ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682_widgets), - .dapm_routes = mt8192_mt6359_rt1015p_rt5682_routes, - .num_dapm_routes = ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682_routes), + .controls = mt8192_mt6359_rt1015p_rt5682x_controls, + .num_controls = ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682x_controls), + .dapm_widgets = mt8192_mt6359_rt1015p_rt5682x_widgets, + .num_dapm_widgets = ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682x_widgets), + .dapm_routes = mt8192_mt6359_rt1015p_rt5682x_routes, + .num_dapm_routes = ARRAY_SIZE(mt8192_mt6359_rt1015p_rt5682x_routes), }; static int mt8192_mt6359_card_set_be_link(struct snd_soc_card *card, @@ -1119,9 +1125,16 @@ static int mt8192_mt6359_dev_probe(struct platform_device *pdev) return -EINVAL; card->dev = &pdev->dev; + if (of_device_is_compatible(pdev->dev.of_node, RT1015P_RT5682_OF_NAME)) + card->name = RT1015P_RT5682_CARD_NAME; + else if (of_device_is_compatible(pdev->dev.of_node, RT1015P_RT5682S_OF_NAME)) + card->name = RT1015P_RT5682S_CARD_NAME; + else + dev_dbg(&pdev->dev, "No need to set card name\n"); + hdmi_codec = of_parse_phandle(pdev->dev.of_node, "mediatek,hdmi-codec", 0); if (!hdmi_codec) - dev_info(&pdev->dev, "The machine don't have hdmi-codec\n"); + dev_dbg(&pdev->dev, "The machine don't have hdmi-codec\n"); platform_node = of_parse_phandle(pdev->dev.of_node, "mediatek,platform", 0); if (!platform_node) { @@ -1209,12 +1222,16 @@ static int mt8192_mt6359_dev_probe(struct platform_device *pdev) #ifdef CONFIG_OF static const struct of_device_id mt8192_mt6359_dt_match[] = { { - .compatible = "mediatek,mt8192_mt6359_rt1015_rt5682", + .compatible = RT1015_RT5682_OF_NAME, .data = &mt8192_mt6359_rt1015_rt5682_card, }, { - .compatible = "mediatek,mt8192_mt6359_rt1015p_rt5682", - .data = &mt8192_mt6359_rt1015p_rt5682_card, + .compatible = RT1015P_RT5682_OF_NAME, + .data = &mt8192_mt6359_rt1015p_rt5682x_card, + }, + { + .compatible = RT1015P_RT5682S_OF_NAME, + .data = &mt8192_mt6359_rt1015p_rt5682x_card, }, {} };