From: Nicolin Chen <nicoleotsuka@gmail.com>
To: Shengjiu Wang <shengjiu.wang@gmail.com>
Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>,
Linux-ALSA <alsa-devel@alsa-project.org>,
kuninori.morimoto.gx@renesas.com, Timur Tabi <timur@kernel.org>,
samuel@sholland.org, katsuhiro@katsuster.net,
Fabio Estevam <festevam@gmail.com>,
Shengjiu Wang <shengjiu.wang@nxp.com>,
Xiubo Li <Xiubo.Lee@gmail.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Rob Herring <robh+dt@kernel.org>, Mark Brown <broonie@kernel.org>,
Takashi Iwai <tiwai@suse.com>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 3/3] ASoC: fsl-asoc-card: Support Headphone and Microphone Jack detection
Date: Tue, 14 Jul 2020 23:40:58 -0700 [thread overview]
Message-ID: <20200715064057.GA14081@Asurada-Nvidia> (raw)
In-Reply-To: <CAA+D8ANQ_B9jJUhLYQnKxKJcVrmvakxPo58h433QqFhdu2nRPA@mail.gmail.com>
On Wed, Jul 15, 2020 at 12:14:01PM +0800, Shengjiu Wang wrote:
> On Wed, Jul 15, 2020 at 5:16 AM Nicolin Chen <nicoleotsuka@gmail.com> wrote:
> >
> > Hi Shengjiu,
> >
> > The whole series looks good to me. Just a couple of small
> > questions inline:
> >
> > On Tue, Jul 14, 2020 at 05:05:36PM +0800, Shengjiu Wang wrote:
> > > Use asoc_simple_init_jack function from simple card to implement
> > > the Headphone and Microphone detection.
> > > Register notifier to disable Speaker when Headphone is plugged in
> > > and enable Speaker when Headphone is unplugged.
> > > Register notifier to disable Digital Microphone when Analog Microphone
> > > is plugged in and enable DMIC when Analog Microphone is unplugged.
> > >
> > > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> > > ---
> > > sound/soc/fsl/Kconfig | 1 +
> > > sound/soc/fsl/fsl-asoc-card.c | 69 ++++++++++++++++++++++++++++++++++-
> > > 2 files changed, 68 insertions(+), 2 deletions(-)
> >
> > > static int fsl_asoc_card_late_probe(struct snd_soc_card *card)
> > > {
> > > struct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(card);
> > > @@ -745,8 +789,29 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
> > > snd_soc_card_set_drvdata(&priv->card, priv);
> > >
> > > ret = devm_snd_soc_register_card(&pdev->dev, &priv->card);
> > > - if (ret && ret != -EPROBE_DEFER)
> > > - dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
> > > + if (ret) {
> > > + if (ret != -EPROBE_DEFER)
> > > + dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
> >
> > I think we may move this EPROBE_DEFER to the asrc_fail label.
>
> If we move this to asrc_fail label, then it will be hard to define the
> error message.
> There are many places that goto asrc_fail.
Oh...good point...
> > > + goto asrc_fail;
> > > + }
> > > +
> > > + if (of_property_read_bool(np, "hp-det-gpio")) {
> >
> > Could we move this check inside asoc_simple_init_jack? There's no
> > problem with doing it here though, yet I got a bit confused by it
> > as I thought it's a boolean type property, which would be against
> > the DT bindings until I saw asoc_simple_init_jack() uses the same
> > string to get the GPIO. Just it probably would be a bit tricky as
> > we need it to be optional here.
> >
> > Otherwise, I think we may add a line of comments to indicate that
> > the API would use the same string to get the GPIO.
>
> In asoc_simple_init_jack, gpio_is_valid() will be invalid when there is
> no "hp-det-gpio" property, and asoc_simple_init_jack will return 0.
>
> The reason why I add a check here is mostly for
> snd_soc_jack_notifier_register().
> when there is no jack created, there will be a kernel dump.
>
> or I can use this code:
>
> - if (of_property_read_bool(np, "hp-det-gpio")) {
> - ret = asoc_simple_init_jack(&priv->card, &priv->hp_jack,
> - 1, NULL, "Headphone Jack");
> - if (ret)
> - goto asrc_fail;
> + ret = asoc_simple_init_jack(&priv->card, &priv->hp_jack,
> + 1, NULL, "Headphone Jack");
> + if (ret)
> + goto asrc_fail;
>
> + if (priv->hp_jack.jack.jack)
> snd_soc_jack_notifier_register(&priv->hp_jack.jack,
It's pretty clean but not very obvious for the "optional" part.
So I think that it'd be slightly better to go for your previous
solution, but with a line of comments to show: these properties
are optional and asoc_simple_init_jack() uses the same strings.
Please add to all three changes once the comments being added:
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Thanks
WARNING: multiple messages have this Message-ID (diff)
From: Nicolin Chen <nicoleotsuka@gmail.com>
To: Shengjiu Wang <shengjiu.wang@gmail.com>
Cc: Shengjiu Wang <shengjiu.wang@nxp.com>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>,
Linux-ALSA <alsa-devel@alsa-project.org>,
linuxppc-dev@lists.ozlabs.org, Timur Tabi <timur@kernel.org>,
kuninori.morimoto.gx@renesas.com, samuel@sholland.org,
katsuhiro@katsuster.net,
linux-kernel <linux-kernel@vger.kernel.org>,
Xiubo Li <Xiubo.Lee@gmail.com>,
Liam Girdwood <lgirdwood@gmail.com>,
Rob Herring <robh+dt@kernel.org>, Takashi Iwai <tiwai@suse.com>,
Mark Brown <broonie@kernel.org>,
Fabio Estevam <festevam@gmail.com>
Subject: Re: [PATCH 3/3] ASoC: fsl-asoc-card: Support Headphone and Microphone Jack detection
Date: Tue, 14 Jul 2020 23:40:58 -0700 [thread overview]
Message-ID: <20200715064057.GA14081@Asurada-Nvidia> (raw)
In-Reply-To: <CAA+D8ANQ_B9jJUhLYQnKxKJcVrmvakxPo58h433QqFhdu2nRPA@mail.gmail.com>
On Wed, Jul 15, 2020 at 12:14:01PM +0800, Shengjiu Wang wrote:
> On Wed, Jul 15, 2020 at 5:16 AM Nicolin Chen <nicoleotsuka@gmail.com> wrote:
> >
> > Hi Shengjiu,
> >
> > The whole series looks good to me. Just a couple of small
> > questions inline:
> >
> > On Tue, Jul 14, 2020 at 05:05:36PM +0800, Shengjiu Wang wrote:
> > > Use asoc_simple_init_jack function from simple card to implement
> > > the Headphone and Microphone detection.
> > > Register notifier to disable Speaker when Headphone is plugged in
> > > and enable Speaker when Headphone is unplugged.
> > > Register notifier to disable Digital Microphone when Analog Microphone
> > > is plugged in and enable DMIC when Analog Microphone is unplugged.
> > >
> > > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> > > ---
> > > sound/soc/fsl/Kconfig | 1 +
> > > sound/soc/fsl/fsl-asoc-card.c | 69 ++++++++++++++++++++++++++++++++++-
> > > 2 files changed, 68 insertions(+), 2 deletions(-)
> >
> > > static int fsl_asoc_card_late_probe(struct snd_soc_card *card)
> > > {
> > > struct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(card);
> > > @@ -745,8 +789,29 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
> > > snd_soc_card_set_drvdata(&priv->card, priv);
> > >
> > > ret = devm_snd_soc_register_card(&pdev->dev, &priv->card);
> > > - if (ret && ret != -EPROBE_DEFER)
> > > - dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
> > > + if (ret) {
> > > + if (ret != -EPROBE_DEFER)
> > > + dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
> >
> > I think we may move this EPROBE_DEFER to the asrc_fail label.
>
> If we move this to asrc_fail label, then it will be hard to define the
> error message.
> There are many places that goto asrc_fail.
Oh...good point...
> > > + goto asrc_fail;
> > > + }
> > > +
> > > + if (of_property_read_bool(np, "hp-det-gpio")) {
> >
> > Could we move this check inside asoc_simple_init_jack? There's no
> > problem with doing it here though, yet I got a bit confused by it
> > as I thought it's a boolean type property, which would be against
> > the DT bindings until I saw asoc_simple_init_jack() uses the same
> > string to get the GPIO. Just it probably would be a bit tricky as
> > we need it to be optional here.
> >
> > Otherwise, I think we may add a line of comments to indicate that
> > the API would use the same string to get the GPIO.
>
> In asoc_simple_init_jack, gpio_is_valid() will be invalid when there is
> no "hp-det-gpio" property, and asoc_simple_init_jack will return 0.
>
> The reason why I add a check here is mostly for
> snd_soc_jack_notifier_register().
> when there is no jack created, there will be a kernel dump.
>
> or I can use this code:
>
> - if (of_property_read_bool(np, "hp-det-gpio")) {
> - ret = asoc_simple_init_jack(&priv->card, &priv->hp_jack,
> - 1, NULL, "Headphone Jack");
> - if (ret)
> - goto asrc_fail;
> + ret = asoc_simple_init_jack(&priv->card, &priv->hp_jack,
> + 1, NULL, "Headphone Jack");
> + if (ret)
> + goto asrc_fail;
>
> + if (priv->hp_jack.jack.jack)
> snd_soc_jack_notifier_register(&priv->hp_jack.jack,
It's pretty clean but not very obvious for the "optional" part.
So I think that it'd be slightly better to go for your previous
solution, but with a line of comments to show: these properties
are optional and asoc_simple_init_jack() uses the same strings.
Please add to all three changes once the comments being added:
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Thanks
next prev parent reply other threads:[~2020-07-15 6:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-14 9:05 [PATCH 0/3] ASoC: fsl-asoc-card: Support hp and mic detection Shengjiu Wang
2020-07-14 9:05 ` Shengjiu Wang
2020-07-14 9:05 ` [PATCH 1/3] ASoC: simple-card-utils: Support configure pin_name for asoc_simple_init_jack Shengjiu Wang
2020-07-14 9:05 ` Shengjiu Wang
2020-07-14 9:05 ` [PATCH 2/3] ASoC: bindings: fsl-asoc-card: Support hp-det-gpio and mic-det-gpio Shengjiu Wang
2020-07-14 9:05 ` Shengjiu Wang
2020-07-14 9:05 ` [PATCH 3/3] ASoC: fsl-asoc-card: Support Headphone and Microphone Jack detection Shengjiu Wang
2020-07-14 9:05 ` Shengjiu Wang
2020-07-14 21:14 ` Nicolin Chen
2020-07-14 21:14 ` Nicolin Chen
2020-07-14 21:14 ` Nicolin Chen
2020-07-15 4:14 ` Shengjiu Wang
2020-07-15 4:14 ` Shengjiu Wang
2020-07-15 6:40 ` Nicolin Chen [this message]
2020-07-15 6:40 ` Nicolin Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200715064057.GA14081@Asurada-Nvidia \
--to=nicoleotsuka@gmail.com \
--cc=Xiubo.Lee@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=katsuhiro@katsuster.net \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=robh+dt@kernel.org \
--cc=samuel@sholland.org \
--cc=shengjiu.wang@gmail.com \
--cc=shengjiu.wang@nxp.com \
--cc=timur@kernel.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.