aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Fainelli <florian@openwrt.org>2009-06-04 10:01:03 +0000
committerFlorian Fainelli <florian@openwrt.org>2009-06-04 10:01:03 +0000
commitb904d677824bcf73a1b2f3ebc2d49e8ad3c2ad07 (patch)
tree4428f716e457fc1b4db15975aa237b41b81e3a87
parentb86d85140fac67279221bfdac1d85fdbb0254f97 (diff)
downloadmaster-187ad058-b904d677824bcf73a1b2f3ebc2d49e8ad3c2ad07.tar.gz
master-187ad058-b904d677824bcf73a1b2f3ebc2d49e8ad3c2ad07.tar.bz2
master-187ad058-b904d677824bcf73a1b2f3ebc2d49e8ad3c2ad07.zip
[brcm63xx] use the correct number of GPIOs for bcm6358
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16329 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--target/linux/brcm63xx/files/arch/mips/bcm63xx/gpio.c4
-rw-r--r--target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h12
-rw-r--r--target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/gpio.h2
3 files changed, 12 insertions, 6 deletions
diff --git a/target/linux/brcm63xx/files/arch/mips/bcm63xx/gpio.c b/target/linux/brcm63xx/files/arch/mips/bcm63xx/gpio.c
index 997fcaa439..97e3730c34 100644
--- a/target/linux/brcm63xx/files/arch/mips/bcm63xx/gpio.c
+++ b/target/linux/brcm63xx/files/arch/mips/bcm63xx/gpio.c
@@ -117,11 +117,11 @@ static struct gpio_chip bcm63xx_gpio_chip = {
.get = bcm63xx_gpio_get,
.set = bcm63xx_gpio_set,
.base = 0,
- .ngpio = BCM63XX_GPIO_COUNT,
};
int __init bcm63xx_gpio_init(void)
{
- printk(KERN_INFO "registering %d GPIOs\n", BCM63XX_GPIO_COUNT);
+ bcm63xx_gpio_chip.ngpio = bcm63xx_gpio_count();
+ printk(KERN_INFO "registering %d GPIOs\n", bcm63xx_gpio_chip.ngpio);
return gpiochip_add(&bcm63xx_gpio_chip);
}
diff --git a/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h
index 7f5d8e87d0..76a0b7216a 100644
--- a/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h
+++ b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h
@@ -5,8 +5,16 @@
int __init bcm63xx_gpio_init(void);
-/* all helpers will BUG() if gpio count is >= 37. */
-#define BCM63XX_GPIO_COUNT 37
+static inline unsigned long bcm63xx_gpio_count(void)
+{
+ switch (bcm63xx_get_cpu_id()) {
+ case BCM6358_CPU_ID:
+ return 40;
+ case BCM6348_CPU_ID:
+ default:
+ return 37;
+ }
+}
#define GPIO_DIR_OUT 0x0
#define GPIO_DIR_IN 0x1
diff --git a/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/gpio.h b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/gpio.h
index 033c997afc..7cda8c0a39 100644
--- a/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/gpio.h
+++ b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/gpio.h
@@ -3,8 +3,6 @@
#include <bcm63xx_gpio.h>
-#define NR_BUILTIN_GPIO BCM63XX_GPIO_COUNT
-
#define gpio_to_irq(gpio) NULL
#define gpio_get_value __gpio_get_value