All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
	alsa-devel@alsa-project.org
Cc: tiwai@suse.de, broonie@kernel.org
Subject: Re: [PATCH 1/2] ASoC: rt5645: fix error handling for gpio detection
Date: Thu, 2 Feb 2017 11:40:44 +0900	[thread overview]
Message-ID: <c41f5795-4b53-48d5-5a46-b2a579f3b931@sakamocchi.jp> (raw)
In-Reply-To: <1485973625-20553-2-git-send-email-pierre-louis.bossart@linux.intel.com>

Hi,

On Feb 2 2017 03:27, Pierre-Louis Bossart wrote:
> Optional gpio handling should not cause an error status and prevent
> probing if it's missing.  Remove error return for -ENOENT case and
> move error message to dev_info
>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> ---
>  sound/soc/codecs/rt5645.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
> index 65ac841..e149f3c 100644
> --- a/sound/soc/codecs/rt5645.c
> +++ b/sound/soc/codecs/rt5645.c
> @@ -3660,8 +3660,14 @@ static int rt5645_i2c_probe(struct i2c_client *i2c,
>  						       GPIOD_IN);
>
>  	if (IS_ERR(rt5645->gpiod_hp_det)) {
> -		dev_err(&i2c->dev, "failed to initialize gpiod\n");
> -		return PTR_ERR(rt5645->gpiod_hp_det);
> +		dev_info(&i2c->dev, "failed to initialize gpiod\n");
> +		ret = PTR_ERR(rt5645->gpiod_hp_det);
> +		/*
> +		 * Continue if optional gpiod is missing, bail for all other
> +		 * errors, including -EPROBE_DEFER
> +		 */
> +		if (ret != -ENOENT)
> +			return ret;
>  	}
>
>  	for (i = 0; i < ARRAY_SIZE(rt5645->supplies); i++)

(sound/soc/codecs/rt5645.c)
rt5645_i2c_probe()
  (drivers/gpio/devres.c)
  ->devm_gpiod_get_optional()
    ->devm_gpiod_get_index_optional()

As long as seeing current implementation of 
'devm_gpiod_get_index_optional()', this function never returns ENOENT. 
In this case, it returns NULL.
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpio/devres.c#n185

IS_ERR(NULL) is false, thus the additional condition is useless. When 
entering the branch, error code should be always returned.

For your purpose, checking NULL at first, then handles the error 
properly, like:

$ git diff
diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
index 1ac96ef..a588454 100644
--- a/sound/soc/codecs/rt5645.c
+++ b/sound/soc/codecs/rt5645.c
@@ -3656,10 +3656,15 @@ static int rt5645_i2c_probe(struct i2c_client *i2c,

         rt5645->gpiod_hp_det = devm_gpiod_get_optional(&i2c->dev, 
"hp-detect",
                                                        GPIOD_IN);
-
-       if (IS_ERR(rt5645->gpiod_hp_det)) {
-               dev_err(&i2c->dev, "failed to initialize gpiod\n");
-               return PTR_ERR(rt5645->gpiod_hp_det);
+       if (rt5645->gpiod_hp_det && IS_ERR(rt5645->gpiod_hp_det)) {
+               dev_info(&i2c->dev, "failed to initialize gpiod\n");
+               ret = PTR_ERR(rt5645->gpiod_hp_det);
+               /*
+                * Continue if optional gpiod is missing, bail for all other
+                * errors, including -EPROBE_DEFER. -ENOENT is never returns
+                * according to implementation of devm_gpiod_get_optional().
+                */
+               return ret;
         }

         for (i = 0; i < ARRAY_SIZE(rt5645->supplies); i++)


Regards

Takashi Sakamoto

  reply	other threads:[~2017-02-02  2:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-01 18:27 [PATCH 0/2] Baytrail/Cherrytrail audio fixes - take2 Pierre-Louis Bossart
2017-02-01 18:27 ` [PATCH 1/2] ASoC: rt5645: fix error handling for gpio detection Pierre-Louis Bossart
2017-02-02  2:40   ` Takashi Sakamoto [this message]
2017-02-02  5:41     ` Pierre-Louis Bossart
2017-02-02 11:06   ` Applied "ASoC: rt5645: fix error handling for gpio detection" to the asoc tree Mark Brown
2017-02-01 18:27 ` [PATCH 2/2] ASoC: cht-bsw-rt5645: fix unused variable compiler warning Pierre-Louis Bossart
2017-02-02 11:06   ` Applied "ASoC: cht-bsw-rt5645: fix unused variable compiler warning" to the asoc tree Mark Brown

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=c41f5795-4b53-48d5-5a46-b2a579f3b931@sakamocchi.jp \
    --to=o-takashi@sakamocchi.jp \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=tiwai@suse.de \
    /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.