[U-Boot] [RFC PATCH] TWL4030: make LEDs selectable in twl4030_led_init()

Grazvydas Ignotas notasas at gmail.com
Mon Nov 30 23:53:08 CET 2009


Not all boards have both LEDs hooked, so enabling both on
boards with single LED will just waste power.

Make it possible to choose LEDs by adding arguments to
twl4030_led_init().

Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
---
 board/logicpd/zoom1/zoom1.c         |    2 +-
 board/logicpd/zoom2/zoom2.c         |    2 +-
 board/overo/overo.c                 |    2 +-
 board/pandora/pandora.c             |    2 +-
 board/ti/beagle/beagle.c            |    2 +-
 board/timll/devkit8000/devkit8000.c |    2 +-
 drivers/misc/twl4030_led.c          |   11 +++++++----
 include/twl4030.h                   |    2 +-
 8 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/board/logicpd/zoom1/zoom1.c b/board/logicpd/zoom1/zoom1.c
index f4d3754..093b1bf 100644
--- a/board/logicpd/zoom1/zoom1.c
+++ b/board/logicpd/zoom1/zoom1.c
@@ -62,7 +62,7 @@ int board_init(void)
 int misc_init_r(void)
 {
 	twl4030_power_init();
-	twl4030_led_init();
+	twl4030_led_init(1, 1);
 	dieid_num_r();
 
 	/*
diff --git a/board/logicpd/zoom2/zoom2.c b/board/logicpd/zoom2/zoom2.c
index dadbeb6..c93aeec 100644
--- a/board/logicpd/zoom2/zoom2.c
+++ b/board/logicpd/zoom2/zoom2.c
@@ -148,7 +148,7 @@ int misc_init_r(void)
 {
 	zoom2_identify();
 	twl4030_power_init();
-	twl4030_led_init();
+	twl4030_led_init(1, 1);
 	dieid_num_r();
 
 	/*
diff --git a/board/overo/overo.c b/board/overo/overo.c
index d42dc13..29600b0 100644
--- a/board/overo/overo.c
+++ b/board/overo/overo.c
@@ -67,7 +67,7 @@ int board_init(void)
 int misc_init_r(void)
 {
 	twl4030_power_init();
-	twl4030_led_init();
+	twl4030_led_init(1, 1);
 
 #if defined(CONFIG_CMD_NET)
 	setup_net_chip();
diff --git a/board/pandora/pandora.c b/board/pandora/pandora.c
index 460ed12..c8007dc 100644
--- a/board/pandora/pandora.c
+++ b/board/pandora/pandora.c
@@ -66,7 +66,7 @@ int misc_init_r(void)
 	struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE;
 
 	twl4030_power_init();
-	twl4030_led_init();
+	twl4030_led_init(0, 1);
 
 	/* Configure GPIOs to output */
 	writel(~(GPIO14 | GPIO15 | GPIO16 | GPIO23), &gpio1_base->oe);
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index 32d501e..87c9b0f 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -107,7 +107,7 @@ int misc_init_r(void)
 	struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE;
 
 	twl4030_power_init();
-	twl4030_led_init();
+	twl4030_led_init(1, 1);
 
 	/* Configure GPIOs to output */
 	writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), &gpio6_base->oe);
diff --git a/board/timll/devkit8000/devkit8000.c b/board/timll/devkit8000/devkit8000.c
index db7d2e2..7eb7793 100644
--- a/board/timll/devkit8000/devkit8000.c
+++ b/board/timll/devkit8000/devkit8000.c
@@ -76,7 +76,7 @@ int misc_init_r(void)
 
 	twl4030_power_init();
 #ifdef CONFIG_TWL4030_LED
-	twl4030_led_init();
+	twl4030_led_init(1, 1);
 #endif
 
 #ifdef CONFIG_DRIVER_DM9000
diff --git a/drivers/misc/twl4030_led.c b/drivers/misc/twl4030_led.c
index bfdafef..9e945a4 100644
--- a/drivers/misc/twl4030_led.c
+++ b/drivers/misc/twl4030_led.c
@@ -39,12 +39,15 @@
 #define LEDAPWM			(0x1 << 4)
 #define LEDBPWM			(0x1 << 5)
 
-void twl4030_led_init(void)
+void twl4030_led_init(int leda_on, int ledb_on)
 {
-	unsigned char byte;
+	unsigned char byte = 0;
 
-	/* enable LED */
-	byte = LEDBPWM | LEDAPWM | LEDBON | LEDAON;
+	/* enable LEDs */
+	if (leda_on)
+		byte |= LEDAPWM | LEDAON;
+	if (ledb_on)
+		byte |= LEDBPWM | LEDBON;
 
 	twl4030_i2c_write_u8(TWL4030_CHIP_LED, byte,
 			     TWL4030_LED_LEDEN);
diff --git a/include/twl4030.h b/include/twl4030.h
index f260ecb..82b3682 100644
--- a/include/twl4030.h
+++ b/include/twl4030.h
@@ -396,6 +396,6 @@ void twl4030_power_mmc_init(void);
 /*
  * LED
  */
-void twl4030_led_init(void);
+void twl4030_led_init(int leda_on, int ledb_on);
 
 #endif /* TWL4030_H */
-- 
1.6.3.3



More information about the U-Boot mailing list