diff mbox

gpio/mxc: fix a bug with gpio_get_value calling

Message ID 1307813609-27758-1-git-send-email-shawn.guo@linaro.org
State Accepted
Commit 5523f86beab2b87d42cd58aca9bd5cee5466c6e3
Headers show

Commit Message

Shawn Guo June 11, 2011, 5:33 p.m. UTC
When calling gpio_get_value, the gpio number other than bit offset
should be passed as the argument.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
---
Grant, Sascha,

This is an important bug fix.  Currently, if any driver request 
any gpio not on port 1 for IRQ_TYPE_EDGE_BOTH, we run into kernel
oops.  So please apply the patch asap.  Thanks.

 drivers/gpio/gpio-mxc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Grant Likely June 12, 2011, 3:01 a.m. UTC | #1
On Sun, Jun 12, 2011 at 01:33:29AM +0800, Shawn Guo wrote:
> When calling gpio_get_value, the gpio number other than bit offset
> should be passed as the argument.
> 
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>

Applied, thanks.

g.
> ---
> Grant, Sascha,
> 
> This is an important bug fix.  Currently, if any driver request 
> any gpio not on port 1 for IRQ_TYPE_EDGE_BOTH, we run into kernel
> oops.  So please apply the patch asap.  Thanks.
> 
>  drivers/gpio/gpio-mxc.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
> index 950e53a..2f6a81b 100644
> --- a/drivers/gpio/gpio-mxc.c
> +++ b/drivers/gpio/gpio-mxc.c
> @@ -83,7 +83,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
>  		edge = GPIO_INT_FALL_EDGE;
>  		break;
>  	case IRQ_TYPE_EDGE_BOTH:
> -		val = gpio_get_value(gpio & 31);
> +		val = gpio_get_value(gpio);
>  		if (val) {
>  			edge = GPIO_INT_LOW_LEV;
>  			pr_debug("mxc: set GPIO %d to low trigger\n", gpio);
> -- 
> 1.7.4.1
>
diff mbox

Patch

diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index 950e53a..2f6a81b 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -83,7 +83,7 @@  static int gpio_set_irq_type(struct irq_data *d, u32 type)
 		edge = GPIO_INT_FALL_EDGE;
 		break;
 	case IRQ_TYPE_EDGE_BOTH:
-		val = gpio_get_value(gpio & 31);
+		val = gpio_get_value(gpio);
 		if (val) {
 			edge = GPIO_INT_LOW_LEV;
 			pr_debug("mxc: set GPIO %d to low trigger\n", gpio);