--- /dev/null
+commit 3e9957b4866f3767f19bf0e543b322ad7906c564
+Author: Florian Fainelli <florian@openwrt.org>
+Date: Fri May 13 17:41:21 2011 +0200
+
+ MIPS: AR7: Fix GPIO register size for Titan variant.
+
+ The 'size' variable contains the correct register size for both AR7
+ and Titan, but we never used it to ioremap the correct register size.
+ This problem only shows up on Titan.
+
+ [ralf@linux-mips.org: Fixed the fix. The original patch as in patchwork
+ recognizes the problem correctly then fails to fix it ...]
+
+ Reported-by: Alexander Clouter <alex@digriz.org.uk>
+ Signed-off-by: Florian Fainelli <florian@openwrt.org>
+ Patchwork: https://patchwork.linux-mips.org/patch/2380/
+ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+
+diff --git a/arch/mips/ar7/gpio.c b/arch/mips/ar7/gpio.c
+index 425dfa5..bb571bc 100644
+--- a/arch/mips/ar7/gpio.c
++++ b/arch/mips/ar7/gpio.c
+@@ -325,9 +325,7 @@ int __init ar7_gpio_init(void)
+ size = 0x1f;
+ }
+
+- gpch->regs = ioremap_nocache(AR7_REGS_GPIO,
+- AR7_REGS_GPIO + 0x10);
+-
++ gpch->regs = ioremap_nocache(AR7_REGS_GPIO, size);
+ if (!gpch->regs) {
+ printk(KERN_ERR "%s: failed to ioremap regs\n",
+ gpch->chip.label);