From: Ben Dooks Date: Fri, 25 Jul 2008 08:46:03 +0000 (-0700) Subject: mfd: sm501 fix gpio number calculation for upper bank X-Git-Tag: v2.6.27-rc1~452 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53a9600c634e3bfd6230e0597aca159bf4d4d010;p=linux-2.6 mfd: sm501 fix gpio number calculation for upper bank The sm501_gpio_pin2nr() routine returns the wrong values for gpios in the upper bank. Signed-off-by: Ben Dooks Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/mfd/sm501.c b/drivers/mfd/sm501.c index 79d7aea551..7aebad4c06 100644 --- a/drivers/mfd/sm501.c +++ b/drivers/mfd/sm501.c @@ -1108,7 +1108,9 @@ static void sm501_gpio_remove(struct sm501_devdata *sm) static inline int sm501_gpio_pin2nr(struct sm501_devdata *sm, unsigned int pin) { struct sm501_gpio *gpio = &sm->gpio; - return pin + (pin < 32) ? gpio->low.gpio.base : gpio->high.gpio.base; + int base = (pin < 32) ? gpio->low.gpio.base : gpio->high.gpio.base; + + return (pin % 32) + base; } static inline int sm501_gpio_isregistered(struct sm501_devdata *sm)