* [U-Boot] [PATCH] TWL4030: make LEDs selectable in twl4030_led_init()
@ 2009-12-02 13:08 Grazvydas Ignotas
2009-12-02 14:55 ` Tom
0 siblings, 1 reply; 3+ messages in thread
From: Grazvydas Ignotas @ 2009-12-02 13:08 UTC (permalink / raw)
To: u-boot
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 argument to
twl4030_led_init().
Using this turn on only LEDB for pandora, leave both LEDs
on for all other boards, as it was before this patch.
Signed-off-by: Grazvydas Ignotas <notasas@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 | 5 ++++-
8 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/board/logicpd/zoom1/zoom1.c b/board/logicpd/zoom1/zoom1.c
index f4d3754..9b308da 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
dieid_num_r();
/*
diff --git a/board/logicpd/zoom2/zoom2.c b/board/logicpd/zoom2/zoom2.c
index dadbeb6..f40bbc6 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
dieid_num_r();
/*
diff --git a/board/overo/overo.c b/board/overo/overo.c
index d42dc13..a2942ce 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
#if defined(CONFIG_CMD_NET)
setup_net_chip();
diff --git a/board/pandora/pandora.c b/board/pandora/pandora.c
index 460ed12..df2c71a 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(TWL4030_LEDON_LEDB);
/* 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..e23f7ee 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
/* 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..997a7cf 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
#endif
#ifdef CONFIG_DRIVER_DM9000
diff --git a/drivers/misc/twl4030_led.c b/drivers/misc/twl4030_led.c
index bfdafef..d2cc3c8 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(unsigned int ledon_mask)
{
- unsigned char byte;
+ unsigned char byte = 0;
- /* enable LED */
- byte = LEDBPWM | LEDAPWM | LEDBON | LEDAON;
+ /* enable LEDs */
+ if (ledon_mask & TWL4030_LEDON_LEDA)
+ byte |= LEDAPWM | LEDAON;
+ if (ledon_mask & TWL4030_LEDON_LEDB)
+ 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..d0c62c3 100644
--- a/include/twl4030.h
+++ b/include/twl4030.h
@@ -396,6 +396,9 @@ void twl4030_power_mmc_init(void);
/*
* LED
*/
-void twl4030_led_init(void);
+#define TWL4030_LEDON_LEDA (1 << 0)
+#define TWL4030_LEDON_LEDB (1 << 1)
+
+void twl4030_led_init(unsigned int ledon_mask);
#endif /* TWL4030_H */
--
1.6.3.3
^ permalink raw reply related [flat|nested] 3+ messages in thread* [U-Boot] [PATCH] TWL4030: make LEDs selectable in twl4030_led_init()
2009-12-02 13:08 [U-Boot] [PATCH] TWL4030: make LEDs selectable in twl4030_led_init() Grazvydas Ignotas
@ 2009-12-02 14:55 ` Tom
2009-12-02 15:44 ` Grazvydas Ignotas
0 siblings, 1 reply; 3+ messages in thread
From: Tom @ 2009-12-02 14:55 UTC (permalink / raw)
To: u-boot
Grazvydas Ignotas wrote:
> 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 argument to
> twl4030_led_init().
>
> Using this turn on only LEDB for pandora, leave both LEDs
> on for all other boards, as it was before this patch.
>
> Signed-off-by: Grazvydas Ignotas <notasas@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 | 5 ++++-
> 8 files changed, 17 insertions(+), 11 deletions(-)
>
> diff --git a/board/logicpd/zoom1/zoom1.c b/board/logicpd/zoom1/zoom1.c
> index f4d3754..9b308da 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
> dieid_num_r();
>
> /*
> diff --git a/board/logicpd/zoom2/zoom2.c b/board/logicpd/zoom2/zoom2.c
> index dadbeb6..f40bbc6 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
> dieid_num_r();
>
> /*
> diff --git a/board/overo/overo.c b/board/overo/overo.c
> index d42dc13..a2942ce 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
>
> #if defined(CONFIG_CMD_NET)
> setup_net_chip();
> diff --git a/board/pandora/pandora.c b/board/pandora/pandora.c
> index 460ed12..df2c71a 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(TWL4030_LEDON_LEDB);
>
> /* 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..e23f7ee 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
>
> /* 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..997a7cf 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(TWL4030_LEDON_LEDA | TWL4030_LEDON_LEDB);
> #endif
>
> #ifdef CONFIG_DRIVER_DM9000
> diff --git a/drivers/misc/twl4030_led.c b/drivers/misc/twl4030_led.c
> index bfdafef..d2cc3c8 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(unsigned int ledon_mask)
> {
> - unsigned char byte;
> + unsigned char byte = 0;
>
> - /* enable LED */
> - byte = LEDBPWM | LEDAPWM | LEDBON | LEDAON;
> + /* enable LEDs */
> + if (ledon_mask & TWL4030_LEDON_LEDA)
> + byte |= LEDAPWM | LEDAON;
TWL4030_LEDON_LEDA and LEDAON are the same.
You can move all the #defined twl4030 bits to twl4030.
So there there should be
#define TWL4030_LED_LEDEN_LEDAON (0x1 << 0)
#define TWL4030_LED_LEDEN_LEDBON (0x1 << 1)
#define TWL4030_LED_LEDEN_LEDAPWM (0x1 << 4)
#define TWL4030_LED_LEDEN_LEDBPWM (0x1 << 5)
These should be listed under the LED define
/* LED */
#define TWL4030_LED_LEDEN 0xEE
> + if (ledon_mask & TWL4030_LEDON_LEDB)
> + 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..d0c62c3 100644
> --- a/include/twl4030.h
> +++ b/include/twl4030.h
> @@ -396,6 +396,9 @@ void twl4030_power_mmc_init(void);
> /*
> * LED
> */
> -void twl4030_led_init(void);
> +#define TWL4030_LEDON_LEDA (1 << 0)
> +#define TWL4030_LEDON_LEDB (1 << 1)
> +
> +void twl4030_led_init(unsigned int ledon_mask);
>
> #endif /* TWL4030_H */
^ permalink raw reply [flat|nested] 3+ messages in thread* [U-Boot] [PATCH] TWL4030: make LEDs selectable in twl4030_led_init()
2009-12-02 14:55 ` Tom
@ 2009-12-02 15:44 ` Grazvydas Ignotas
0 siblings, 0 replies; 3+ messages in thread
From: Grazvydas Ignotas @ 2009-12-02 15:44 UTC (permalink / raw)
To: u-boot
On Wed, Dec 2, 2009 at 4:55 PM, Tom <Tom.Rix@windriver.com> wrote:
> Grazvydas Ignotas wrote:
>>
<snip>
>> diff --git a/drivers/misc/twl4030_led.c b/drivers/misc/twl4030_led.c
>> index bfdafef..d2cc3c8 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(unsigned int ledon_mask)
>> ?{
>> - ? ? ? unsigned char byte;
>> + ? ? ? unsigned char byte = 0;
>> ?- ? ? ? /* enable LED */
>> - ? ? ? byte = LEDBPWM | LEDAPWM | LEDBON | LEDAON;
>> + ? ? ? /* enable LEDs */
>> + ? ? ? if (ledon_mask & TWL4030_LEDON_LEDA)
>> + ? ? ? ? ? ? ? byte |= LEDAPWM | LEDAON;
>
> TWL4030_LEDON_LEDA and LEDAON are the same.
> You can move all the #defined twl4030 bits to twl4030.
> So there there should be
>
> #define TWL4030_LED_LEDEN_LEDAON ? ? ? ? ? ? ? ? ? ? ? ?(0x1 << 0)
> #define TWL4030_LED_LEDEN_LEDBON ? ? ? ? ? ? ? ? ? ? ? ?(0x1 << 1)
> #define TWL4030_LED_LEDEN_LEDAPWM ? ? ? ? ? ? ? ? ? ? ? (0x1 << 4)
> #define TWL4030_LED_LEDEN_LEDBPWM ? ? ? ? ? ? ? ? ? ? ? (0x1 << 5)
>
> These should be listed under the LED define
>
> /* LED */
> #define TWL4030_LED_LEDEN ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0xEE
So, do you want twl4030_led_init() argument to take raw LEDEN register
value, or just move TWL4030_LED* defines to twl4030.h? If
twl4030_led_init() will just take register value now, maybe it can be
replaced with twl4030_i2c_write_u8() and drivers/misc/twl4030_led.c
removed, as it just becomes wrapper?
>
>
>> + ? ? ? if (ledon_mask & TWL4030_LEDON_LEDB)
>> + ? ? ? ? ? ? ? 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..d0c62c3 100644
>> --- a/include/twl4030.h
>> +++ b/include/twl4030.h
>> @@ -396,6 +396,9 @@ void twl4030_power_mmc_init(void);
>> ?/*
>> ?* LED
>> ?*/
>> -void twl4030_led_init(void);
>> +#define TWL4030_LEDON_LEDA ? ? (1 << 0)
>> +#define TWL4030_LEDON_LEDB ? ? (1 << 1)
>> +
>> +void twl4030_led_init(unsigned int ledon_mask);
>> ??#endif /* TWL4030_H */
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-12-02 15:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-02 13:08 [U-Boot] [PATCH] TWL4030: make LEDs selectable in twl4030_led_init() Grazvydas Ignotas
2009-12-02 14:55 ` Tom
2009-12-02 15:44 ` Grazvydas Ignotas
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.