All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] BeagleBoard: Added LED driver
@ 2011-03-01 21:02 Jason Kridner
  2011-03-02  1:47 ` Thomas Chou
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Jason Kridner @ 2011-03-01 21:02 UTC (permalink / raw)
  To: u-boot

Added LED driver using status_led.  USR0 is set to monitor the boot
status.  USR1 is set to be the green LED.

Included adding configuration and command to the default configuration.

Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
---
 board/ti/beagle/Makefile       |    4 +-
 board/ti/beagle/beagle.c       |    7 +++
 board/ti/beagle/led.c          |   91 ++++++++++++++++++++++++++++++++++++++++
 include/configs/omap3_beagle.h |   13 ++++++
 4 files changed, 114 insertions(+), 1 deletions(-)
 create mode 100644 board/ti/beagle/led.c

diff --git a/board/ti/beagle/Makefile b/board/ti/beagle/Makefile
index 3b4aaac..d9f445f 100644
--- a/board/ti/beagle/Makefile
+++ b/board/ti/beagle/Makefile
@@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(BOARD).o
 
-COBJS	:= beagle.o
+COBJS-y	:= $(BOARD).o
+COBJS-$(CONFIG_STATUS_LED) += led.o
 
+COBJS	:= $(sort $(COBJS-y))
 SRCS	:= $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
 
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index 93c452e..dd7b6b5 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -30,6 +30,9 @@
  * MA 02111-1307 USA
  */
 #include <common.h>
+#ifdef CONFIG_STATUS_LED
+#include <status_led.h>
+#endif
 #include <twl4030.h>
 #include <asm/io.h>
 #include <asm/arch/mmc_host_def.h>
@@ -78,6 +81,10 @@ int board_init(void)
 	/* boot param addr */
 	gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
 
+#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
+	status_led_set (STATUS_LED_BOOT, STATUS_LED_ON);
+#endif
+
 	return 0;
 }
 
diff --git a/board/ti/beagle/led.c b/board/ti/beagle/led.c
new file mode 100644
index 0000000..df26552
--- /dev/null
+++ b/board/ti/beagle/led.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2010 Texas Instruments, Inc.
+ * Jason Kridner <jkridner@beagleboard.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#include <common.h>
+#include <status_led.h>
+#include <asm/arch/cpu.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/gpio.h>
+
+static unsigned int saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF};
+
+/* GPIO pins for the LEDs */
+#define BEAGLE_LED_USR0	149
+#define BEAGLE_LED_USR1	150
+
+#ifdef STATUS_LED_GREEN
+void green_LED_off (void)
+{
+	__led_set (STATUS_LED_GREEN, 0);
+}
+
+void green_LED_on (void)
+{
+	__led_set (STATUS_LED_GREEN, 1);
+}
+#endif
+
+void __led_init (led_id_t mask, int state)
+{
+	__led_set (mask, state);
+}
+
+void __led_toggle (led_id_t mask)
+{
+#ifdef STATUS_LED_BIT
+	if (STATUS_LED_BIT & mask) {
+		if (STATUS_LED_ON == saved_state[0])
+			__led_set(STATUS_LED_BIT, 0);
+		else
+			__led_set(STATUS_LED_BIT, 1);
+	}
+#endif
+#ifdef STATUS_LED_BIT1
+	if (STATUS_LED_BIT1 & mask) {
+		if (STATUS_LED_ON == saved_state[1])
+			__led_set(STATUS_LED_BIT1, 0);
+		else
+			__led_set(STATUS_LED_BIT1, 1);
+	}
+#endif
+}
+
+void __led_set (led_id_t mask, int state)
+{
+#ifdef STATUS_LED_BIT
+	if (STATUS_LED_BIT & mask) {
+		if (!omap_request_gpio(BEAGLE_LED_USR0)) {
+			omap_set_gpio_direction(BEAGLE_LED_USR0, 0);
+			omap_set_gpio_dataout(BEAGLE_LED_USR0, state);
+		}
+		saved_state[0] = state;
+	}
+#endif
+#ifdef STATUS_LED_BIT1
+	if (STATUS_LED_BIT1 & mask) {
+		if (!omap_request_gpio(BEAGLE_LED_USR1)) {
+			omap_set_gpio_direction(BEAGLE_LED_USR1, 0);
+			omap_set_gpio_dataout(BEAGLE_LED_USR1, state);
+		}
+		saved_state[1] = state;
+	}
+#endif
+}
+
diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h
index 56363f7..6527cd9 100644
--- a/include/configs/omap3_beagle.h
+++ b/include/configs/omap3_beagle.h
@@ -108,6 +108,18 @@
 #define CONFIG_OMAP_HSMMC		1
 #define CONFIG_DOS_PARTITION		1
 
+/* Status LED */
+#define CONFIG_STATUS_LED		1
+#define CONFIG_BOARD_SPECIFIC_LED	1
+#define STATUS_LED_BIT			0x01
+#define STATUS_LED_STATE		STATUS_LED_ON
+#define STATUS_LED_PERIOD		(CONFIG_SYS_HZ / 2)
+#define STATUS_LED_BIT1			0x02
+#define STATUS_LED_STATE1		STATUS_LED_ON
+#define STATUS_LED_PERIOD1		(CONFIG_SYS_HZ / 2)
+#define STATUS_LED_BOOT			STATUS_LED_BIT
+#define STATUS_LED_GREEN		STATUS_LED_BIT1
+
 /* DDR - I use Micron DDR */
 #define CONFIG_OMAP3_MICRON_DDR		1
 
@@ -138,6 +150,7 @@
 #define CONFIG_CMD_I2C		/* I2C serial bus support	*/
 #define CONFIG_CMD_MMC		/* MMC support			*/
 #define CONFIG_CMD_NAND		/* NAND support			*/
+#define CONFIG_CMD_LED		/* LED support			*/
 
 #undef CONFIG_CMD_FLASH		/* flinfo, erase, protect	*/
 #undef CONFIG_CMD_FPGA		/* FPGA configuration Support	*/
-- 
1.5.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] BeagleBoard: Added LED driver
  2011-03-01 21:02 [U-Boot] [PATCH] BeagleBoard: Added LED driver Jason Kridner
@ 2011-03-02  1:47 ` Thomas Chou
  2011-04-18 21:32 ` Paulraj, Sandeep
  2011-04-20 22:08 ` Wolfgang Denk
  2 siblings, 0 replies; 8+ messages in thread
