arm: ep93xx: use gpio_led_register_device
PATCH v2 1/1 arm: ep93xx: use gpio_led_register_device
Use gpio_led_register_device to register the two leds connected to the ep93xx.
Since this is a common feature for all ep93xx based boards, create a new Kconfig option, ARCH_EP93XX_TYPICAL, to select the LEDS_GPIO_REGISTER feature.
The struct gpio_led and struct gpio_led_platform_data variables have been changed to const struct because of:
commit 9517f925f2eb9ffca78b3f0f9389fc675bcb572c
leds: make *struct gpio_led_platform_data.leds const
They have also been marked as __initconst because the helper function gpio_led_register_device makes a deep copy of the platform data to allow it to live in init memory:
commit 4440673a95e63ad888a41db596edaa0c55d3a332
leds: provide helper to register "leds-gpio" devices
---
arch/arm/mach-ep93xx/Kconfig +5 -0
@@ -2,6 +2,11 @@ if ARCH_EP93XX menu "Cirrus EP93xx Implementation Options" +config ARCH_EP93XX_TYPICAL + bool + default y + select LEDS_GPIO_REGISTER + config CRUNCH bool "Support for MaverickCrunch" help
arch/arm/mach-ep93xx/core.c +4 -12
@@ -513,7 +513,7 @@ void __init ep93xx_register_spi(struct ep93xx_spi_info *info,/************************************************************************* * EP93xx LEDs *************************************************************************/ -static struct gpio_led ep93xx_led_pins[] = { +static const struct gpio_led ep93xx_led_pins[]__initconst = { { .name ="platform:grled" , .gpio =EP93XX_GPIO_LINE_GRLED ,
@@ -523,20 +523,11 @@ static struct gpio_led ep93xx_led_pins[] = { }, }; -static struct gpio_led_platform_data ep93xx_led_data = { +static const struct gpio_led_platform_data ep93xx_led_data__initconst = { .num_leds =ARRAY_SIZE (ep93xx_led_pins), .leds = ep93xx_led_pins, }; -static struct platform_device ep93xx_leds = { - .name ="leds-gpio" , - .id =-1 , - .dev = { - .platform_data = &ep93xx_led_data, - }, -}; - -/************************************************************************* * EP93xx pwm peripheral handling *************************************************************************/
@@ -889,8 +880,9 @@ void __init ep93xx_init_devices(void)platform_device_register (&ep93xx_rtc_device);platform_device_register (&ep93xx_ohci_device); -platform_device_register (&ep93xx_leds);platform_device_register (&ep93xx_wdt_device); + +gpio_led_register_device (-1 , &ep93xx_led_data); }void ep93xx_restart (char mode,const char *cmd)
PATCH v2 1/1 arm: ep93xx: use gpio_led_register_device
Quoted 30 lines · H Hartley Sweeten
Use
gpio_led_register_deviceto register the two leds connected to the ep93xx.Since this is a common feature for all ep93xx based boards, create a new
Kconfigoption,ARCH_EP93XX_TYPICAL, to select theLEDS_GPIO_REGISTERfeature.The struct
gpio_ledand structgpio_led_platform_datavariables have been changed to const struct because of:commit
9517f925f2eb9ffca78b3f0f9389fc675bcb572c
leds: make *struct gpio_led_platform_data.leds constThey have also been marked as
__initconstbecause the helper functiongpio_led_register_devicemakes a deep copy of the platform data to allow it to live in init memory:commit
4440673a95e63ad888a41db596edaa0c55d3a332
leds: provide helper to register "leds-gpio" devicesSigned-off-by Hartley Sweeten <[email protected]>Cc Ryan Mallon <[email protected]>---
arch/arm/mach-ep93xx/Kconfig +0
-0
arch/arm/mach-ep93xx/Kconfig if ARCH_EP93XX · line 5
Quoted 4 lines
arch/arm/mach-ep93xx/Kconfig +1
-0@@ -2,6 +2,11 @@ if ARCH_EP93XX menu "Cirrus EP93xx Implementation Options" +config ARCH_EP93XX_TYPICAL
One minor change. Please use a different name for this. Since all of the boards use this and it cannot be unselected, its a bit misleading to call it typical. EP93XX_SOC or EP93XX_COMMON would be a bit better.
~Ryan
Quoted 4 lines
arch/arm/mach-ep93xx/Kconfig +4
-0+ bool + default y + select LEDS_GPIO_REGISTER +
PATCH v2 1/1 arm: ep93xx: use gpio_led_register_device
Quoted 10 lines · Ryan Mallon
Quoted 3 lines · H Hartley Sweeten
menu "Cirrus EP93xx Implementation Options"
+config
ARCH_EP93XX_TYPICALOne minor change. Please use a different name for this. Since all of the boards use this and it cannot be unselected, its a bit misleading to call it typical.
EP93XX_SOCorEP93XX_COMMONwould be a bit better.
Done. Changed it to EP93XX_SOC_COMMON
Quoted 2 lines
arch/arm/mach-ep93xx/Kconfig if ARCH_EP93XX · line 7
Quoted 2 lines
arch/arm/mach-ep93xx/Kconfig +2
-0+ bool + default y
I guess this could also be
def_bool y
But, I don't know if it's necessary...
Quoted 2 lines
arch/arm/mach-ep93xx/Kconfig if ARCH_EP93XX · line 9
Quoted 2 lines
arch/arm/mach-ep93xx/Kconfig +2
-0+ select LEDS_GPIO_REGISTER +
Hartley