ixp4xx 2.6.26 support
[openwrt/svn-archive/archive.git] / target / linux / ixp4xx / patches-2.6.26 / 192-cambria_gpio_device.patch
diff --git a/target/linux/ixp4xx/patches-2.6.26/192-cambria_gpio_device.patch b/target/linux/ixp4xx/patches-2.6.26/192-cambria_gpio_device.patch
new file mode 100644 (file)
index 0000000..c79a03f
--- /dev/null
@@ -0,0 +1,47 @@
+--- a/arch/arm/mach-ixp4xx/cambria-setup.c
++++ b/arch/arm/mach-ixp4xx/cambria-setup.c
+@@ -214,6 +214,21 @@
+       .dev.platform_data = &cambria_gpio_leds_data,
+ };
++static struct resource cambria_gpio_resources[] = {
++      {
++              .name = "gpio",
++              .flags  = 0,
++      },
++};
++
++static struct platform_device cambria_gpio = {
++      .name     = "GPIODEV",
++      .id     = -1,
++      .num_resources    = ARRAY_SIZE(cambria_gpio_resources),
++      .resource   = cambria_gpio_resources,
++};
++
++
+ static struct latch_led cambria_latch_leds[] = {
+       {
+@@ -337,6 +352,11 @@
+       cambria_optional_uart_data[1].membase   = (void __iomem *)ioremap(IXP4XX_EXP_BUS_BASE(3), 0x0fff);
+       cambria_optional_uart_data[1].irq               = IRQ_IXP4XX_GPIO4;
++      cambria_gpio_resources[0].start = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) |\
++                                                                                                                                              (1 << 5) | (1 << 8) | (1 << 9) | (1 << 12);
++      cambria_gpio_resources[0].end = cambria_gpio_resources[0].start;
++
++      platform_device_register(&cambria_gpio);
+       platform_device_register(&cambria_optional_uart);
+       platform_device_register(&cambria_npec_device);
+       platform_device_register(&cambria_npea_device);
+@@ -361,6 +381,10 @@
+       cambria_optional_uart_data[1].membase   = (void __iomem *)ioremap(0x53F80000, 0x0fff);
+       cambria_optional_uart_data[1].irq               = IRQ_IXP4XX_GPIO4;
++      cambria_gpio_resources[0].start = (1 << 14);
++      cambria_gpio_resources[0].end = cambria_gpio_resources[0].start;
++
++      platform_device_register(&cambria_gpio);
+       platform_device_register(&cambria_optional_uart);
+       cambria_npec_data.phy = 2;