From: Thomas Chou @ 2011-03-02  1:47 UTC (permalink / raw)
  To: u-boot

Hi jason,

On 03/02/2011 05:02 AM, Jason Kridner wrote:
> Added LED driver using status_led.  USR0 is set to monitor the boot
> status.  USR1 is set to be the green LED.
>
> Included adding configuration and command to the default configuration.
>
> Signed-off-by: Jason Kridner<jkridner@beagleboard.org>

Please consider generic gpio api and drivers/misc/gpio_led.c.

Regard,
Thomas

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] BeagleBoard: Added LED driver
  2011-03-01 21:02 [U-Boot] [PATCH] BeagleBoard: Added LED driver Jason Kridner
  2011-03-02  1:47 ` Thomas Chou
@ 2011-04-18 21:32 ` Paulraj, Sandeep
  2011-04-20 22:08 ` Wolfgang Denk
  2 siblings, 0 replies; 8+ messages in thread
From: Paulraj, Sandeep @ 2011-04-18 21:32 UTC (permalink / raw)
  To: u-boot



> 
> Added LED driver using status_led.  USR0 is set to monitor the boot
> status.  USR1 is set to be the green LED.
> 
> Included adding configuration and command to the default configuration.
> 
> Signed-off-by: Jason Kridner <jkridner@beagleboard.org>


Pushed to u-boot-ti

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] BeagleBoard: Added LED driver
  2011-03-01 21:02 [U-Boot] [PATCH] BeagleBoard: Added LED driver Jason Kridner
  2011-03-02  1:47 ` Thomas Chou
  2011-04-18 21:32 ` Paulraj, Sandeep
@ 2011-04-20 22:08 ` Wolfgang Denk
  2 siblings, 0 replies; 8+ messages in thread
From: Wolfgang Denk @ 2011-04-20 22:08 UTC (permalink / raw)
  To: u-boot

Dear Jason Kridner,

