add Avila/Cambria latch LED support, thanks Chris
[openwrt.git] / target / linux / ixp4xx / patches-2.6.24 / 301-avila_led.patch
index 181d6ba..81282fa 100644 (file)
-Index: linux-2.6.24.2/include/asm-arm/arch-ixp4xx/avila.h
+Index: linux-2.6.24.7/include/asm-arm/arch-ixp4xx/avila.h
 ===================================================================
---- linux-2.6.24.2.orig/include/asm-arm/arch-ixp4xx/avila.h
-+++ linux-2.6.24.2/include/asm-arm/arch-ixp4xx/avila.h
-@@ -36,4 +36,5 @@
+--- 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 LED */
-+#define AVILA_LED_USER_GPIO   3
-Index: linux-2.6.24.2/arch/arm/mach-ixp4xx/avila-setup.c
++/* 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.2.orig/arch/arm/mach-ixp4xx/avila-setup.c
-+++ linux-2.6.24.2/arch/arm/mach-ixp4xx/avila-setup.c
-@@ -174,10 +174,31 @@ static struct platform_device avila_eth[
-       }
+--- 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 <linux/eeprom.h>
+ #endif
++#include <linux/leds.h>
+ #include <linux/i2c-gpio.h>
+ #include <asm/types.h>
+@@ -172,6 +173,25 @@ static struct platform_device avila_npec
+       .dev.platform_data      = &avila_npec_data,
  };
  
-+#ifdef CONFIG_LEDS_IXP4XX
-+static struct resource avila_led_resources[] = {
++static struct gpio_led avila_leds[] = {
 +      {
-+              .name           = "user",
-+              .start          = AVILA_LED_USER_GPIO,
-+              .end            = AVILA_LED_USER_GPIO,
-+              .flags          = IXP4XX_GPIO_LOW,
-+      },
++              .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 = {
-+      .name                   = "IXP4XX-GPIO-LED",
++static struct platform_device avila_leds_device = {
++      .name                   = "leds-gpio",
 +      .id                     = -1,
-+      .num_resources          = ARRAY_SIZE(avila_led_resources),
-+      .resource               = avila_led_resources,
++      .dev.platform_data      = &avila_leds_data,
 +};
-+#endif
 +
  static struct platform_device *avila_devices[] __initdata = {
        &avila_i2c_gpio,
        &avila_flash,
--      &avila_uart
-+      &avila_uart,
-+#ifdef CONFIG_LEDS_IXP4XX
-+      &avila_leds,
-+#endif
- };
+@@ -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 platform_device *avila_eth_devices[] = {
+ static struct avila_board_info avila_boards[] __initdata = {
This page took 0.036982 seconds and 4 git commands to generate.