Index: linux-2.6.24.7/include/asm-arm/arch-ixp4xx/avila.h =================================================================== --- linux-2.6.24.7.orig/include/asm-arm/arch-ixp4xx/avila.h +++ linux-2.6.24.7/include/asm-arm/arch-ixp4xx/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 Index: linux-2.6.24.7/arch/arm/mach-ixp4xx/avila-setup.c =================================================================== --- linux-2.6.24.7.orig/arch/arm/mach-ixp4xx/avila-setup.c +++ linux-2.6.24.7/arch/arm/mach-ixp4xx/avila-setup.c @@ -26,6 +26,7 @@ # include #endif +#include #include #include @@ -172,6 +173,25 @@ static struct platform_device avila_npec .dev.platform_data = &avila_npec_data, }; +static struct gpio_led avila_leds[] = { + { + .name = "user", /* green led */ + .gpio = AVILA_GW23XX_LED_USER_GPIO, + .active_low = 1, + } +}; + +static struct gpio_led_platform_data avila_leds_data = { + .num_leds = 1, + .leds = avila_leds, +}; + +static struct platform_device avila_leds_device = { + .name = "leds-gpio", + .id = -1, + .dev.platform_data = &avila_leds_data, +}; + static struct platform_device *avila_devices[] __initdata = { &avila_i2c_gpio, &avila_flash, @@ -182,6 +202,8 @@ static void __init avila_gw23xx_setup(vo { platform_device_register(&avila_npeb_device); platform_device_register(&avila_npec_device); + + platform_device_register(&avila_leds_device); } #ifdef CONFIG_SENSORS_EEPROM @@ -189,6 +211,8 @@ static void __init avila_gw2342_setup(vo { platform_device_register(&avila_npeb_device); platform_device_register(&avila_npec_device); + + platform_device_register(&avila_leds_device); } static void __init avila_gw2345_setup(void) @@ -199,22 +223,30 @@ static void __init avila_gw2345_setup(vo avila_npec_data.phy = 5; /* port 5 of the KS8995 switch */ platform_device_register(&avila_npec_device); + + platform_device_register(&avila_leds_device); } static void __init avila_gw2347_setup(void) { platform_device_register(&avila_npeb_device); + + avila_leds[0].gpio = AVILA_GW23X7_LED_USER_GPIO; + platform_device_register(&avila_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_leds_device); } static void __init avila_gw2353_setup(void) { platform_device_register(&avila_npeb_device); + platform_device_register(&avila_leds_device); } static void __init avila_gw2355_setup(void) @@ -225,11 +257,16 @@ static void __init avila_gw2355_setup(vo avila_npec_data.phy = 16; platform_device_register(&avila_npec_device); + + platform_device_register(&avila_leds_device); } static void __init avila_gw2357_setup(void) { platform_device_register(&avila_npeb_device); + + avila_leds[0].gpio = AVILA_GW23X7_LED_USER_GPIO; + platform_device_register(&avila_leds_device); } static struct avila_board_info avila_boards[] __initdata = {