In message <1299013343-29963-1-git-send-email-jkridner@beagleboard.org> you wrote:
> Added LED driver using status_led.  USR0 is set to monitor the boot
> status.  USR1 is set to be the green LED.
> 
> Included adding configuration and command to the default configuration.
> 
> Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
...
> +#ifdef STATUS_LED_GREEN
> +void green_LED_off (void)
...
> +void green_LED_on (void)
...

We doin't allow CamelCase identifiers.

> +		if (!omap_request_gpio(BEAGLE_LED_USR0)) {
> +			omap_set_gpio_direction(BEAGLE_LED_USR0, 0);
> +			omap_set_gpio_dataout(BEAGLE_LED_USR0, state);

Should you not set dataout _before_ direction?  As is, you may drive
the wrong output value for a short time. 

> +		if (!omap_request_gpio(BEAGLE_LED_USR1)) {
> +			omap_set_gpio_direction(BEAGLE_LED_USR1, 0);
> +			omap_set_gpio_dataout(BEAGLE_LED_USR1, state);

Ditto.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] BeagleBoard: Added LED driver
  2010-11-05 17:32   ` Jason Kridner
@ 2010-11-07 21:38     ` Wolfgang Denk
  0 siblings, 0 replies; 8+ messages in thread
From: Wolfgang Denk @ 2010-11-07 21:38 UTC (permalink / raw)
  To: u-boot

Dear Jason Kridner,

In message <AANLkTim71JeaAkjbHNHfv8FqDvcc5L=ES1XFbwLBmt8r@mail.gmail.com> you wrote:
>
> > [sp] I see too many ifdef blocks in the code above. The also seems to be
> >     repetitive.
> >
> >     Is user really expected to change the u-boot config for each LED > bit/color?
>
> This is the existing architecture in status_led.h.  I want to make
> sure this code compiles no matter which of the defines have been set.
>
> >     Can this be simplified by one function that takes an argument?
>
> Do you mean set vs. toggle?  I think that would be great too, but
> again following an existing definition.

Please don;t stick with bad examples just because they exist.

Please feel free to come up ith an improvement.

If you have time and resources, please feel free to clean up the
status_led code as well.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Don't panic.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] BeagleBoard: Added LED driver
  2010-11-05 12:02 ` Premi, Sanjeev
@ 2010-11-05 17:32   ` Jason Kridner
  2010-11-07 21:38     ` Wolfgang Denk
  0 siblings, 1 reply; 8+ messages in thread
From: Jason Kridner @ 2010-11-05 17:32 UTC (permalink / raw)
  To: u-boot

On Fri, Nov 5, 2010 at 8:02 AM, Premi, Sanjeev <premi@ti.com> wrote:
>> -----Original Message-----
>> From: u-boot-bounces at lists.denx.de
>> [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Jason Kridner
>> Sent: Friday, November 05, 2010 11:23 AM
>> To: u-boot at lists.denx.de; beagleboard at googlegroups.com
>> Subject: [U-Boot] [PATCH] BeagleBoard: Added LED driver
>>
>> Added LED driver using status_led. ?USR0 is set to monitor the boot
>> status. ?USR1 is set to be the green LED.
>> (cherry picked from commit 048b526fd7cc0c642f27c674b3e235321c880b66)
>>
>> Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
>> ---
>> ?board/ti/beagle/Makefile | ? ?4 ++-
>> ?board/ti/beagle/beagle.c | ? ?7 ++++
>> ?board/ti/beagle/led.c ? ?| ? 91
>> ++++++++++++++++++++++++++++++++++++++++++++++
>> ?3 files changed, 101 insertions(+), 1 deletions(-)
>> ?create mode 100644 board/ti/beagle/led.c
>>
>> diff --git a/board/ti/beagle/Makefile b/board/ti/beagle/Makefile
>> index f797112..4cc675c 100644
>> --- a/board/ti/beagle/Makefile
>> +++ b/board/ti/beagle/Makefile
>> @@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
>>
>> ?LIB ?= $(obj)lib$(BOARD).a
>>
>> -COBJS ? ? ? ?:= beagle.o
>> +COBJS-y ? ? ?:= $(BOARD).o
>> +COBJS-$(CONFIG_STATUS_LED) += led.o
>>
>> +COBJS ? ? ? ?:= $(sort $(COBJS-y))
>> ?SRCS := $(COBJS:.o=.c)
>> ?OBJS := $(addprefix $(obj),$(COBJS))
>>
>> diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
>> index 93c452e..dd7b6b5 100644
>> --- a/board/ti/beagle/beagle.c
>> +++ b/board/ti/beagle/beagle.c
>> @@ -30,6 +30,9 @@
>> ? * MA 02111-1307 USA
>> ? */
>> ?#include <common.h>
>> +#ifdef CONFIG_STATUS_LED
>> +#include <status_led.h>
>> +#endif
>> ?#include <twl4030.h>
>> ?#include <asm/io.h>
>> ?#include <asm/arch/mmc_host_def.h>
>> @@ -78,6 +81,10 @@ int board_init(void)
>> ? ? ? /* boot param addr */
>> ? ? ? gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
>>
>> +#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
>> + ? ? status_led_set (STATUS_LED_BOOT, STATUS_LED_ON);
>> +#endif
>> +
>> ? ? ? return 0;
>> ?}
>>
>> diff --git a/board/ti/beagle/led.c b/board/ti/beagle/led.c
>> new file mode 100644
>> index 0000000..df26552
>> --- /dev/null
>> +++ b/board/ti/beagle/led.c
>> @@ -0,0 +1,91 @@
>> +/*
>> + * Copyright (c) 2010 Texas Instruments, Inc.
>> + * Jason Kridner <jkridner@beagleboard.org>
>> + *
>> + * This program is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU General Public License as
>> + * published by the Free Software Foundation; either version 2 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ?See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program; if not, write to the Free Software
>> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
>> + * MA 02111-1307 USA
>> + */
>> +#include <common.h>
>> +#include <status_led.h>
>> +#include <asm/arch/cpu.h>
>> +#include <asm/io.h>
>> +#include <asm/arch/sys_proto.h>
>> +#include <asm/arch/gpio.h>
>> +
>> +static unsigned int saved_state[2] = {STATUS_LED_OFF,
>> STATUS_LED_OFF};
>> +
>> +/* GPIO pins for the LEDs */
>> +#define BEAGLE_LED_USR0 ? ? ?149
>> +#define BEAGLE_LED_USR1 ? ? ?150
>> +
>> +#ifdef STATUS_LED_GREEN
>> +void green_LED_off (void)
>> +{
>> + ? ? __led_set (STATUS_LED_GREEN, 0);
>> +}
>> +
>> +void green_LED_on (void)
>> +{
>> + ? ? __led_set (STATUS_LED_GREEN, 1);
>> +}
>> +#endif
>> +
>> +void __led_init (led_id_t mask, int state)
>> +{
>> + ? ? __led_set (mask, state);
>> +}
>> +
>> +void __led_toggle (led_id_t mask)
>> +{
>> +#ifdef STATUS_LED_BIT
>> + ? ? if (STATUS_LED_BIT & mask) {
>> + ? ? ? ? ? ? if (STATUS_LED_ON == saved_state[0])
>> + ? ? ? ? ? ? ? ? ? ? __led_set(STATUS_LED_BIT, 0);
>> + ? ? ? ? ? ? else
>> + ? ? ? ? ? ? ? ? ? ? __led_set(STATUS_LED_BIT, 1);
>> + ? ? }
>> +#endif
>> +#ifdef STATUS_LED_BIT1
>> + ? ? if (STATUS_LED_BIT1 & mask) {
>> + ? ? ? ? ? ? if (STATUS_LED_ON == saved_state[1])
>> + ? ? ? ? ? ? ? ? ? ? __led_set(STATUS_LED_BIT1, 0);
>> + ? ? ? ? ? ? else
>> + ? ? ? ? ? ? ? ? ? ? __led_set(STATUS_LED_BIT1, 1);
>> + ? ? }
>> +#endif
>> +}
>> +
>> +void __led_set (led_id_t mask, int state)
>> +{
>> +#ifdef STATUS_LED_BIT
>> + ? ? if (STATUS_LED_BIT & mask) {
>> + ? ? ? ? ? ? if (!omap_request_gpio(BEAGLE_LED_USR0)) {
>> + ? ? ? ? ? ? ? ? ? ? omap_set_gpio_direction(BEAGLE_LED_USR0, 0);
>> + ? ? ? ? ? ? ? ? ? ? omap_set_gpio_dataout(BEAGLE_LED_USR0, state);
>> + ? ? ? ? ? ? }
>> + ? ? ? ? ? ? saved_state[0] = state;
>> + ? ? }
>> +#endif
>> +#ifdef STATUS_LED_BIT1
>> + ? ? if (STATUS_LED_BIT1 & mask) {
>> + ? ? ? ? ? ? if (!omap_request_gpio(BEAGLE_LED_USR1)) {
>> + ? ? ? ? ? ? ? ? ? ? omap_set_gpio_direction(BEAGLE_LED_USR1, 0);
>> + ? ? ? ? ? ? ? ? ? ? omap_set_gpio_dataout(BEAGLE_LED_USR1, state);
>> + ? ? ? ? ? ? }
>> + ? ? ? ? ? ? saved_state[1] = state;
>> + ? ? }
>> +#endif
>> +}
>
> [sp] I see too many ifdef blocks in the code above. The also seems to be
> ? ? repetitive.
>
> ? ? Is user really expected to change the u-boot config for each LED bit/color?

This is the existing architecture in status_led.h.  I want to make
sure this code compiles no matter which of the defines have been set.

> ? ? Can this be simplified by one function that takes an argument?

Do you mean set vs. toggle?  I think that would be great too, but
again following an existing definition.

> ? ? Should reduce code and ifdefs - if at all - get confined to one function.

Do you have any proposal on how to do so?  Personally, I'd be inclined
to eliminate the colors all together and have 2 values that can be
ignored/rejected by the functions if not supported: LED # (an ID) and
an integral value (could be brightness or color).  Also, I'd be happy
with simply having a set value function and having the rest of the
system monitor the state (rather than having a toggle method).
Thoughts?

>
> ~sanjeev
>
>> +
>> --
>> 1.5.6.4
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
>>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] BeagleBoard: Added LED driver
  2010-11-05  5:53 Jason Kridner
@ 2010-11-05 12:02 ` Premi, Sanjeev
  2010-11-05 17:32   ` Jason Kridner
  0 siblings, 1 reply; 8+ messages in thread
From: Premi, Sanjeev @ 2010-11-05 12:02 UTC (permalink / raw)
  To: u-boot

> -----Original Message-----
> From: u-boot-bounces at lists.denx.de 
> [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Jason Kridner
> Sent: Friday, November 05, 2010 11:23 AM
> To: u-boot at lists.denx.de; beagleboard at googlegroups.com
> Subject: [U-Boot] [PATCH] BeagleBoard: Added LED driver
> 
> Added LED driver using status_led.  USR0 is set to monitor the boot
> status.  USR1 is set to be the green LED.
> (cherry picked from commit 048b526fd7cc0c642f27c674b3e235321c880b66)
> 
> Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
> ---
>  board/ti/beagle/Makefile |    4 ++-
>  board/ti/beagle/beagle.c |    7 ++++
>  board/ti/beagle/led.c    |   91 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 101 insertions(+), 1 deletions(-)
>  create mode 100644 board/ti/beagle/led.c
> 
> diff --git a/board/ti/beagle/Makefile b/board/ti/beagle/Makefile
> index f797112..4cc675c 100644
> --- a/board/ti/beagle/Makefile
> +++ b/board/ti/beagle/Makefile
> @@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
>  
>  LIB	= $(obj)lib$(BOARD).a
>  
> -COBJS	:= beagle.o
> +COBJS-y	:= $(BOARD).o
> +COBJS-$(CONFIG_STATUS_LED) += led.o
>  
> +COBJS	:= $(sort $(COBJS-y))
>  SRCS	:= $(COBJS:.o=.c)
>  OBJS	:= $(addprefix $(obj),$(COBJS))
>  
> diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
> index 93c452e..dd7b6b5 100644
> --- a/board/ti/beagle/beagle.c
> +++ b/board/ti/beagle/beagle.c
> @@ -30,6 +30,9 @@
>   * MA 02111-1307 USA
>   */
>  #include <common.h>
> +#ifdef CONFIG_STATUS_LED
> +#include <status_led.h>
> +#endif
>  #include <twl4030.h>
>  #include <asm/io.h>
>  #include <asm/arch/mmc_host_def.h>
> @@ -78,6 +81,10 @@ int board_init(void)
>  	/* boot param addr */
>  	gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
>  
> +#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
> +	status_led_set (STATUS_LED_BOOT, STATUS_LED_ON);
> +#endif
> +
>  	return 0;
>  }
>  
> diff --git a/board/ti/beagle/led.c b/board/ti/beagle/led.c
> new file mode 100644
> index 0000000..df26552
> --- /dev/null
> +++ b/board/ti/beagle/led.c
> @@ -0,0 +1,91 @@
> +/*
> + * Copyright (c) 2010 Texas Instruments, Inc.
> + * Jason Kridner <jkridner@beagleboard.org>
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +#include <common.h>
> +#include <status_led.h>
> +#include <asm/arch/cpu.h>
> +#include <asm/io.h>
> +#include <asm/arch/sys_proto.h>
> +#include <asm/arch/gpio.h>
> +
> +static unsigned int saved_state[2] = {STATUS_LED_OFF, 
> STATUS_LED_OFF};
> +
> +/* GPIO pins for the LEDs */
> +#define BEAGLE_LED_USR0	149
> +#define BEAGLE_LED_USR1	150
> +
> +#ifdef STATUS_LED_GREEN
> +void green_LED_off (void)
> +{
> +	__led_set (STATUS_LED_GREEN, 0);
> +}
> +
> +void green_LED_on (void)
> +{
> +	__led_set (STATUS_LED_GREEN, 1);
> +}
> +#endif
> +
> +void __led_init (led_id_t mask, int state)
> +{
> +	__led_set (mask, state);
> +}
> +
> +void __led_toggle (led_id_t mask)
> +{
> +#ifdef STATUS_LED_BIT
> +	if (STATUS_LED_BIT & mask) {
> +		if (STATUS_LED_ON == saved_state[0])
> +			__led_set(STATUS_LED_BIT, 0);
> +		else
> +			__led_set(STATUS_LED_BIT, 1);
> +	}
> +#endif
> +#ifdef STATUS_LED_BIT1
> +	if (STATUS_LED_BIT1 & mask) {
> +		if (STATUS_LED_ON == saved_state[1])
> +			__led_set(STATUS_LED_BIT1, 0);
> +		else
> +			__led_set(STATUS_LED_BIT1, 1);
> +	}
> +#endif
> +}
> +
> +void __led_set (led_id_t mask, int state)
> +{
> +#ifdef STATUS_LED_BIT
> +	if (STATUS_LED_BIT & mask) {
> +		if (!omap_request_gpio(BEAGLE_LED_USR0)) {
> +			omap_set_gpio_direction(BEAGLE_LED_USR0, 0);
> +			omap_set_gpio_dataout(BEAGLE_LED_USR0, state);
> +		}
> +		saved_state[0] = state;
> +	}
> +#endif
> +#ifdef STATUS_LED_BIT1
> +	if (STATUS_LED_BIT1 & mask) {
> +		if (!omap_request_gpio(BEAGLE_LED_USR1)) {
> +			omap_set_gpio_direction(BEAGLE_LED_USR1, 0);
> +			omap_set_gpio_dataout(BEAGLE_LED_USR1, state);
> +		}
> +		saved_state[1] = state;
> +	}
> +#endif
> +}

[sp] I see too many ifdef blocks in the code above. The also seems to be
     repetitive.

     Is user really expected to change the u-boot config for each LED bit/color?
     Can this be simplified by one function that takes an argument?
     Should reduce code and ifdefs - if at all - get confined to one function.

~sanjeev

> +
> -- 
> 1.5.6.4
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] BeagleBoard: Added LED driver
@ 2010-11-05  5:53 Jason Kridner
  2010-11-05 12:02 ` Premi, Sanjeev
  0 siblings, 1 reply; 8+ messages in thread
From: Jason Kridner @ 2010-11-05  5:53 UTC (permalink / raw)
  To: u-boot

Added LED driver using status_led.  USR0 is set to monitor the boot
status.  USR1 is set to be the green LED.
(cherry picked from commit 048b526fd7cc0c642f27c674b3e235321c880b66)

Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
---
 board/ti/beagle/Makefile |    4 ++-
 board/ti/beagle/beagle.c |    7 ++++
 board/ti/beagle/led.c    |   91 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 101 insertions(+), 1 deletions(-)
 create mode 100644 board/ti/beagle/led.c

diff --git a/board/ti/beagle/Makefile b/board/ti/beagle/Makefile
index f797112..4cc675c 100644
--- a/board/ti/beagle/Makefile
+++ b/board/ti/beagle/Makefile
@@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(BOARD).a
 
-COBJS	:= beagle.o
+COBJS-y	:= $(BOARD).o
+COBJS-$(CONFIG_STATUS_LED) += led.o
 
+COBJS	:= $(sort $(COBJS-y))
 SRCS	:= $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
 
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index 93c452e..dd7b6b5 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -30,6 +30,9 @@
  * MA 02111-1307 USA
  */
 #include <common.h>
+#ifdef CONFIG_STATUS_LED
+#include <status_led.h>
+#endif
 #include <twl4030.h>
 #include <asm/io.h>
 #include <asm/arch/mmc_host_def.h>
@@ -78,6 +81,10 @@ int board_init(void)
 	/* boot param addr */
 	gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
 
+#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
+	status_led_set (STATUS_LED_BOOT, STATUS_LED_ON);
+#endif
+
 	return 0;
 }
 
diff --git a/board/ti/beagle/led.c b/board/ti/beagle/led.c
new file mode 100644
index 0000000..df26552
--- /dev/null
+++ b/board/ti/beagle/led.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2010 Texas Instruments, Inc.
+ * Jason Kridner <jkridner@beagleboard.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#include <common.h>
+#include <status_led.h>
+#include <asm/arch/cpu.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/gpio.h>
+
+static unsigned int saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF};
+
+/* GPIO pins for the LEDs */
+#define BEAGLE_LED_USR0	149
+#define BEAGLE_LED_USR1	150
+
+#ifdef STATUS_LED_GREEN
+void green_LED_off (void)
+{
+	__led_set (STATUS_LED_GREEN, 0);
+}
+
+void green_LED_on (void)
+{
+	__led_set (STATUS_LED_GREEN, 1);
+}
+#endif
+
+void __led_init (led_id_t mask, int state)
+{
+	__led_set (mask, state);
+}
+
+void __led_toggle (led_id_t mask)
+{
+#ifdef STATUS_LED_BIT
+	if (STATUS_LED_BIT & mask) {
+		if (STATUS_LED_ON == saved_state[0])
+			__led_set(STATUS_LED_BIT, 0);
+		else
+			__led_set(STATUS_LED_BIT, 1);
+	}
+#endif
+#ifdef STATUS_LED_BIT1
+	if (STATUS_LED_BIT1 & mask) {
+		if (STATUS_LED_ON == saved_state[1])
+			__led_set(STATUS_LED_BIT1, 0);
+		else
+			__led_set(STATUS_LED_BIT1, 1);
+	}
+#endif
+}
+
+void __led_set (led_id_t mask, int state)
+{
+#ifdef STATUS_LED_BIT
+	if (STATUS_LED_BIT & mask) {
+		if (!omap_request_gpio(BEAGLE_LED_USR0)) {
+			omap_set_gpio_direction(BEAGLE_LED_USR0, 0);
+			omap_set_gpio_dataout(BEAGLE_LED_USR0, state);
+		}
+		saved_state[0] = state;
+	}
+#endif
+#ifdef STATUS_LED_BIT1
+	if (STATUS_LED_BIT1 & mask) {
+		if (!omap_request_gpio(BEAGLE_LED_USR1)) {
+			omap_set_gpio_direction(BEAGLE_LED_USR1, 0);
+			omap_set_gpio_dataout(BEAGLE_LED_USR1, state);
+		}
+		saved_state[1] = state;
+	}
+#endif
+}
+
-- 
1.5.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-04-20 22:08 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-01 21:02 [U-Boot] [PATCH] BeagleBoard: Added LED driver Jason Kridner
2011-03-02  1:47 ` Thomas Chou
2011-04-18 21:32 ` Paulraj, Sandeep
2011-04-20 22:08 ` Wolfgang Denk
  -- strict thread matches above, loose matches on Subject: below --
2010-11-05  5:53 Jason Kridner
2010-11-05 12:02 ` Premi, Sanjeev
2010-11-05 17:32   ` Jason Kridner
2010-11-07 21:38     ` Wolfgang Denk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.