linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/19] omap3: Fix support for the LEDs connected to GPIO outputs on IGEP v2board
Date: Thu, 11 Mar 2010 15:48:32 -0800	[thread overview]
Message-ID: <20100311234831.4500.71999.stgit@baageli.muru.com> (raw)
In-Reply-To: <20100311234404.4500.82861.stgit@baageli.muru.com>

From: Enric Balletbo i Serra <eballetbo@iseebcn.com>

Select CONFIG_LEDS_GPIO to enable IGEP v2 LED support and control of supported
LEDs from userspace. Otherwise GPIO LEDs are exported as GPIO 26, 27 and 28 using
the gpiolib framework.

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/mach-omap2/board-igep0020.c |   54 +++++++++++++++++++++++-----------
 1 files changed, 36 insertions(+), 18 deletions(-)

diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index 4f1accf..3c7789d 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -16,7 +16,6 @@
 #include <linux/clk.h>
 #include <linux/io.h>
 #include <linux/gpio.h>
-#include <linux/leds.h>
 #include <linux/interrupt.h>
 
 #include <linux/regulator/machine.h>
@@ -39,8 +38,8 @@
 #define IGEP2_SMSC911X_CS       5
 #define IGEP2_SMSC911X_GPIO     176
 #define IGEP2_GPIO_USBH_NRESET  24
-#define IGEP2_GPIO_LED0_RED 	26
-#define IGEP2_GPIO_LED0_GREEN 	27
+#define IGEP2_GPIO_LED0_GREEN 	26
+#define IGEP2_GPIO_LED0_RED 	27
 #define IGEP2_GPIO_LED1_RED   	28
 #define IGEP2_GPIO_DVI_PUP	170
 #define IGEP2_GPIO_WIFI_NPD 	94
@@ -355,34 +354,50 @@ static void __init igep2_display_init(void)
 	    gpio_direction_output(IGEP2_GPIO_DVI_PUP, 1))
 		pr_err("IGEP v2: Could not obtain gpio GPIO_DVI_PUP\n");
 }
