[PATCH] s3c2440: mini2440: Use leds-gpio driver for board leds handling.
From: Belisko Marek <hidden>
Date: 2011-03-29 09:59:17
Also in:
lkml
This should be in-reply-to https://lkml.org/lkml/2011/3/29/79 comments On Tue, Mar 29, 2011 at 11:53 AM, Marek Belisko [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Intention of this patch is convert existing usage of leds-s3c24xx driver to use generic gpio-leds driver. Leds are separated to 2 devices. First device handle 4 available leds. Second device is used to drive LCD backlight. Backlight can be controlled via parameter b so we need separate device which is registered or not depending on parameter. Signed-off-by: Marek Belisko <redacted> --- ?arch/arm/mach-s3c2440/mach-mini2440.c | ?121 +++++++++++++++------------------ ?1 files changed, 54 insertions(+), 67 deletions(-)diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c index 163d318..28ef6eb 100644 --- a/arch/arm/mach-s3c2440/mach-mini2440.c +++ b/arch/arm/mach-s3c2440/mach-mini2440.c@@ -419,81 +419,71 @@ static struct platform_device mini2440_button_device = {?}; ?/* LEDS */ - -static struct s3c24xx_led_platdata mini2440_led1_pdata = { - ? ? ? .name ? ? ? ? ? = "led1", - ? ? ? .gpio ? ? ? ? ? = S3C2410_GPB(5), - ? ? ? .flags ? ? ? ? ?= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, - ? ? ? .def_trigger ? ?= "heartbeat", -}; - -static struct s3c24xx_led_platdata mini2440_led2_pdata = { - ? ? ? .name ? ? ? ? ? = "led2", - ? ? ? .gpio ? ? ? ? ? = S3C2410_GPB(6), - ? ? ? .flags ? ? ? ? ?= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, - ? ? ? .def_trigger ? ?= "nand-disk", -}; - -static struct s3c24xx_led_platdata mini2440_led3_pdata = { - ? ? ? .name ? ? ? ? ? = "led3", - ? ? ? .gpio ? ? ? ? ? = S3C2410_GPB(7), - ? ? ? .flags ? ? ? ? ?= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, - ? ? ? .def_trigger ? ?= "mmc0", -}; - -static struct s3c24xx_led_platdata mini2440_led4_pdata = { - ? ? ? .name ? ? ? ? ? = "led4", - ? ? ? .gpio ? ? ? ? ? = S3C2410_GPB(8), - ? ? ? .flags ? ? ? ? ?= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, - ? ? ? .def_trigger ? ?= "", -}; - -static struct s3c24xx_led_platdata mini2440_led_backlight_pdata = { - ? ? ? .name ? ? ? ? ? = "backlight", - ? ? ? .gpio ? ? ? ? ? = S3C2410_GPG(4), - ? ? ? .def_trigger ? ?= "backlight", +static struct gpio_led gpio_leds[] = { + ? ? ? { + ? ? ? ? ? ? ? .name ? ? ? ? ? ? ? ? ? = "led1", + ? ? ? ? ? ? ? .gpio ? ? ? ? ? ? ? ? ? = S3C2410_GPB(5), + ? ? ? ? ? ? ? .active_low ? ? ? ? ? ? = 1, + ? ? ? ? ? ? ? .default_trigger ? ? ? ?= "heartbeat", + ? ? ? }, + ? ? ? { + ? ? ? ? ? ? ? .name ? ? ? ? ? ? ? ? ? = "led2", + ? ? ? ? ? ? ? .gpio ? ? ? ? ? ? ? ? ? = S3C2410_GPB(6), + ? ? ? ? ? ? ? .active_low ? ? ? ? ? ? = 1, + ? ? ? ? ? ? ? .default_trigger ? ? ? ?= "nand-disk", + ? ? ? ? ? ? ? .default_state ? ? ? ? ?= LEDS_GPIO_DEFSTATE_OFF, + ? ? ? }, + ? ? ? { + ? ? ? ? ? ? ? .name ? ? ? ? ? ? ? ? ? = "led3", + ? ? ? ? ? ? ? .gpio ? ? ? ? ? ? ? ? ? = S3C2410_GPB(7), + ? ? ? ? ? ? ? .active_low ? ? ? ? ? ? = 1, + ? ? ? ? ? ? ? .default_trigger ? ? ? ?= "mmc0", + ? ? ? ? ? ? ? .default_state ? ? ? ? ?= LEDS_GPIO_DEFSTATE_OFF, + ? ? ? }, + ? ? ? { + ? ? ? ? ? ? ? .name ? ? ? ? ? ? ? ? ? = "led4", + ? ? ? ? ? ? ? .gpio ? ? ? ? ? ? ? ? ? = S3C2410_GPB(8), + ? ? ? ? ? ? ? .active_low ? ? ? ? ? ? = 1, + ? ? ? ? ? ? ? .default_trigger ? ? ? ?= "none", + ? ? ? ? ? ? ? .default_state ? ? ? ? ?= LEDS_GPIO_DEFSTATE_OFF, + ? ? ? } ?}; -static struct platform_device mini2440_led1 = { - ? ? ? .name ? ? ? ? ? = "s3c24xx_led", - ? ? ? .id ? ? ? ? ? ? = 1, - ? ? ? .dev ? ? ? ? ? ?= { - ? ? ? ? ? ? ? .platform_data ?= &mini2440_led1_pdata, - ? ? ? }, +static struct gpio_led backlight_led[] = { + ? ? ? { + ? ? ? ? ? ? ? .name ? ? ? ? ? ? ? ? ? = "backlight", + ? ? ? ? ? ? ? .gpio ? ? ? ? ? ? ? ? ? = S3C2410_GPG(4), + ? ? ? ? ? ? ? .active_low ? ? ? ? ? ? = 0, + ? ? ? ? ? ? ? .default_trigger ? ? ? ?= "backlight", + ? ? ? ? ? ? ? .default_state ? ? ? ? ?= LEDS_GPIO_DEFSTATE_ON, + ? ? ? } ?}; -static struct platform_device mini2440_led2 = { - ? ? ? .name ? ? ? ? ? = "s3c24xx_led", - ? ? ? .id ? ? ? ? ? ? = 2, - ? ? ? .dev ? ? ? ? ? ?= { - ? ? ? ? ? ? ? .platform_data ?= &mini2440_led2_pdata, - ? ? ? }, +static struct gpio_led_platform_data gpio_led_info = { + ? ? ? .leds ? ? ? ? ? = gpio_leds, + ? ? ? .num_leds ? ? ? = ARRAY_SIZE(gpio_leds), ?}; -static struct platform_device mini2440_led3 = { - ? ? ? .name ? ? ? ? ? = "s3c24xx_led", - ? ? ? .id ? ? ? ? ? ? = 3, - ? ? ? .dev ? ? ? ? ? ?= { - ? ? ? ? ? ? ? .platform_data ?= &mini2440_led3_pdata, - ? ? ? }, +static struct gpio_led_platform_data backlight_info = { + ? ? ? .leds ? ? ? ? ? = backlight_led, + ? ? ? .num_leds ? ? ? = ARRAY_SIZE(backlight_led), ?}; -static struct platform_device mini2440_led4 = { - ? ? ? .name ? ? ? ? ? = "s3c24xx_led", - ? ? ? .id ? ? ? ? ? ? = 4, - ? ? ? .dev ? ? ? ? ? ?= { - ? ? ? ? ? ? ? .platform_data ?= &mini2440_led4_pdata, - ? ? ? }, +static struct platform_device mini2440_leds = { + ? ? ? .name ? = "leds-gpio", + ? ? ? .id ? ? = 0, + ? ? ? .dev ? ?= { + ? ? ? ? ? ? ? .platform_data ?= &gpio_led_info, + ? ? ? } ?}; ?static struct platform_device mini2440_led_backlight = { - ? ? ? .name ? ? ? ? ? = "s3c24xx_led", - ? ? ? .id ? ? ? ? ? ? = 5, - ? ? ? .dev ? ? ? ? ? ?= { - ? ? ? ? ? ? ? .platform_data ?= &mini2440_led_backlight_pdata, - ? ? ? }, + ? ? ? .name ? = "leds-gpio", + ? ? ? .id ? ? = 1, + ? ? ? .dev ? ?= { + ? ? ? ? ? ? ? .platform_data ?= &backlight_info, + ? ? ? } ?}; - ?/* AUDIO */ ?static struct s3c24xx_uda134x_platform_data mini2440_audio_pins = {@@ -543,10 +533,7 @@ static struct platform_device *mini2440_devices[] __initdata = {? ? ? ?&s3c_device_rtc, ? ? ? ?&s3c_device_usbgadget, ? ? ? ?&mini2440_device_eth, - ? ? ? &mini2440_led1, - ? ? ? &mini2440_led2, - ? ? ? &mini2440_led3, - ? ? ? &mini2440_led4, + ? ? ? &mini2440_leds, ? ? ? ?&mini2440_button_device, ? ? ? ?&s3c_device_nand, ? ? ? ?&s3c_device_sdi, -- 1.7.1
regards, marek -- as simple and primitive as possible ------------------------------------------------- Marek Belisko - OPEN-NANDRA Freelance Developer Ruska Nova Ves 219 | Presov, 08005 Slovak Republic Tel: +421 915 052 184 skype: marekwhite icq: 290551086 web: http://open-nandra.com