diff mbox series

[1/2] gpio: max77620: Fixup debounce delays

Message ID 20191108160747.3274377-1-thierry.reding@gmail.com
State New
Headers show
Series [1/2] gpio: max77620: Fixup debounce delays | expand

Commit Message

Thierry Reding Nov. 8, 2019, 4:07 p.m. UTC
From: Thierry Reding <treding@nvidia.com>

When converting milliseconds to microseconds in commit fffa6af94894
("gpio: max77620: Use correct unit for debounce times") some ~1 ms gaps
were introduced between the various ranges supported by the controller.
Fix this by changing the start of each range to the value immediately
following the end of the previous range. This way a debounce time of,
say 8250 us will translate into 16 ms instead of returning an -EINVAL
error.

Typically the debounce delay is only ever set through device tree and
specified in milliseconds, so we can never really hit this issue because
debounce times are always a multiple of 1000 us.

The only notable exception for this is drivers/mmc/host/mmc-spi.c where
the CD GPIO is requested, which passes a 1 us debounce time. According
to a comment preceeding that code this should actually be 1 ms (i.e.
1000 us).

Reported-by: Pavel Machek <pavel@denx.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 drivers/gpio/gpio-max77620.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Pavel Machek Nov. 8, 2019, 8:54 p.m. UTC | #1
On Fri 2019-11-08 17:07:46, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
> 
> When converting milliseconds to microseconds in commit fffa6af94894
> ("gpio: max77620: Use correct unit for debounce times") some ~1 ms gaps
> were introduced between the various ranges supported by the controller.
> Fix this by changing the start of each range to the value immediately
> following the end of the previous range. This way a debounce time of,
> say 8250 us will translate into 16 ms instead of returning an -EINVAL
> error.
> 
> Typically the debounce delay is only ever set through device tree and
> specified in milliseconds, so we can never really hit this issue because
> debounce times are always a multiple of 1000 us.
> 
> The only notable exception for this is drivers/mmc/host/mmc-spi.c where
> the CD GPIO is requested, which passes a 1 us debounce time. According
> to a comment preceeding that code this should actually be 1 ms (i.e.
> 1000 us).
> 
> Reported-by: Pavel Machek <pavel@denx.de>
> Signed-off-by: Thierry Reding <treding@nvidia.com>

Thanks for doing this!

Acked-by: Pavel Machek <pavel@denx.de>

And I guess this should be cc: stable, as the commit this fixes was
making its way there.

Best regards,
								Pavel


> @@ -198,13 +198,13 @@ static int max77620_gpio_set_debounce(struct max77620_gpio *mgpio,
>  	case 0:
>  		val = MAX77620_CNFG_GPIO_DBNC_None;
>  		break;
> -	case 1000 ... 8000:
> +	case 1 ... 8000:
>  		val = MAX77620_CNFG_GPIO_DBNC_8ms;
>  		break;
> -	case 9000 ... 16000:
> +	case 8001 ... 16000:
>  		val = MAX77620_CNFG_GPIO_DBNC_16ms;
>  		break;
> -	case 17000 ... 32000:
> +	case 16001 ... 32000:
>  		val = MAX77620_CNFG_GPIO_DBNC_32ms;
>  		break;
>  	default:
Bartosz Golaszewski Nov. 12, 2019, 10:16 a.m. UTC | #2
pt., 8 lis 2019 o 21:54 Pavel Machek <pavel@denx.de> napisaƂ(a):
>
> On Fri 2019-11-08 17:07:46, Thierry Reding wrote:
> > From: Thierry Reding <treding@nvidia.com>
> >
> > When converting milliseconds to microseconds in commit fffa6af94894
> > ("gpio: max77620: Use correct unit for debounce times") some ~1 ms gaps
> > were introduced between the various ranges supported by the controller.
> > Fix this by changing the start of each range to the value immediately
> > following the end of the previous range. This way a debounce time of,
> > say 8250 us will translate into 16 ms instead of returning an -EINVAL
> > error.
> >
> > Typically the debounce delay is only ever set through device tree and
> > specified in milliseconds, so we can never really hit this issue because
> > debounce times are always a multiple of 1000 us.
> >
> > The only notable exception for this is drivers/mmc/host/mmc-spi.c where
> > the CD GPIO is requested, which passes a 1 us debounce time. According
> > to a comment preceeding that code this should actually be 1 ms (i.e.
> > 1000 us).
> >
> > Reported-by: Pavel Machek <pavel@denx.de>
> > Signed-off-by: Thierry Reding <treding@nvidia.com>
>
> Thanks for doing this!
>
> Acked-by: Pavel Machek <pavel@denx.de>
>
> And I guess this should be cc: stable, as the commit this fixes was
> making its way there.
>
> Best regards,
>                                                                 Pavel
>
>
> > @@ -198,13 +198,13 @@ static int max77620_gpio_set_debounce(struct max77620_gpio *mgpio,
> >       case 0:
> >               val = MAX77620_CNFG_GPIO_DBNC_None;
> >               break;
> > -     case 1000 ... 8000:
> > +     case 1 ... 8000:
> >               val = MAX77620_CNFG_GPIO_DBNC_8ms;
> >               break;
> > -     case 9000 ... 16000:
> > +     case 8001 ... 16000:
> >               val = MAX77620_CNFG_GPIO_DBNC_16ms;
> >               break;
> > -     case 17000 ... 32000:
> > +     case 16001 ... 32000:
> >               val = MAX77620_CNFG_GPIO_DBNC_32ms;
> >               break;
> >       default:
>
> --
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

Applied for fixes and marked for stable.

Thanks
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-max77620.c b/drivers/gpio/gpio-max77620.c
index c5b64a4ac172..313bd02dd893 100644
--- a/drivers/gpio/gpio-max77620.c
+++ b/drivers/gpio/gpio-max77620.c
@@ -198,13 +198,13 @@  static int max77620_gpio_set_debounce(struct max77620_gpio *mgpio,
 	case 0:
 		val = MAX77620_CNFG_GPIO_DBNC_None;
 		break;
-	case 1000 ... 8000:
+	case 1 ... 8000:
 		val = MAX77620_CNFG_GPIO_DBNC_8ms;
 		break;
-	case 9000 ... 16000:
+	case 8001 ... 16000:
 		val = MAX77620_CNFG_GPIO_DBNC_16ms;
 		break;
-	case 17000 ... 32000:
+	case 16001 ... 32000:
 		val = MAX77620_CNFG_GPIO_DBNC_32ms;
 		break;
 	default: