Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp670845rwb; Wed, 26 Jul 2023 00:25:49 -0700 (PDT) X-Google-Smtp-Source: APBJJlEqQ4SnsNb4rOZCLvANl8O2odr0ag5E639daWvePQSxk4BIXU82cIiNt55qXqPzY3fw46IY X-Received: by 2002:a05:6a00:a06:b0:661:4a00:1ea5 with SMTP id p6-20020a056a000a0600b006614a001ea5mr1515487pfh.20.1690356348717; Wed, 26 Jul 2023 00:25:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690356348; cv=none; d=google.com; s=arc-20160816; b=BJa/BASDSIQx3EGiZ7XR40xGk2rJ9+bKPUBXI626PAOuMhSz895kXusRFCMvUnA7+B 93MVErM2fmTE4e/ZGXYYhGMdtK9yB/gAvmBGcUz6kCjfIovB0HuINyh1Mt1uOtApev/2 n8QHGjkx0+V3VVz/IaJofFs2gS/MMT9gjAJAgSHh3uW1+aabVrG+r4tB3/YuzcfLF4sQ ZqRiGlOasSu94GpVvmG7KcFTFLqVKRDJbXCFq0sKpi8EW9Dcpp7cERWIoyeoVrd46nzP vNZiRS7rGnFOYhPQ5QJR7t0MxMaD+SEp+EjePns7KGTp/AL3XNKBehJozGYp+tueWZEf uD7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=G7821ilhFlT029xM6oglzjHP+CqywS3YqF31rtl2Wi4=; fh=gczQsWoNsAC1KrtSZVDqJNqn4Tf2nGelKE1JlEm918Y=; b=G/KxoPKRVezDOq2ZKBb4vQM3ky4BdB7vHmtshF3uEoKol9vM6DheHinoK+GY1VxZLR REFLhBS1EkjgJd6f3UKrHGsbznWZg7odHLrplFpX1vB8fDckJZ/SY2dIojJIddZNnuBf 9HaNVmwXq7kIZDgrIRBt5mwcFoQw4Z9lmVrkTqhGttpAfnzbO2Frnu/t5vdDM+940Vqk Ft2Vqef72Z+yzqP7yptkvwzu0uqhWJbzJzuUzCpM0TLNoSXaUbs+tsD1qR1w3ogTNjDe dSKT+F1gAKqXd+d0PVEjmswABCq16cidn4XvoQ7YxpdI3bUQJr4xrEHC/PFmEYLwlytL +QpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=CsHt+jjI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bu8-20020a056a00410800b00662ba7f8a5fsi12834872pfb.170.2023.07.26.00.25.35; Wed, 26 Jul 2023 00:25:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=CsHt+jjI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231968AbjGZGoB (ORCPT + 99 others); Wed, 26 Jul 2023 02:44:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229822AbjGZGoA (ORCPT ); Wed, 26 Jul 2023 02:44:00 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D16C4F3 for ; Tue, 25 Jul 2023 23:43:59 -0700 (PDT) Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id C55166606FCD; Wed, 26 Jul 2023 07:43:56 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1690353837; bh=ueP/nJT2Gh7HXLsoqgGPitlbPHdEBRo9/F4NVdXN5QA=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=CsHt+jjIa69g/AtpQwjI8k3S4eSG1xRx95L9zMP9Fg/TuGdhL5XxU/jV0xp9Ffgy7 Tgz2FV3IUjx66DnpJZukyzx1qPFuedXqvyNPod35NArm0RsKMvMCedP2WLLTZBVbuK ulaCAuMWLQC3kYBg4cBSBDuZfiQ/TeI1YB81zPsMyrcTTn4C9k+vpuctNgNU5X7zcI HLI+p7H5SjvTtRfaHa0N2220nU30r85wRBaKULGJC7WLH/R06/fq5eRO+r4Z1eMAPM z9VKLJajCFy9djuweNxfzDQ4BMFZADBLBF+UPsgGcMyz8PxpO3GF1M/Pyk4065svq1 pnI/N1aBM6Egw== Message-ID: <320ab7cc-32dd-79dd-b2ae-96d3608aeb9c@collabora.com> Date: Wed, 26 Jul 2023 08:43:54 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH 1/3] ASoC: mediatek: mt8188-mt6359: support dynamic pinctrl To: =?UTF-8?B?VHJldm9yIFd1ICjlkLPmlofoia8p?= , "lgirdwood@gmail.com" , "matthias.bgg@gmail.com" , "broonie@kernel.org" , "tiwai@suse.com" , "perex@perex.cz" Cc: "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "alsa-devel@alsa-project.org" References: <20230725035304.2864-1-trevor.wu@mediatek.com> <20230725035304.2864-2-trevor.wu@mediatek.com> <5314542c-9a99-fad1-93f6-4f72c8698715@collabora.com> <69690b530fb46d6adad1732d570c8cfad9c0f23c.camel@mediatek.com> Content-Language: en-US From: AngeloGioacchino Del Regno In-Reply-To: <69690b530fb46d6adad1732d570c8cfad9c0f23c.camel@mediatek.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Il 26/07/23 04:19, Trevor Wu (吳文良) ha scritto: > On Tue, 2023-07-25 at 09:06 +0200, AngeloGioacchino Del Regno wrote: >> Il 25/07/23 05:53, Trevor Wu ha scritto: >>> To avoid power leakage, it is recommended to replace the default >>> pinctrl >>> state with dynamic pinctrl since certain audio pinmux functions can >>> remain in a HIGH state even when audio is disabled. Linking pinctrl >>> with >>> DAPM using SND_SOC_DAPM_PINCTRL will ensure that audio pins remain >>> in >>> GPIO mode by default and only switch to an audio function when >>> necessary. >>> >>> Signed-off-by: Trevor Wu >>> --- >>> sound/soc/mediatek/mt8188/mt8188-mt6359.c | 21 >>> +++++++++++++++++++++ >>> 1 file changed, 21 insertions(+) >>> >>> diff --git a/sound/soc/mediatek/mt8188/mt8188-mt6359.c >>> b/sound/soc/mediatek/mt8188/mt8188-mt6359.c >>> index 7c9e08e6a4f5..667d79f33bf2 100644 >>> --- a/sound/soc/mediatek/mt8188/mt8188-mt6359.c >>> +++ b/sound/soc/mediatek/mt8188/mt8188-mt6359.c >>> @@ -246,6 +246,11 @@ static const struct snd_soc_dapm_widget >>> mt8188_mt6359_widgets[] = { >>> SND_SOC_DAPM_MIC("Headset Mic", NULL), >>> SND_SOC_DAPM_SINK("HDMI"), >>> SND_SOC_DAPM_SINK("DP"), >>> + >>> + /* dynamic pinctrl */ >>> + SND_SOC_DAPM_PINCTRL("ETDM_SPK_PIN", "aud_etdm_spk_on", >>> "aud_etdm_spk_off"), >>> + SND_SOC_DAPM_PINCTRL("ETDM_HP_PIN", "aud_etdm_hp_on", >>> "aud_etdm_hp_off"), >>> + SND_SOC_DAPM_PINCTRL("MTKAIF_PIN", "aud_mtkaif_on", >>> "aud_mtkaif_off"), >>> }; >>> >>> static const struct snd_kcontrol_new mt8188_mt6359_controls[] = { >>> @@ -267,6 +272,7 @@ static int >>> mt8188_mt6359_mtkaif_calibration(struct snd_soc_pcm_runtime *rtd) >>> snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME); >>> struct snd_soc_component *cmpnt_codec = >>> asoc_rtd_to_codec(rtd, 0)->component; >>> + struct snd_soc_dapm_widget *pin_w = NULL, *w; >>> struct mtk_base_afe *afe; >>> struct mt8188_afe_private *afe_priv; >>> struct mtkaif_param *param; >>> @@ -306,6 +312,18 @@ static int >>> mt8188_mt6359_mtkaif_calibration(struct snd_soc_pcm_runtime *rtd) >>> return 0; >>> } >>> >>> + for_each_card_widgets(rtd->card, w) { >>> + if (!strcmp(w->name, "MTKAIF_PIN")) { >> >> if (strncmp(w->name, "MTKAIF_PIN", strlen(w->name) == 0) { >> pin_w = w; >> break; >> } >> >> That's safer. >> > > If w->name is MTKAIF, the strncmp expression will return 0. However, > the result is not expected. I prefer to keep strcmp here. > You could also do, instead if (strncmp(w->name, "MTKAIF_PIN", strlen("MTKAIF_PIN") == 0)) ...solving your concern. Regards, Angelo >>> + pin_w = w; >>> + break; >>> + } >>> + } >>> + >>> + if (!pin_w) >> >> Just a nitpick: you're checking for `if (pin_w)` later in this >> function, so >> to increase readability please do the same here. >> >> if (pin_w) >> dapm_pinctrl_event(...) >> else >> dev_dbg(...) >> > > OK. I will update it in v2. > > Thanks, > Trevor