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 7d1cd28..2a07e73 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 24dd3a9..d561e43 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 82d7abe..53fcb8a 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 24dd3a9..d561e43 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())