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
next prev parent 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.