From mboxrd@z Thu Jan 1 00:00:00 1970 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 1A8A6C433F5 for ; Wed, 15 Dec 2021 08:21:03 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ySZbXYKLTomtzvRZGavJNJcWfarsLW7iZL4Vj9OJayo=; b=YZ/6aNd9cSPyed rPu/SkPDiKCszng4AODVik6VFo+edrUs1M5MB0jguFdEN+jfOZtYL81WWBXBPvaW3g5wY65uHRYAb xAhOeAnglgpvRgykwwYmLLksWyViTbeIVPiX0crWTk91aHDn81OH5bFDu6L7fUNlYF2afKE1OGf86 5uLMHa2GG83dei1pJ4o9WDZX9niTcX80XJUJEhUlm2CbYvY3Uw3MvCoS59pwiqNcRW4L1S2CVy/bW /oEggLiUZKHgdLLAkrBisRKCrpdbipkp7il/baLzBDKkH9A9Zyz6kOwKc9+Xxo4hW4NHsQKqsoQcg D0N/YWBUatjXVtOIAOIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxPWu-00HKuq-1v; Wed, 15 Dec 2021 08:20:52 +0000 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxPWh-00HKsg-6v for linux-mediatek@lists.infradead.org; Wed, 15 Dec 2021 08:20:40 +0000 Received: by mail-pg1-x535.google.com with SMTP id r138so19542487pgr.13 for ; Wed, 15 Dec 2021 00:20:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=dVW69TmCJnTv5pUkbvRYzOl3hIL8o0Ev8E5MCNMu3v4=; b=G/3L4rDd1Goqt0d0b2dj/cMhsDvkaMD7Z1+8qFaNab+J/SE+VpMr8z5qIjIgg31BP3 6Rgv6T1J2UpaqpYj4Ko/HrsvNIinACGkY9Lq5IoHJmoAfHdOCZaVIS8KCXKSYD+RXgZa /tkVzDLzR++mtz40WJdnBEWAHCVJHeYyEp/qf6PSLI0VfhlzOWEmckna48+po0it3yNf LAXJXzd9ucGOc72u1drmRWGY/oxGZGNbXHlqHYO3Q1Mbr9iGZI5uUeGNv079dUH+i/uQ cRClz28G6WpGzT/Iu1lkboFSdf/KTwa+NTw7eq9XCNDI29f50wCdZFXoICXU1S0PMGXY mLOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=dVW69TmCJnTv5pUkbvRYzOl3hIL8o0Ev8E5MCNMu3v4=; b=Dqg/0spNBp6B1JmvzI+eioHYMuBYsHw6yzMwzSNIRlxl3fV6aIUjGQWmdnwwcx38Pa tH+sSDNajYeHvuWedoNWSzckyST6H2AW+d3ppljXaYS+mk26uppr+DByi22GHs2GpNd9 MXbDSrDBCS7J6dcqJuJcLsFktl1LmU8opLKR4d+Ac0k/fa8BEqrcb2lsNRxfVZXSos8I hGODd/KZ8QMUrbrrEtFIWXTK796mYA0jj8dq2RX15UM3WN+p0AbUaK5qmnqX7yzeguzn MfDH9kKxEIjUZQ5mphk7oaR97ONWT+BdMitdeA57/oUat2Z6Stulrn1kzt5ICaBR+U+s ga3g== X-Gm-Message-State: AOAM533KJisSqN5hnSwoBT/PP9Il6gzj4WnpW5EI51Z/G5m2TDMFBBlJ eh9KpnugQWrvDZIt53+mWibyDTZYEaGSgg== X-Google-Smtp-Source: ABdhPJzqmCCROdTAh4mINIHDWtKReeWzZihdPEwTeamzuw2CuCOAX2lKwuAQZGGVSBG5s+y4UQgjig== X-Received: by 2002:a63:5350:: with SMTP id t16mr6987808pgl.321.1639556435096; Wed, 15 Dec 2021 00:20:35 -0800 (PST) Received: from google.com ([2401:fa00:1:10:754d:1c44:62a9:6d30]) by smtp.gmail.com with ESMTPSA id j127sm1679143pfg.14.2021.12.15.00.20.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Dec 2021 00:20:34 -0800 (PST) Date: Wed, 15 Dec 2021 16:20:31 +0800 From: Tzung-Bi Shih To: Trevor Wu Cc: broonie@kernel.org, tiwai@suse.com, robh+dt@kernel.org, matthias.bgg@gmail.com, alsa-devel@alsa-project.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, jiaxin.yu@mediatek.com, shumingf@realtek.com Subject: Re: [PATCH 1/2] ASoC: mediatek: mt8195: update control for RT5682 series Message-ID: References: <20211215065835.3074-1-trevor.wu@mediatek.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20211215065835.3074-1-trevor.wu@mediatek.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211215_002039_293528_6C76BB9E X-CRM114-Status: GOOD ( 23.81 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org On Wed, Dec 15, 2021 at 02:58:34PM +0800, Trevor Wu wrote: > --- a/sound/soc/mediatek/mt8195/mt8195-mt6359-rt1011-rt5682.c > +++ b/sound/soc/mediatek/mt8195/mt8195-mt6359-rt1011-rt5682.c [...] > +static int mt8195_set_bias_level_post(struct snd_soc_card *card, > + struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level) > +{ > + struct snd_soc_component *component = dapm->component; > + struct mt8195_mt6359_rt1011_rt5682_priv *priv = > + snd_soc_card_get_drvdata(card); > + int ret = 0; ret doesn't need to be initialized. > + /* > + * It's required to control mclk directly in the set_bias_level_post > + * function for rt5682 and rt5682s codec, or the unexpected pop happens > + * at the end of playback. > + */ > + if (!component || > + (strcmp(component->name, RT5682_DEV0_NAME) && > + strcmp(component->name, RT5682S_DEV0_NAME))) > + return 0; > + > + if (IS_ERR(priv->i2so1_mclk)) > + return 0; I doubt if it needs to check priv->i2so1_mclk. In other words, if IS_ERR(priv->i2so1_mclk) is true in _probe, does mt8195_set_bias_level_post() get called? > + switch (level) { > + case SND_SOC_BIAS_OFF: > + if (!__clk_is_enabled(priv->i2so1_mclk)) > + return 0; > + > + dev_dbg(card->dev, "Disable i2so1"); > + clk_disable_unprepare(priv->i2so1_mclk); I would suggest move dev_dbg() later than clk_disable_unprepare() which means "Disable i2so1" is done. > + break; > + case SND_SOC_BIAS_ON: > + dev_dbg(card->dev, "Enable i2so1"); > + ret = clk_prepare_enable(priv->i2so1_mclk); > + if (ret) { > + dev_err(card->dev, "Can't enable mclk, err: %d\n", ret); The error message can be more specific. "Cannot enable i2so1" for example. > + return ret; > + } Also, I would suggest move dev_dbg() later than clk_prepare_enable(). Otherwise, it could fail to prepare or enable but still can see "Enable i2so1" message. > + break; > + default: > + break; > + } > + > + return ret; The function doesn't use any gotos. To be concise, "return 0;". > @@ -1072,6 +1119,19 @@ static int mt8195_mt6359_rt1011_rt5682_dev_probe(struct platform_device *pdev) > return -EINVAL; > } > > + priv->i2so1_mclk = devm_clk_get(&pdev->dev, "i2so1_mclk"); > + if (IS_ERR(priv->i2so1_mclk)) { > + ret = PTR_ERR(priv->i2so1_mclk); > + if (ret == -ENOENT) { > + dev_dbg(&pdev->dev, > + "Failed to get i2so1_mclk, defer probe\n"); > + return -EPROBE_DEFER; > + } Does devm_clk_get_optional() could make the block more concise? > + > + dev_err(&pdev->dev, "Failed to get i2so1_mclk, err:%d\n", ret); If devm_clk_get() is possible to return -EPROBE_DEFER too, use dev_err_probe(). > --- a/sound/soc/mediatek/mt8195/mt8195-mt6359-rt1019-rt5682.c > +++ b/sound/soc/mediatek/mt8195/mt8195-mt6359-rt1019-rt5682.c [...] > +static int mt8195_set_bias_level_post(struct snd_soc_card *card, > + struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level) > +{ > + struct snd_soc_component *component = dapm->component; > + struct mt8195_mt6359_rt1019_rt5682_priv *priv = > + snd_soc_card_get_drvdata(card); > + int ret = 0; Ditto, see comments above. > + > + /* > + * It's required to control mclk directly in the set_bias_level_post > + * function for rt5682 and rt5682s codec, or the unexpected pop happens > + * at the end of playback. > + */ > + if (!component || > + (strcmp(component->name, RT5682_DEV0_NAME) && > + strcmp(component->name, RT5682S_DEV0_NAME))) > + return 0; > + > + if (IS_ERR(priv->i2so1_mclk)) > + return 0; Ditto, see comments above. > + > + switch (level) { > + case SND_SOC_BIAS_OFF: > + if (!__clk_is_enabled(priv->i2so1_mclk)) > + return 0; > + > + dev_dbg(card->dev, "Disable i2so1"); > + clk_disable_unprepare(priv->i2so1_mclk); > + break; > + case SND_SOC_BIAS_ON: > + dev_dbg(card->dev, "Enable i2so1"); > + ret = clk_prepare_enable(priv->i2so1_mclk); > + if (ret) { > + dev_err(card->dev, "Can't enable mclk, err: %d\n", ret); > + return ret; > + } > + break; > + default: > + break; > + } Ditto, see comments above for the block. > + > + return ret; Ditto, see comments above. > @@ -1285,6 +1326,19 @@ static int mt8195_mt6359_rt1019_rt5682_dev_probe(struct platform_device *pdev) > return -EINVAL; > } > > + priv->i2so1_mclk = devm_clk_get(&pdev->dev, "i2so1_mclk"); > + if (IS_ERR(priv->i2so1_mclk)) { > + ret = PTR_ERR(priv->i2so1_mclk); > + if (ret == -ENOENT) { > + dev_dbg(&pdev->dev, > + "Failed to get i2so1_mclk, defer probe\n"); > + return -EPROBE_DEFER; > + } > + > + dev_err(&pdev->dev, "Failed to get i2so1_mclk, err:%d\n", ret); > + return ret; > + } Ditto, see comments above for the block. _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek