2010-01-14 21:07:13

by Roel Kluin

[permalink] [raw]
Subject: [PATCH] Gemini: wrong registers used to set reg_level in gpio_set_irq_type()?

It appears the wrong GPIO registers were used

Signed-off-by: Roel Kluin <[email protected]>
---
I am not sure whether this is right so please review.

diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
index e726385..fe3bd5a 100644
--- a/arch/arm/mach-gemini/gpio.c
+++ b/arch/arm/mach-gemini/gpio.c
@@ -86,7 +86,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type)
unsigned int reg_both, reg_level, reg_type;

reg_type = __raw_readl(base + GPIO_INT_TYPE);
- reg_level = __raw_readl(base + GPIO_INT_BOTH_EDGE);
+ reg_level = __raw_readl(base + GPIO_INT_LEVEL);
reg_both = __raw_readl(base + GPIO_INT_BOTH_EDGE);

switch (type) {
@@ -117,7 +117,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type)
}

__raw_writel(reg_type, base + GPIO_INT_TYPE);
- __raw_writel(reg_level, base + GPIO_INT_BOTH_EDGE);
+ __raw_writel(reg_level, base + GPIO_INT_LEVEL);
__raw_writel(reg_both, base + GPIO_INT_BOTH_EDGE);

gpio_ack_irq(irq);


2010-01-17 19:38:00

by Paulius Zaleckas

[permalink] [raw]
Subject: Re: [PATCH] Gemini: wrong registers used to set reg_level in gpio_set_irq_type()?

On 01/14/2010 11:11 PM, Roel Kluin wrote:
> It appears the wrong GPIO registers were used
>
> Signed-off-by: Roel Kluin<[email protected]>
> ---
> I am not sure whether this is right so please review.

Yes, you are right. Thanks for spotting.
I put this patch in my queue.

> diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
> index e726385..fe3bd5a 100644
> --- a/arch/arm/mach-gemini/gpio.c
> +++ b/arch/arm/mach-gemini/gpio.c
> @@ -86,7 +86,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type)
> unsigned int reg_both, reg_level, reg_type;
>
> reg_type = __raw_readl(base + GPIO_INT_TYPE);
> - reg_level = __raw_readl(base + GPIO_INT_BOTH_EDGE);
> + reg_level = __raw_readl(base + GPIO_INT_LEVEL);
> reg_both = __raw_readl(base + GPIO_INT_BOTH_EDGE);
>
> switch (type) {
> @@ -117,7 +117,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type)
> }
>
> __raw_writel(reg_type, base + GPIO_INT_TYPE);
> - __raw_writel(reg_level, base + GPIO_INT_BOTH_EDGE);
> + __raw_writel(reg_level, base + GPIO_INT_LEVEL);
> __raw_writel(reg_both, base + GPIO_INT_BOTH_EDGE);
>
> gpio_ack_irq(irq);