Skip to contentSkip to conversation

arm: ep93xx: use gpio_led_register_device

PATCH Superseded H Hartley Sweeten 2 participants 3 messages Apr 11, 2012

Subsystems (3)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

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
index 97a2493..19d8148 100644
@@ -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
index 8d25895..257a124 100644
@@ -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)
#1 lore raw

PATCH v2 1/1 arm: ep93xx: use gpio_led_register_device

Quoted 30 lines · H Hartley Sweeten

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 +0 -0
index 97a2493..19d8148 100644

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
+
#2 lore raw

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_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.

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