Message ID | 20210923172215.18376-1-nikita.yoush@cogentembedded.com |
---|---|
State | New |
Headers | show |
Series | gpio: pca953x: do not ignore i2c errors | expand |
On Thu, Sep 23, 2021 at 7:22 PM Nikita Yushchenko <nikita.yoush@cogentembedded.com> wrote: > > From: Andrey Gusakov <andrey.gusakov@cogentembedded.com> > > Per gpio_chip interface, error shall be proparated to the caller. > > Attempt to silent diagnostics by returning zero (as written in the > comment) is plain wrong, because the zero return can be interpreted by > the caller as the gpio value. > > Signed-off-by: Andrey Gusakov <andrey.gusakov@cogentembedded.com> > Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com> > --- > drivers/gpio/gpio-pca953x.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c > index f5cfc0698799..8ebf369b3ba0 100644 > --- a/drivers/gpio/gpio-pca953x.c > +++ b/drivers/gpio/gpio-pca953x.c > @@ -468,15 +468,8 @@ static int pca953x_gpio_get_value(struct gpio_chip *gc, unsigned off) > mutex_lock(&chip->i2c_lock); > ret = regmap_read(chip->regmap, inreg, ®_val); > mutex_unlock(&chip->i2c_lock); > - if (ret < 0) { > - /* > - * NOTE: > - * diagnostic already emitted; that's all we should > - * do unless gpio_*_value_cansleep() calls become different > - * from their nonsleeping siblings (and report faults). > - */ > - return 0; > - } > + if (ret < 0) > + return ret; > > return !!(reg_val & bit); > } > -- > 2.30.2 > Applied, thanks! Bart
diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c index f5cfc0698799..8ebf369b3ba0 100644 --- a/drivers/gpio/gpio-pca953x.c +++ b/drivers/gpio/gpio-pca953x.c @@ -468,15 +468,8 @@ static int pca953x_gpio_get_value(struct gpio_chip *gc, unsigned off) mutex_lock(&chip->i2c_lock); ret = regmap_read(chip->regmap, inreg, ®_val); mutex_unlock(&chip->i2c_lock); - if (ret < 0) { - /* - * NOTE: - * diagnostic already emitted; that's all we should - * do unless gpio_*_value_cansleep() calls become different - * from their nonsleeping siblings (and report faults). - */ - return 0; - } + if (ret < 0) + return ret; return !!(reg_val & bit); }