brcm63xx: fix gpio register usage
authorJonas Gorski <jogo@openwrt.org>
Sat, 28 Feb 2015 19:59:26 +0000 (19:59 +0000)
committerJonas Gorski <jogo@openwrt.org>
Sat, 28 Feb 2015 19:59:26 +0000 (19:59 +0000)
The driver expected data then dir, but both dts and legacy code passed
dir then data. Fix this by making the driver expect the registers in
ascending order, i.e. dir then data.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 44574

target/linux/brcm63xx/patches-3.14/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch
target/linux/brcm63xx/patches-3.14/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch
target/linux/brcm63xx/patches-3.18/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch
target/linux/brcm63xx/patches-3.18/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch

index 7d1cd28bb30d0f597776faa7b8fa64b2147523df..2a07e735ca5772b6f7eea04561b8c3d9806dafcd 100644 (file)
@@ -87,8 +87,8 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      struct bgpio_chip *bgc;
 +      struct bgpio_pdata *pdata = dev_get_platdata(dev);
 +
-+      dat_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+      dirout_r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
++      dirout_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      dat_r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
 +      if (!dat_r || !dirout_r)
 +              return -EINVAL;
 +
index 24dd3a9d1036f8d8df8fb60e832c328fcd32f5e6..d561e43f8c10f6cdd54db9f72f6af23cd1743719 100644 (file)
@@ -100,7 +100,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 -      u32 mask;
 +      res[0].flags = IORESOURCE_MEM;
 +      res[0].start = bcm63xx_regset_address(RSET_GPIO);
-+      res[0].start += data;
++      res[0].start += dir;
  
 -      if (gpio >= chip->ngpio)
 -              BUG();
@@ -115,7 +115,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 -      }
 +      res[1].flags = IORESOURCE_MEM;
 +      res[1].start = bcm63xx_regset_address(RSET_GPIO);
-+      res[1].start += dir;
++      res[1].start += data;
  
 -      return !!(bcm_gpio_readl(reg) & mask);
 -}
@@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      else
 +              data_low_reg = GPIO_DATA_LO_REG;
  
-+      bcm63xx_gpio_init_one(0, data_low_reg, GPIO_CTL_LO_REG, min(ngpio, 32));
++      bcm63xx_gpio_init_one(0, GPIO_CTL_LO_REG, data_low_reg, min(ngpio, 32));
  
 -static struct gpio_chip bcm63xx_gpio_chip = {
 -      .label                  = "bcm63xx-gpio",
@@ -191,7 +191,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 -int __init bcm63xx_gpio_init(void)
 -{
 -      bcm63xx_gpio_out_low_reg_init();
-+      bcm63xx_gpio_init_one(1, GPIO_DATA_HI_REG, GPIO_CTL_HI_REG, ngpio - 32);
++      bcm63xx_gpio_init_one(1, GPIO_CTL_HI_REG, GPIO_DATA_HI_REG, ngpio - 32);
  
 -      gpio_out_low = bcm_gpio_readl(gpio_out_low_reg);
 -      if (!BCMCPU_IS_6345())
index 82d7abec60e71149a79bc5701393f24c0b5654b2..53fcb8a3f5cc8c7ed347f0a24cce18eb53c9f2c4 100644 (file)
@@ -87,8 +87,8 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      struct bgpio_chip *bgc;
 +      struct bgpio_pdata *pdata = dev_get_platdata(dev);
 +
-+      dat_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+      dirout_r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
++      dirout_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      dat_r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
 +      if (!dat_r || !dirout_r)
 +              return -EINVAL;
 +
index 24dd3a9d1036f8d8df8fb60e832c328fcd32f5e6..d561e43f8c10f6cdd54db9f72f6af23cd1743719 100644 (file)
@@ -100,7 +100,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 -      u32 mask;
 +      res[0].flags = IORESOURCE_MEM;
 +      res[0].start = bcm63xx_regset_address(RSET_GPIO);
-+      res[0].start += data;
++      res[0].start += dir;
  
 -      if (gpio >= chip->ngpio)
 -              BUG();
@@ -115,7 +115,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 -      }
 +      res[1].flags = IORESOURCE_MEM;
 +      res[1].start = bcm63xx_regset_address(RSET_GPIO);
-+      res[1].start += dir;
++      res[1].start += data;
  
 -      return !!(bcm_gpio_readl(reg) & mask);
 -}
@@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      else
 +              data_low_reg = GPIO_DATA_LO_REG;
  
-+      bcm63xx_gpio_init_one(0, data_low_reg, GPIO_CTL_LO_REG, min(ngpio, 32));
++      bcm63xx_gpio_init_one(0, GPIO_CTL_LO_REG, data_low_reg, min(ngpio, 32));
  
 -static struct gpio_chip bcm63xx_gpio_chip = {
 -      .label                  = "bcm63xx-gpio",
@@ -191,7 +191,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 -int __init bcm63xx_gpio_init(void)
 -{
 -      bcm63xx_gpio_out_low_reg_init();
-+      bcm63xx_gpio_init_one(1, GPIO_DATA_HI_REG, GPIO_CTL_HI_REG, ngpio - 32);
++      bcm63xx_gpio_init_one(1, GPIO_CTL_HI_REG, GPIO_DATA_HI_REG, ngpio - 32);
  
 -      gpio_out_low = bcm_gpio_readl(gpio_out_low_reg);
 -      if (!BCMCPU_IS_6345())