public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [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] [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 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 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] [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, 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] [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] [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