Skip to contentSkip to conversation

Gemini: wrong registers used to set reg_level in gpio_set_irq_type()?

PATCH In review Roel Kluin 2 participants 2 messages Jan 14, 2010 – Jan 17, 2010

Subsystems (3)
lore
Share & tools
lore

Roel Kluin

author
#0 lore raw

PATCH 1/1 Gemini: wrong registers used to set reg_level in gpio_set_irq_type()?

It appears the wrong GPIO registers were used

---
I am not sure whether this is right so please review.

arch/arm/mach-gemini/gpio.c +2 -2
index e726385..fe3bd5a 100644
@@ -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);
#1 lore raw
Quoted 5 lines · Roel Kluin

It appears the wrong GPIO registers were used

---
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.

Quoted 22 lines
arch/arm/mach-gemini/gpio.c +2 -2
index e726385..fe3bd5a 100644
@@ -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);