ixp4xx: fix gpio_line_set() logic, fixes #18986
authorJohn Crispin <john@openwrt.org>
Fri, 13 Feb 2015 10:54:01 +0000 (10:54 +0000)
committerJohn Crispin <john@openwrt.org>
Fri, 13 Feb 2015 10:54:01 +0000 (10:54 +0000)
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 44439

target/linux/ixp4xx/patches-3.18/030-gpio_line_config.patch

index 0477b38..c71ffd6 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/arm/mach-ixp4xx/common.c
 +++ b/arch/arm/mach-ixp4xx/common.c
-@@ -84,22 +84,7 @@ void __init ixp4xx_map_io(void)
+@@ -93,22 +93,7 @@
  /*
   * GPIO-functions
   */
@@ -24,7 +24,7 @@
  {
        if (direction == IXP4XX_GPIO_IN)
                *IXP4XX_GPIO_GPOER |= (1 << line);
-@@ -107,12 +92,12 @@ static void gpio_line_config(u8 line, u3
+@@ -116,17 +101,17 @@
                *IXP4XX_GPIO_GPOER &= ~(1 << line);
  }
  
 -static void gpio_line_set(u8 line, int value)
 +void gpio_line_set(u8 line, int value)
  {
-       if (value == IXP4XX_GPIO_HIGH)
-           *IXP4XX_GPIO_GPOUTR |= (1 << line);
+-      if (value == IXP4XX_GPIO_HIGH)
+-          *IXP4XX_GPIO_GPOUTR |= (1 << line);
+-      else if (value == IXP4XX_GPIO_LOW)
++      if (value == IXP4XX_GPIO_LOW)
+           *IXP4XX_GPIO_GPOUTR &= ~(1 << line);
++      else
++          *IXP4XX_GPIO_GPOUTR |= (1 << line);
+ }
+ /*************************************************************************
 --- a/arch/arm/mach-ixp4xx/include/mach/platform.h
 +++ b/arch/arm/mach-ixp4xx/include/mach/platform.h
-@@ -131,5 +131,21 @@ struct pci_sys_data;
+@@ -131,5 +131,21 @@
  extern int ixp4xx_setup(int nr, struct pci_sys_data *sys);
  extern struct pci_ops ixp4xx_ops;