aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ixp4xx/patches-2.6.27/301-avila_led.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2008-09-29 01:08:17 +0000
committerFelix Fietkau <nbd@openwrt.org>2008-09-29 01:08:17 +0000
commitbc92b67c41bb9eb64dd342735cf04d0ca5098926 (patch)
treefb3cad267265be9ac8eb1532182422f278dc3d0a /target/linux/ixp4xx/patches-2.6.27/301-avila_led.patch
parent9b2097af21c4298fb67622266d5587e4e680fc5c (diff)
downloadupstream-bc92b67c41bb9eb64dd342735cf04d0ca5098926.tar.gz
upstream-bc92b67c41bb9eb64dd342735cf04d0ca5098926.tar.bz2
upstream-bc92b67c41bb9eb64dd342735cf04d0ca5098926.zip
port generic and ixp4xx kernel patches to 2.6.27 (compiles except for iptables, but otherwise completely untested)
SVN-Revision: 12790
Diffstat (limited to 'target/linux/ixp4xx/patches-2.6.27/301-avila_led.patch')
-rw-r--r--target/linux/ixp4xx/patches-2.6.27/301-avila_led.patch172
1 files changed, 172 insertions, 0 deletions
diff --git a/target/linux/ixp4xx/patches-2.6.27/301-avila_led.patch b/target/linux/ixp4xx/patches-2.6.27/301-avila_led.patch
new file mode 100644
index 0000000000..9bedec63ca
--- /dev/null
+++ b/target/linux/ixp4xx/patches-2.6.27/301-avila_led.patch
@@ -0,0 +1,172 @@
+--- a/arch/arm/mach-ixp4xx/avila-setup.c
++++ b/arch/arm/mach-ixp4xx/avila-setup.c
+@@ -26,6 +26,7 @@
+ # include <linux/eeprom.h>
+ #endif
+
++#include <linux/leds.h>
+ #include <linux/i2c-gpio.h>
+
+ #include <asm/types.h>
+@@ -172,6 +173,72 @@
+ .dev.platform_data = &avila_npec_data,
+ };
+
++static struct gpio_led avila_gpio_leds[] = {
++ {
++ .name = "user", /* green led */
++ .gpio = AVILA_GW23XX_LED_USER_GPIO,
++ .active_low = 1,
++ }
++};
++
++static struct gpio_led_platform_data avila_gpio_leds_data = {
++ .num_leds = 1,
++ .leds = avila_gpio_leds,
++};
++
++static struct platform_device avila_gpio_leds_device = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev.platform_data = &avila_gpio_leds_data,
++};
++
++static struct latch_led avila_latch_leds[] = {
++ {
++ .name = "led0", /* green led */
++ .bit = 0,
++ },
++ {
++ .name = "led1", /* green led */
++ .bit = 1,
++ },
++ {
++ .name = "led2", /* green led */
++ .bit = 2,
++ },
++ {
++ .name = "led3", /* green led */
++ .bit = 3,
++ },
++ {
++ .name = "led4", /* green led */
++ .bit = 4,
++ },
++ {
++ .name = "led5", /* green led */
++ .bit = 5,
++ },
++ {
++ .name = "led6", /* green led */
++ .bit = 6,
++ },
++ {
++ .name = "led7", /* green led */
++ .bit = 7,
++ }
++};
++
++static struct latch_led_platform_data avila_latch_leds_data = {
++ .num_leds = 8,
++ .leds = avila_latch_leds,
++ .mem = 0x51000000,
++};
++
++static struct platform_device avila_latch_leds_device = {
++ .name = "leds-latch",
++ .id = -1,
++ .dev.platform_data = &avila_latch_leds_data,
++};
++
+ static struct platform_device *avila_devices[] __initdata = {
+ &avila_i2c_gpio,
+ &avila_flash,
+@@ -182,6 +249,8 @@
+ {
+ platform_device_register(&avila_npeb_device);
+ platform_device_register(&avila_npec_device);
++
++ platform_device_register(&avila_gpio_leds_device);
+ }
+
+ #ifdef CONFIG_SENSORS_EEPROM
+@@ -189,6 +258,8 @@
+ {
+ platform_device_register(&avila_npeb_device);
+ platform_device_register(&avila_npec_device);
++
++ platform_device_register(&avila_gpio_leds_device);
+ }
+
+ static void __init avila_gw2345_setup(void)
+@@ -199,22 +270,30 @@
+
+ avila_npec_data.phy = 5; /* port 5 of the KS8995 switch */
+ platform_device_register(&avila_npec_device);
++
++ platform_device_register(&avila_gpio_leds_device);
+ }
+
+ static void __init avila_gw2347_setup(void)
+ {
+ platform_device_register(&avila_npeb_device);
++
++ avila_gpio_leds[0].gpio = AVILA_GW23X7_LED_USER_GPIO;
++ platform_device_register(&avila_gpio_leds_device);
+ }
+
+ static void __init avila_gw2348_setup(void)
+ {
+ platform_device_register(&avila_npeb_device);
+ platform_device_register(&avila_npec_device);
++
++ platform_device_register(&avila_gpio_leds_device);
+ }
+
+ static void __init avila_gw2353_setup(void)
+ {
+ platform_device_register(&avila_npeb_device);
++ platform_device_register(&avila_gpio_leds_device);
+ }
+
+ static void __init avila_gw2355_setup(void)
+@@ -225,11 +304,29 @@
+
+ avila_npec_data.phy = 16;
+ platform_device_register(&avila_npec_device);
++
++ platform_device_register(&avila_gpio_leds_device);
++
++ *IXP4XX_EXP_CS4 |= 0xbfff3c03;
++ avila_latch_leds[0].name = "RXD";
++ avila_latch_leds[1].name = "TXD";
++ avila_latch_leds[2].name = "POL";
++ avila_latch_leds[3].name = "LNK";
++ avila_latch_leds[4].name = "ERR";
++ avila_latch_leds_data.num_leds = 5;
++ avila_latch_leds_data.mem = 0x54000000;
++ platform_device_register(&avila_latch_leds_device);
+ }
+
+ static void __init avila_gw2357_setup(void)
+ {
+ platform_device_register(&avila_npeb_device);
++
++ avila_gpio_leds[0].gpio = AVILA_GW23X7_LED_USER_GPIO;
++ platform_device_register(&avila_gpio_leds_device);
++
++ *IXP4XX_EXP_CS1 |= 0xbfff3c03;
++ platform_device_register(&avila_latch_leds_device);
+ }
+
+ static struct avila_board_info avila_boards[] __initdata = {
+--- a/arch/arm/mach-ixp4xx/include/mach/avila.h
++++ b/arch/arm/mach-ixp4xx/include/mach/avila.h
+@@ -36,4 +36,6 @@
+ #define AVILA_PCI_INTC_PIN 9
+ #define AVILA_PCI_INTD_PIN 8
+
+-
++/* User LEDs */
++#define AVILA_GW23XX_LED_USER_GPIO 3
++#define AVILA_GW23X7_LED_USER_GPIO 4