* Grazvydas Ignotas <notasas@xxxxxxxxx> [081127 12:04]: > Pandora has some LEDs and backlights connected to OMAP > GPIOs and TWL4030/TPS65950 LED/PWM signals. This patch > registers them all with leds-gpio driver. TWL4030/TPS65950 > controlled ones will be switched to PWM driver when it's ready. Pushing to l-o tree and adding to omap3-upstream queue for next merge window. Not adding the defconfig changes to upstream queue right now as the patch does not apply. Tony > Signed-off-by: Grazvydas Ignotas <notasas@xxxxxxxxx> > --- > arch/arm/mach-omap2/board-omap3pandora.c | 60 ++++++++++++++++++++++++++++++ > 1 files changed, 60 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c > index 69517a5..2dfa988 100644 > --- a/arch/arm/mach-omap2/board-omap3pandora.c > +++ b/arch/arm/mach-omap2/board-omap3pandora.c > @@ -28,6 +28,7 @@ > #include <linux/spi/spi.h> > #include <linux/spi/ads7846.h> > #include <linux/i2c/twl4030.h> > +#include <linux/leds.h> > > #include <linux/mtd/mtd.h> > #include <linux/mtd/nand.h> > @@ -166,6 +167,53 @@ static struct omap_uart_config omap3pandora_uart_config __initdata = { > .enabled_uarts = (1 << 2), /* UART3 */ > }; > > +static struct gpio_led omap3pandora_gpio_leds[] = { > + { > + .name = "pandora::keypad_bl", > + .gpio = -EINVAL, /* gets replaced */ > + .active_low = true, > + }, { > + .name = "pandora::power", > + .default_trigger = "default-on", > + .gpio = -EINVAL, > + .active_low = true, > + }, { > + .name = "pandora::lcd_bl", > + .default_trigger = "backlight", > + .gpio = -EINVAL, > + }, { > + .name = "pandora::charger", > + .gpio = -EINVAL, > + }, { > + .name = "pandora::sd1", > + .default_trigger = "mmc0", > + .gpio = 128, > + }, { > + .name = "pandora::sd2", > + .default_trigger = "mmc1", > + .gpio = 129, > + }, { > + .name = "pandora::bluetooth", > + .gpio = 158, > + }, { > + .name = "pandora::wifi", > + .gpio = 159, > + }, > +}; > + > +static struct gpio_led_platform_data omap3pandora_gpio_led_data = { > + .leds = omap3pandora_gpio_leds, > + .num_leds = ARRAY_SIZE(omap3pandora_gpio_leds), > +}; > + > +static struct platform_device omap3pandora_leds_gpio = { > + .name = "leds-gpio", > + .id = -1, > + .dev = { > + .platform_data = &omap3pandora_gpio_led_data, > + }, > +}; > + > static int omap3pandora_twl_gpio_setup(struct device *dev, > unsigned gpio, unsigned ngpio) > { > @@ -174,6 +222,16 @@ static int omap3pandora_twl_gpio_setup(struct device *dev, > omap3pandora_mmc[1].gpio_cd = gpio + 1; > hsmmc_init(omap3pandora_mmc); > > + /* TWL4030_GPIO_MAX + 0 == ledA, KEYPAD_BACKLIGHT (out, active low) */ > + omap3pandora_gpio_leds[0].gpio = gpio + TWL4030_GPIO_MAX + 0; > + > + /* TWL4030_GPIO_MAX + 1 == ledB, POWER_LED (out, active low) */ > + omap3pandora_gpio_leds[1].gpio = gpio + TWL4030_GPIO_MAX + 1; > + > + /* gpio + {6,7} is PWM{0,1}, LCD_BACKLIGHT and CHARGER_LED */ > + omap3pandora_gpio_leds[2].gpio = gpio + 6; > + omap3pandora_gpio_leds[3].gpio = gpio + 7; > + > return 0; > } > > @@ -181,6 +239,7 @@ static struct twl4030_gpio_platform_data omap3pandora_gpio_data = { > .gpio_base = OMAP_MAX_GPIO_LINES, > .irq_base = TWL4030_GPIO_IRQ_BASE, > .irq_end = TWL4030_GPIO_IRQ_END, > + .use_leds = true, > .setup = omap3pandora_twl_gpio_setup, > }; > > @@ -285,6 +344,7 @@ static struct omap_board_config_kernel omap3pandora_config[] __initdata = { > > static struct platform_device *omap3pandora_devices[] __initdata = { > &omap3pandora_lcd_device, > + &omap3pandora_leds_gpio, > }; > > static void __init omap3pandora_init(void) > -- > 1.5.4.3 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html