gpiolib: do not print err message for EPROBE_DEFER

Message ID 20201118142917.25752-1-grygorii.strashko@ti.com
State Accepted
Commit 3cc1fb73993905b598da3802f87ac59411c52516
Headers show
Series
  • gpiolib: do not print err message for EPROBE_DEFER
Related show

Commit Message

Grygorii Strashko Nov. 18, 2020, 2:29 p.m.
The gpiochip may have dependencies from pinmux and so got deferred. Now it
will print error message every time -EPROBE_DEFER is returned which is
unnecessary:

"gpiochip_add_data_with_key: GPIOs 0..31 (gpio-0-31) failed to register, -517"

Hence, do suppress error message for -EPROBE_DEFER case.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>

---
 drivers/gpio/gpiolib.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

-- 
2.17.1

Comments

Grygorii Strashko Dec. 1, 2020, 5:16 p.m. | #1
hi Bartosz, All,

On 18/11/2020 16:29, Grygorii Strashko wrote:
> The gpiochip may have dependencies from pinmux and so got deferred. Now it

> will print error message every time -EPROBE_DEFER is returned which is

> unnecessary:

> 

> "gpiochip_add_data_with_key: GPIOs 0..31 (gpio-0-31) failed to register, -517"

> 

> Hence, do suppress error message for -EPROBE_DEFER case.

> 

> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>

> ---

>   drivers/gpio/gpiolib.c | 8 +++++---

>   1 file changed, 5 insertions(+), 3 deletions(-)

> 

> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c

> index 089ddcaa9bc6..fd2c503a6aab 100644

> --- a/drivers/gpio/gpiolib.c

> +++ b/drivers/gpio/gpiolib.c

> @@ -771,9 +771,11 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,

>   	ida_free(&gpio_ida, gdev->id);

>   err_free_gdev:

>   	/* failures here can mean systems won't boot... */

> -	pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,

> -	       gdev->base, gdev->base + gdev->ngpio - 1,

> -	       gc->label ? : "generic", ret);

> +	if (ret != -EPROBE_DEFER) {

> +		pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,

> +		       gdev->base, gdev->base + gdev->ngpio - 1,

> +		       gc->label ? : "generic", ret);

> +	}

>   	kfree(gdev);

>   	return ret;

>   }

> 


Any comments for this patch?

Note. Modern dev_err_probe() seems can't be used as gpio_chip->parent is not guaranteed to be set and
it's not clear if chip_err() still can be used at this stage.

-- 
Best regards,
grygorii
Bartosz Golaszewski Dec. 1, 2020, 6:03 p.m. | #2
On Tue, Dec 1, 2020 at 6:16 PM Grygorii Strashko
<grygorii.strashko@ti.com> wrote:
>

> hi Bartosz, All,

>

> On 18/11/2020 16:29, Grygorii Strashko wrote:

> > The gpiochip may have dependencies from pinmux and so got deferred. Now it

> > will print error message every time -EPROBE_DEFER is returned which is

> > unnecessary:

> >

> > "gpiochip_add_data_with_key: GPIOs 0..31 (gpio-0-31) failed to register, -517"

> >

> > Hence, do suppress error message for -EPROBE_DEFER case.

> >

> > Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>

> > ---

> >   drivers/gpio/gpiolib.c | 8 +++++---

> >   1 file changed, 5 insertions(+), 3 deletions(-)

> >

> > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c

> > index 089ddcaa9bc6..fd2c503a6aab 100644

> > --- a/drivers/gpio/gpiolib.c

> > +++ b/drivers/gpio/gpiolib.c

> > @@ -771,9 +771,11 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,

> >       ida_free(&gpio_ida, gdev->id);

> >   err_free_gdev:

> >       /* failures here can mean systems won't boot... */

> > -     pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,

> > -            gdev->base, gdev->base + gdev->ngpio - 1,

> > -            gc->label ? : "generic", ret);

> > +     if (ret != -EPROBE_DEFER) {

> > +             pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,

> > +                    gdev->base, gdev->base + gdev->ngpio - 1,

> > +                    gc->label ? : "generic", ret);

> > +     }

> >       kfree(gdev);

> >       return ret;

> >   }

> >

>

> Any comments for this patch?

>

> Note. Modern dev_err_probe() seems can't be used as gpio_chip->parent is not guaranteed to be set and

> it's not clear if chip_err() still can be used at this stage.

>

> --

> Best regards,

> grygorii


I applied this patch now. We seem to have a patch congestion on the
list - I'm trying to get through unread email but more is coming
everyday. :(

Bartosz

Patch

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 089ddcaa9bc6..fd2c503a6aab 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -771,9 +771,11 @@  int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
 	ida_free(&gpio_ida, gdev->id);
 err_free_gdev:
 	/* failures here can mean systems won't boot... */
-	pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,
-	       gdev->base, gdev->base + gdev->ngpio - 1,
-	       gc->label ? : "generic", ret);
+	if (ret != -EPROBE_DEFER) {
+		pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,
+		       gdev->base, gdev->base + gdev->ngpio - 1,
+		       gc->label ? : "generic", ret);
+	}
 	kfree(gdev);
 	return ret;
 }