-#ifdef CONFIG_LEDS_TRIGGERS
-static struct gpio_led gpio_leds[] = {
+
+#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
+#include <linux/leds.h>
+
+static struct gpio_led igep2_gpio_leds[] = {
 	{
-		.name = "GPIO_LED1_RED",
+		.name = "led0:red",
+		.gpio = IGEP2_GPIO_LED0_RED,
+	},
+	{
+		.name = "led0:green",
 		.default_trigger = "heartbeat",
+		.gpio = IGEP2_GPIO_LED0_GREEN,
+	},
+	{
+		.name = "led1:red",
 		.gpio = IGEP2_GPIO_LED1_RED,
 	},
 };
 
-static struct gpio_led_platform_data gpio_leds_info = {
-	.leds           = gpio_leds,
-	.num_leds       = ARRAY_SIZE(gpio_leds),
+static struct gpio_led_platform_data igep2_led_pdata = {
+	.leds           = igep2_gpio_leds,
+	.num_leds       = ARRAY_SIZE(igep2_gpio_leds),
 };
 
-static struct platform_device leds_gpio = {
+static struct platform_device igep2_led_device = {
 	 .name   = "leds-gpio",
 	 .id     = -1,
 	 .dev    = {
-		 .platform_data  =  &gpio_leds_info,
+		 .platform_data  =  &igep2_led_pdata,
 	},
 };
+
+static void __init igep2_init_led(void)
+{
+	platform_device_register(&igep2_led_device);
+}
+
+#else
+static inline void igep2_init_led(void) {}
 #endif
 
 static struct platform_device *igep2_devices[] __initdata = {
 	&igep2_dss_device,
-#ifdef CONFIG_LEDS_TRIGGERS
-	&leds_gpio,
-#endif
 };
 
 static void __init igep2_init_irq(void)
@@ -471,31 +486,34 @@ static void __init igep2_init(void)
 	usb_ehci_init(&ehci_pdata);
 
 	igep2_flash_init();
+	igep2_init_led();
 	igep2_display_init();
 	igep2_init_smsc911x();
 
 	/* GPIO userspace leds */
-	if ((gpio_request(IGEP2_GPIO_LED0_RED, "GPIO_LED0_RED") == 0) &&
+#if !defined(CONFIG_LEDS_GPIO) && !defined(CONFIG_LEDS_GPIO_MODULE)
+	if ((gpio_request(IGEP2_GPIO_LED0_RED, "led0:red") == 0) &&
 	    (gpio_direction_output(IGEP2_GPIO_LED0_RED, 1) == 0)) {
 		gpio_export(IGEP2_GPIO_LED0_RED, 0);
 		gpio_set_value(IGEP2_GPIO_LED0_RED, 0);
 	} else
 		pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_RED\n");
 
-	if ((gpio_request(IGEP2_GPIO_LED0_GREEN, "GPIO_LED0_GREEN") == 0) &&
+	if ((gpio_request(IGEP2_GPIO_LED0_GREEN, "led0:green") == 0) &&
 	    (gpio_direction_output(IGEP2_GPIO_LED0_GREEN, 1) == 0)) {
 		gpio_export(IGEP2_GPIO_LED0_GREEN, 0);
 		gpio_set_value(IGEP2_GPIO_LED0_GREEN, 0);
 	} else
 		pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_GREEN\n");
-#ifndef CONFIG_LEDS_TRIGGERS
-	if ((gpio_request(IGEP2_GPIO_LED1_RED, "GPIO_LED1_RED") == 0) &&
+
+	if ((gpio_request(IGEP2_GPIO_LED1_RED, "led1:red") == 0) &&
 	    (gpio_direction_output(IGEP2_GPIO_LED1_RED, 1) == 0)) {
 		gpio_export(IGEP2_GPIO_LED1_RED, 0);
 		gpio_set_value(IGEP2_GPIO_LED1_RED, 0);
 	} else
 		pr_warning("IGEP v2: Could not obtain gpio GPIO_LED1_RED\n");
 #endif
+
 	/* GPIO W-LAN + Bluetooth combo module */
 	if ((gpio_request(IGEP2_GPIO_WIFI_NPD, "GPIO_WIFI_NPD") == 0) &&
 	    (gpio_direction_output(IGEP2_GPIO_WIFI_NPD, 1) == 0)) {

  parent reply	other threads:[~2010-03-11 23:48 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-11 23:48 [PATCH 00/19] omap-fixes for 2.6.34-rc1 Tony Lindgren
2010-03-11 23:48 ` [PATCH 01/19] omap3: Fix compile for Touch Book early_param Tony Lindgren
2010-03-11 23:48 ` [PATCH 02/19] omap2/3/4: ehci: avoid compiler error with touchbook Tony Lindgren
2010-03-11 23:48 ` [PATCH 03/19] omap4: Fix build break by moving omap_smc1 into a separate .S Tony Lindgren
2010-03-11 23:48 ` [PATCH 04/19] omap2: add USB initialization for tusb6010 Tony Lindgren
2010-03-11 23:48 ` [PATCH 05/19] omap2: Update n8x0 defconfig to test multi-omap and DMA api changes Tony Lindgren
2010-03-11 23:48 ` [PATCH 06/19] omap: Enable PM_RUNTIME in defconfigs to avoid USB compile errors Tony Lindgren
2010-03-11 23:48 ` [PATCH 07/19] OMAP2: serial.c: Fix number of uarts in early_init Tony Lindgren
2010-03-11 23:48 ` [PATCH 08/19] omap2/3/4: mailbox: remove compiler warning Tony Lindgren
2010-03-11 23:48 ` [PATCH 09/19] omap: pass the reboot command to the boot loader Tony Lindgren
2010-03-11 23:48 ` [PATCH 10/19] omap: Checkpatch cleanup for blizzard.h Tony Lindgren
2010-03-11 23:48 ` Tony Lindgren [this message]
2010-03-11 23:48 ` [PATCH 12/19] omap: Fix gpio_resume_after_retention Tony Lindgren
2010-03-11 23:50   ` Aguirre, Sergio
2010-03-11 23:56     ` Tony Lindgren
2010-03-12  0:04       ` Aguirre, Sergio
2010-03-12 10:37         ` Gadiyar, Anand
2010-03-12 13:19           ` Felipe Balbi
2010-03-12 14:00             ` Aguirre, Sergio
2010-03-11 23:48 ` [PATCH 13/19] omap: mach-omap2/io.c: fix function declarations Tony Lindgren
2010-03-11 23:48 ` [PATCH 14/19] omap3: pandora: add missing i2c3 board_info Tony Lindgren
2010-03-11 23:48 ` [PATCH 15/19] OMAP2: cpu_is_omap2*: fix compile-time removal of unused code Tony Lindgren
2010-03-11 23:48 ` [PATCH 16/19] OMAP4: fix temporary hacks that break multi-omap PM Tony Lindgren
2010-03-11 23:48 ` [PATCH 17/19] omap: Add DSI regulator supply to OMAP3EVM board file Tony Lindgren
2010-03-12  4:48   ` Hiremath, Vaibhav
2010-03-12 17:12     ` Tony Lindgren
2010-03-12 17:18       ` Tony Lindgren
2010-03-11 23:59 ` [PATCH 18/19] " Tony Lindgren
2010-03-12  0:06   ` Tony Lindgren
2010-03-12  0:00 ` [PATCH 19/19] omap: McBSP: Drop unnecessary status/error bit clearing on reg_cacheretrieved register values Tony Lindgren
2010-03-12  0:10   ` Tony Lindgren
2010-03-12  0:11 ` [PATCH 19b/19] ARM/OMAP: Remove the +x bit from a couple of source files Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100311234831.4500.71999.stgit@baageli.muru.com \
    --to=tony@atomide.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).