172 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/arch/arm/mach-ixp4xx/avila-setup.c
 | |
| +++ b/arch/arm/mach-ixp4xx/avila-setup.c
 | |
| @@ -24,6 +24,7 @@
 | |
|  #include <linux/i2c.h>
 | |
|  #include <linux/i2c/at24.h>
 | |
|  
 | |
| +#include <linux/leds.h>
 | |
|  #include <linux/i2c-gpio.h>
 | |
|  
 | |
|  #include <asm/types.h>
 | |
| @@ -170,6 +171,72 @@ static struct platform_device avila_npec
 | |
|  	.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,
 | |
| @@ -180,12 +247,16 @@ static void __init avila_gw23xx_setup(vo
 | |
|  {
 | |
|  	platform_device_register(&avila_npeb_device);
 | |
|  	platform_device_register(&avila_npec_device);
 | |
| +
 | |
| +	platform_device_register(&avila_gpio_leds_device);
 | |
|  }
 | |
|  
 | |
|  static void __init avila_gw2342_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_gw2345_setup(void)
 | |
| @@ -196,22 +267,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_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)
 | |
| @@ -222,11 +301,29 @@ static void __init avila_gw2355_setup(vo
 | |
|  
 | |
|  	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
 |