* [U-Boot] [PATCH 0/3] gpio_led driver updates
@ 2013-11-07 23:03 Igor Grinberg
2013-11-07 23:03 ` [U-Boot] [PATCH 1/3] README: document the CONFIG_GPIO_LED symbol Igor Grinberg
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Igor Grinberg @ 2013-11-07 23:03 UTC (permalink / raw)
To: u-boot
This simple series enhances the gpio_led driver a bit by
some documentation, checking the return value of gpio_request() call,
and finally adding support for inverted polarity GPIOs.
Igor Grinberg (3):
README: document the CONFIG_GPIO_LED symbol
gpio_led: check gpio_request() return value
gpio_led: add support for inverted polarity
README | 15 +++++++++++++++
drivers/misc/gpio_led.c | 33 ++++++++++++++++++++++++++++++---
2 files changed, 45 insertions(+), 3 deletions(-)
--
1.8.1.5
^ permalink raw reply [flat|nested] 10+ messages in thread* [U-Boot] [PATCH 1/3] README: document the CONFIG_GPIO_LED symbol 2013-11-07 23:03 [U-Boot] [PATCH 0/3] gpio_led driver updates Igor Grinberg @ 2013-11-07 23:03 ` Igor Grinberg 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini 2013-11-07 23:03 ` [U-Boot] [PATCH 2/3] gpio_led: check gpio_request() return value Igor Grinberg 2013-11-07 23:03 ` [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity Igor Grinberg 2 siblings, 1 reply; 10+ messages in thread From: Igor Grinberg @ 2013-11-07 23:03 UTC (permalink / raw) To: u-boot The CONFIG_GPIO_LED symbol does not have any documentation in the README file. Document the CONFIG_GPIO_LED symbol. Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> --- README | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README b/README index 09662a4..55c71fa 100644 --- a/README +++ b/README @@ -1951,6 +1951,14 @@ CBFS (Coreboot Filesystem) support kernel). Defining CONFIG_STATUS_LED enables this feature in U-Boot. + Additional options: + + CONFIG_GPIO_LED + The status LED can be connected to a GPIO pin. + In such cases, the gpio_led driver can be used as a + status LED backend implementation. Define CONFIG_GPIO_LED + to include the gpio_led driver in the U-Boot binary. + - CAN Support: CONFIG_CAN_DRIVER Defining CONFIG_CAN_DRIVER enables CAN driver support -- 1.8.1.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [U-Boot, 1/3] README: document the CONFIG_GPIO_LED symbol 2013-11-07 23:03 ` [U-Boot] [PATCH 1/3] README: document the CONFIG_GPIO_LED symbol Igor Grinberg @ 2013-11-25 21:56 ` Tom Rini 0 siblings, 0 replies; 10+ messages in thread From: Tom Rini @ 2013-11-25 21:56 UTC (permalink / raw) To: u-boot On Fri, Nov 08, 2013 at 01:03:50AM +0200, Igor Grinberg wrote: > The CONFIG_GPIO_LED symbol does not have any documentation in the README > file. Document the CONFIG_GPIO_LED symbol. > > Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20131125/a6d7f856/attachment.pgp> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/3] gpio_led: check gpio_request() return value 2013-11-07 23:03 [U-Boot] [PATCH 0/3] gpio_led driver updates Igor Grinberg 2013-11-07 23:03 ` [U-Boot] [PATCH 1/3] README: document the CONFIG_GPIO_LED symbol Igor Grinberg @ 2013-11-07 23:03 ` Igor Grinberg 2013-11-10 15:27 ` Igor Grinberg 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini 2013-11-07 23:03 ` [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity Igor Grinberg 2 siblings, 2 replies; 10+ messages in thread From: Igor Grinberg @ 2013-11-07 23:03 UTC (permalink / raw) To: u-boot Add a check for the gpio_request() function return value and do not try to configure the GPIO if the gpio_request() call fails. Also, print an error message indicating the gpio_request() has failed. Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> --- drivers/misc/gpio_led.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/misc/gpio_led.c b/drivers/misc/gpio_led.c index 3fedddc..de20419 100644 --- a/drivers/misc/gpio_led.c +++ b/drivers/misc/gpio_led.c @@ -11,7 +11,11 @@ void __led_init(led_id_t mask, int state) { - gpio_request(mask, "gpio_led"); + if (gpio_request(mask, "gpio_led") != 0) { + printf("%s: failed requesting GPIO%lu!\n", __func__, mask); + return; + } + gpio_direction_output(mask, state == STATUS_LED_ON); } -- 1.8.1.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/3] gpio_led: check gpio_request() return value 2013-11-07 23:03 ` [U-Boot] [PATCH 2/3] gpio_led: check gpio_request() return value Igor Grinberg @ 2013-11-10 15:27 ` Igor Grinberg 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini 1 sibling, 0 replies; 10+ messages in thread From: Igor Grinberg @ 2013-11-10 15:27 UTC (permalink / raw) To: u-boot On 11/08/13 01:03, Igor Grinberg wrote: > Add a check for the gpio_request() function return value and do not try > to configure the GPIO if the gpio_request() call fails. > Also, print an error message indicating the gpio_request() has failed. > > Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> Tested-by: Ilya Ledvich <ilya@compulab.co.il> > --- > drivers/misc/gpio_led.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/misc/gpio_led.c b/drivers/misc/gpio_led.c > index 3fedddc..de20419 100644 > --- a/drivers/misc/gpio_led.c > +++ b/drivers/misc/gpio_led.c > @@ -11,7 +11,11 @@ > > void __led_init(led_id_t mask, int state) > { > - gpio_request(mask, "gpio_led"); > + if (gpio_request(mask, "gpio_led") != 0) { > + printf("%s: failed requesting GPIO%lu!\n", __func__, mask); > + return; > + } > + > gpio_direction_output(mask, state == STATUS_LED_ON); > } > > -- Regards, Igor. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [U-Boot, 2/3] gpio_led: check gpio_request() return value 2013-11-07 23:03 ` [U-Boot] [PATCH 2/3] gpio_led: check gpio_request() return value Igor Grinberg 2013-11-10 15:27 ` Igor Grinberg @ 2013-11-25 21:56 ` Tom Rini 1 sibling, 0 replies; 10+ messages in thread From: Tom Rini @ 2013-11-25 21:56 UTC (permalink / raw) To: u-boot On Fri, Nov 08, 2013 at 01:03:51AM +0200, Igor Grinberg wrote: > Add a check for the gpio_request() function return value and do not try > to configure the GPIO if the gpio_request() call fails. > Also, print an error message indicating the gpio_request() has failed. > > Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> > Tested-by: Ilya Ledvich <ilya@compulab.co.il> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20131125/cfd2d937/attachment.pgp> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity 2013-11-07 23:03 [U-Boot] [PATCH 0/3] gpio_led driver updates Igor Grinberg 2013-11-07 23:03 ` [U-Boot] [PATCH 1/3] README: document the CONFIG_GPIO_LED symbol Igor Grinberg 2013-11-07 23:03 ` [U-Boot] [PATCH 2/3] gpio_led: check gpio_request() return value Igor Grinberg @ 2013-11-07 23:03 ` Igor Grinberg 2013-11-10 15:28 ` Igor Grinberg ` (2 more replies) 2 siblings, 3 replies; 10+ messages in thread From: Igor Grinberg @ 2013-11-07 23:03 UTC (permalink / raw) To: u-boot Some GPIO connected LEDs have inverted polarity. Introduce new config option: CONFIG_GPIO_LED_INVERTED_TABLE for the specifying the inverted GPIO LEDs list and add support for this in the gpio_led driver. Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> --- README | 7 +++++++ drivers/misc/gpio_led.c | 27 +++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/README b/README index 55c71fa..b8bad51 100644 --- a/README +++ b/README @@ -1959,6 +1959,13 @@ CBFS (Coreboot Filesystem) support status LED backend implementation. Define CONFIG_GPIO_LED to include the gpio_led driver in the U-Boot binary. + CONFIG_GPIO_LED_INVERTED_TABLE + Some GPIO connected LEDs may have inverted polarity in which + case the GPIO high value corresponds to LED off state and + GPIO low value corresponds to LED on state. + In such cases CONFIG_GPIO_LED_INVERTED_TABLE may be defined + with a list of GPIO LEDs that have inverted polarity. + - CAN Support: CONFIG_CAN_DRIVER Defining CONFIG_CAN_DRIVER enables CAN driver support diff --git a/drivers/misc/gpio_led.c b/drivers/misc/gpio_led.c index de20419..3e95727 100644 --- a/drivers/misc/gpio_led.c +++ b/drivers/misc/gpio_led.c @@ -9,19 +9,42 @@ #include <status_led.h> #include <asm/gpio.h> +#ifndef CONFIG_GPIO_LED_INVERTED_TABLE +#define CONFIG_GPIO_LED_INVERTED_TABLE {} +#endif + +static led_id_t gpio_led_inv[] = CONFIG_GPIO_LED_INVERTED_TABLE; + +static int gpio_led_gpio_value(led_id_t mask, int state) +{ + int i, gpio_value = (state == STATUS_LED_ON); + + for (i = 0; i < ARRAY_SIZE(gpio_led_inv); i++) { + if (gpio_led_inv[i] == mask) + gpio_value = !gpio_value; + } + + return gpio_value; +} + void __led_init(led_id_t mask, int state) { + int gpio_value; + if (gpio_request(mask, "gpio_led") != 0) { printf("%s: failed requesting GPIO%lu!\n", __func__, mask); return; } - gpio_direction_output(mask, state == STATUS_LED_ON); + gpio_value = gpio_led_gpio_value(mask, state); + gpio_direction_output(mask, gpio_value); } void __led_set(led_id_t mask, int state) { - gpio_set_value(mask, state == STATUS_LED_ON); + int gpio_value = gpio_led_gpio_value(mask, state); + + gpio_set_value(mask, gpio_value); } void __led_toggle(led_id_t mask) -- 1.8.1.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity 2013-11-07 23:03 ` [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity Igor Grinberg @ 2013-11-10 15:28 ` Igor Grinberg 2013-11-11 1:19 ` Otavio Salvador 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini 2 siblings, 0 replies; 10+ messages in thread From: Igor Grinberg @ 2013-11-10 15:28 UTC (permalink / raw) To: u-boot On 11/08/13 01:03, Igor Grinberg wrote: > Some GPIO connected LEDs have inverted polarity. > Introduce new config option: CONFIG_GPIO_LED_INVERTED_TABLE for the > specifying the inverted GPIO LEDs list and add support for this in the > gpio_led driver. > > Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> Tested-by: Ilya Ledvich <ilya@compulab.co.il> on cm-t335. > --- > README | 7 +++++++ > drivers/misc/gpio_led.c | 27 +++++++++++++++++++++++++-- > 2 files changed, 32 insertions(+), 2 deletions(-) > > diff --git a/README b/README > index 55c71fa..b8bad51 100644 > --- a/README > +++ b/README > @@ -1959,6 +1959,13 @@ CBFS (Coreboot Filesystem) support > status LED backend implementation. Define CONFIG_GPIO_LED > to include the gpio_led driver in the U-Boot binary. > > + CONFIG_GPIO_LED_INVERTED_TABLE > + Some GPIO connected LEDs may have inverted polarity in which > + case the GPIO high value corresponds to LED off state and > + GPIO low value corresponds to LED on state. > + In such cases CONFIG_GPIO_LED_INVERTED_TABLE may be defined > + with a list of GPIO LEDs that have inverted polarity. > + > - CAN Support: CONFIG_CAN_DRIVER > > Defining CONFIG_CAN_DRIVER enables CAN driver support > diff --git a/drivers/misc/gpio_led.c b/drivers/misc/gpio_led.c > index de20419..3e95727 100644 > --- a/drivers/misc/gpio_led.c > +++ b/drivers/misc/gpio_led.c > @@ -9,19 +9,42 @@ > #include <status_led.h> > #include <asm/gpio.h> > > +#ifndef CONFIG_GPIO_LED_INVERTED_TABLE > +#define CONFIG_GPIO_LED_INVERTED_TABLE {} > +#endif > + > +static led_id_t gpio_led_inv[] = CONFIG_GPIO_LED_INVERTED_TABLE; > + > +static int gpio_led_gpio_value(led_id_t mask, int state) > +{ > + int i, gpio_value = (state == STATUS_LED_ON); > + > + for (i = 0; i < ARRAY_SIZE(gpio_led_inv); i++) { > + if (gpio_led_inv[i] == mask) > + gpio_value = !gpio_value; > + } > + > + return gpio_value; > +} > + > void __led_init(led_id_t mask, int state) > { > + int gpio_value; > + > if (gpio_request(mask, "gpio_led") != 0) { > printf("%s: failed requesting GPIO%lu!\n", __func__, mask); > return; > } > > - gpio_direction_output(mask, state == STATUS_LED_ON); > + gpio_value = gpio_led_gpio_value(mask, state); > + gpio_direction_output(mask, gpio_value); > } > > void __led_set(led_id_t mask, int state) > { > - gpio_set_value(mask, state == STATUS_LED_ON); > + int gpio_value = gpio_led_gpio_value(mask, state); > + > + gpio_set_value(mask, gpio_value); > } > > void __led_toggle(led_id_t mask) > -- Regards, Igor. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity 2013-11-07 23:03 ` [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity Igor Grinberg 2013-11-10 15:28 ` Igor Grinberg @ 2013-11-11 1:19 ` Otavio Salvador 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini 2 siblings, 0 replies; 10+ messages in thread From: Otavio Salvador @ 2013-11-11 1:19 UTC (permalink / raw) To: u-boot On Thu, Nov 7, 2013 at 9:03 PM, Igor Grinberg <grinberg@compulab.co.il> wrote: > Some GPIO connected LEDs have inverted polarity. > Introduce new config option: CONFIG_GPIO_LED_INVERTED_TABLE for the > specifying the inverted GPIO LEDs list and add support for this in the > gpio_led driver. > > Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> Neat; I will test this in the board I have same situation and see if it works for my case fully but this seems to be a lean and simply solution for the issue. -- Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [U-Boot, 3/3] gpio_led: add support for inverted polarity 2013-11-07 23:03 ` [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity Igor Grinberg 2013-11-10 15:28 ` Igor Grinberg 2013-11-11 1:19 ` Otavio Salvador @ 2013-11-25 21:56 ` Tom Rini 2 siblings, 0 replies; 10+ messages in thread From: Tom Rini @ 2013-11-25 21:56 UTC (permalink / raw) To: u-boot On Fri, Nov 08, 2013 at 01:03:52AM +0200, Igor Grinberg wrote: > Some GPIO connected LEDs have inverted polarity. > Introduce new config option: CONFIG_GPIO_LED_INVERTED_TABLE for the > specifying the inverted GPIO LEDs list and add support for this in the > gpio_led driver. > > Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> > Tested-by: Ilya Ledvich <ilya@compulab.co.il> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20131125/f5db6619/attachment.pgp> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-11-25 21:56 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-11-07 23:03 [U-Boot] [PATCH 0/3] gpio_led driver updates Igor Grinberg 2013-11-07 23:03 ` [U-Boot] [PATCH 1/3] README: document the CONFIG_GPIO_LED symbol Igor Grinberg 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini 2013-11-07 23:03 ` [U-Boot] [PATCH 2/3] gpio_led: check gpio_request() return value Igor Grinberg 2013-11-10 15:27 ` Igor Grinberg 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini 2013-11-07 23:03 ` [U-Boot] [PATCH 3/3] gpio_led: add support for inverted polarity Igor Grinberg 2013-11-10 15:28 ` Igor Grinberg 2013-11-11 1:19 ` Otavio Salvador 2013-11-25 21:56 ` [U-Boot] [U-Boot, " Tom Rini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox