#define BCM_6345_OHCI0_BASE (0xfffe2100)
#define BCM_6345_OHCI_PRIV_BASE (0xfffe2200)
#define BCM_6345_USBH_PRIV_BASE (0xdeadbeef)
+--- a/arch/mips/bcm63xx/gpio.c
++++ b/arch/mips/bcm63xx/gpio.c
+@@ -4,7 +4,7 @@
+ * for more details.
+ *
+ * Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr>
+- * Copyright (C) 2008 Florian Fainelli <florian@openwrt.org>
++ * Copyright (C) 2008-2011 Florian Fainelli <florian@openwrt.org>
+ */
+
+ #include <linux/kernel.h>
+@@ -33,7 +33,10 @@ static void bcm63xx_gpio_set(struct gpio
+ BUG();
+
+ if (gpio < 32) {
+- reg = GPIO_DATA_LO_REG;
++ if (!BCMCPU_IS_6345())
++ reg = GPIO_DATA_LO_REG;
++ else
++ reg = GPIO_DATA_HI_REG;
+ mask = 1 << gpio;
+ v = &gpio_out_low;
+ } else {
+@@ -60,7 +63,10 @@ static int bcm63xx_gpio_get(struct gpio_
+ BUG();
+
+ if (gpio < 32) {
+- reg = GPIO_DATA_LO_REG;
++ if (!BCMCPU_IS_6345())
++ reg = GPIO_DATA_LO_REG;
++ else
++ reg = GPIO_DATA_HI_REG;
+ mask = 1 << gpio;
+ } else {
+ reg = GPIO_DATA_HI_REG;
+@@ -125,7 +131,11 @@ static struct gpio_chip bcm63xx_gpio_chi
+
+ int __init bcm63xx_gpio_init(void)
+ {
+- gpio_out_low = bcm_gpio_readl(GPIO_DATA_LO_REG);
++ if (!BCMCPU_IS_6345())
++ gpio_out_low = bcm_gpio_readl(GPIO_DATA_LO_REG);
++ else
++ gpio_out_low = bcm_gpio_readl(GPIO_DATA_HI_REG);
++
+ gpio_out_high = bcm_gpio_readl(GPIO_DATA_HI_REG);
+ bcm63xx_gpio_chip.ngpio = bcm63xx_gpio_count();
+ pr_info("registering %d GPIOs\n", bcm63xx_gpio_chip.ngpio);