Message ID | 197e6ca51bb83ae865022d7ffd085d06dfee7795.1492190203.git.sathyanarayanan.kuppuswamy@linux.intel.com |
---|---|
State | New |
Headers | show |
On Fri, Apr 14, 2017 at 7:29 PM, <sathyanarayanan.kuppuswamy@linux.intel.com> wrote: > From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> > > Whiskey cove PMIC has three GPIO banks with total number of 13 GPIO > pins. But when checking for the pending status, for_each_set_bit() uses > bit width of 7 and hence it only checks the status for first 7 GPIO pins > missing to check/clear the status of rest of the GPIO pins. This patch > fixes this issue. > > Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Looks reasonable so patch applied. Just looping in Mika & Andy so they have an idea about what's going on. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 2017-04-24 at 15:15 +0200, Linus Walleij wrote: > On Fri, Apr 14, 2017 at 7:29 PM, > <sathyanarayanan.kuppuswamy@linux.intel.com> wrote: > > > From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.i > > ntel.com> > > > > Whiskey cove PMIC has three GPIO banks with total number of 13 GPIO > > pins. But when checking for the pending status, for_each_set_bit() > > uses > > bit width of 7 and hence it only checks the status for first 7 GPIO > > pins > > missing to check/clear the status of rest of the GPIO pins. This > > patch > > fixes this issue. > > > > Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswam > > y@linux.intel.com> > > Looks reasonable so patch applied. > > Just looping in Mika & Andy so they have an idea about what's going > on. This is fine by me, thanks!
diff --git a/drivers/gpio/gpio-wcove.c b/drivers/gpio/gpio-wcove.c index 68ef061..48c1504 100644 --- a/drivers/gpio/gpio-wcove.c +++ b/drivers/gpio/gpio-wcove.c @@ -319,7 +319,7 @@ static irqreturn_t wcove_gpio_irq_handler(int irq, void *data) while (pending) { /* One iteration is for all pending bits */ for_each_set_bit(gpio, (const unsigned long *)&pending, - GROUP0_NR_IRQS) { + WCOVE_GPIO_NUM) { offset = (gpio > GROUP0_NR_IRQS) ? 1 : 0; mask = (offset == 1) ? BIT(gpio - GROUP0_NR_IRQS) : BIT(gpio);