From: Bjorn Andersson <bjorn.andersson@sonymobile.com>
To: Linus Walleij <linus.walleij@linaro.org>,
Alexandre Courbot <gnurou@gmail.com>
Cc: "linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] gpio: Propagate errors from chip->get()
Date: Mon, 31 Aug 2015 22:16:13 -0700 [thread overview]
Message-ID: <20150901051613.GE13472@usrtlx11787.corpusers.net> (raw)
In-Reply-To: <1440780258-23652-1-git-send-email-bjorn.andersson@sonymobile.com>
On Fri 28 Aug 09:44 PDT 2015, Bjorn Andersson wrote:
> It's possible to have gpio chips hanging off unreliable remote buses
> where the get() operation will fail to acquire a readout of the current
> gpio state. Propagate these errors to the consumer so that they can
> act on, retry or ignore these failing reads, instead of treating them as
> the line being held high.
>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
> ---
> drivers/gpio/gpiolib.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 3b5e516298e0..dc17dbf8c234 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -1173,15 +1173,16 @@ EXPORT_SYMBOL_GPL(gpiod_is_active_low);
> * that the GPIO was actually requested.
> */
>
> -static bool _gpiod_get_raw_value(const struct gpio_desc *desc)
> +static int _gpiod_get_raw_value(const struct gpio_desc *desc)
> {
> struct gpio_chip *chip;
> - bool value;
> int offset;
> + int value;
>
> chip = desc->chip;
> offset = gpio_chip_hwgpio(desc);
> - value = chip->get ? chip->get(chip, offset) : false;
> + value = chip->get ? chip->get(chip, offset) : -EIO;
Linus, Alexandre, please feel free to apply this with -ENOTSUPP in
accordance to Alexandre's comment in [1], if you prefer that. I picked
-EIO as that's what's used in most other places when the get() op is
missing.
Maybe we should follow up with separate patch to make that consistent?
[1] https://lkml.org/lkml/2015/8/31/8
> + value = value < 0 ? value : !!value;
> trace_gpio_value(desc_to_gpio(desc), 1, value);
> return value;
> }
Regards,
Bjorn
next prev parent reply other threads:[~2015-09-01 5:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-28 16:44 [PATCH] gpio: Propagate errors from chip->get() Bjorn Andersson
2015-08-28 16:44 ` Bjorn Andersson
2015-09-01 5:16 ` Bjorn Andersson [this message]
2015-09-02 12:37 ` Alexandre Courbot
2015-09-08 13:04 ` Linus Walleij
2015-09-08 13:02 ` Linus Walleij
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=20150901051613.GE13472@usrtlx11787.corpusers.net \
--to=bjorn.andersson@sonymobile.com \
--cc=gnurou@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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.