From c2a89871c29da6399c76796dc7d28eda8298f0bc Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Sat, 28 Feb 2015 19:59:26 +0000 Subject: [PATCH] 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 SVN-Revision: 44574 --- .../374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch | 4 ++-- .../375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch | 8 ++++---- .../374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch | 4 ++-- .../375-MIPS-BCM63XX-switch-to-new-gpio-driver.patch | 8 ++++---- 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 7d1cd28bb3..2a07e735ca 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 + 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 24dd3a9d10..d561e43f8c 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 - 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 - } + 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 + 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 -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 82d7abec60..53fcb8a3f5 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 + 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 24dd3a9d10..d561e43f8c 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 - 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 - } + 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 + 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 -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()) -- 2.30.2