diff options
| author | Jonas Gorski <jogo@openwrt.org> | 2015-02-28 19:59:26 +0000 |
|---|---|---|
| committer | Jonas Gorski <jogo@openwrt.org> | 2015-02-28 19:59:26 +0000 |
| commit | c2a89871c29da6399c76796dc7d28eda8298f0bc (patch) | |
| tree | 69d221d67ac967936efc91a7f8eefc6e976d76e6 | |
| parent | 15fb17791a6fe75fb962800b51af3b78e653d9ea (diff) | |
| download | upstream-c2a89871c29da6399c76796dc7d28eda8298f0bc.tar.gz upstream-c2a89871c29da6399c76796dc7d28eda8298f0bc.tar.bz2 upstream-c2a89871c29da6399c76796dc7d28eda8298f0bc.zip | |
brcm63xx: fix gpio register usage
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
4 files changed, 12 insertions, 12 deletions
diff --git a/target/linux/brcm63xx/patches-3.14/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch b/target/linux/brcm63xx/patches-3.14/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch index 7d1cd28bb30..2a07e735ca5 100644 --- a/target/linux/brcm63xx/patches-3.14/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch +++ b/target/linux/brcm63xx/patches-3.14/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch @@ -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; + diff --git a/target/linux/brcm63xx/patches-3.14/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch b/target/linux/brcm63xx/patches-3.14/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch index 24dd3a9d103..d561e43f8c1 100644 --- a/target/linux/brcm63xx/patches-3.14/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch +++ b/target/linux/brcm63xx/patches-3.14/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch @@ -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()) diff --git a/target/linux/brcm63xx/patches-3.18/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch b/target/linux/brcm63xx/patches-3.18/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch index 82d7abec60e..53fcb8a3f5c 100644 --- a/target/linux/brcm63xx/patches-3.18/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch +++ b/target/linux/brcm63xx/patches-3.18/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch @@ -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; + diff --git a/target/linux/brcm63xx/patches-3.18/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch b/target/linux/brcm63xx/patches-3.18/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch index 24dd3a9d103..d561e43f8c1 100644 --- a/target/linux/brcm63xx/patches-3.18/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch +++ b/target/linux/brcm63xx/patches-3.18/375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch @@ -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()) |
