linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
       [not found] <1384396537-3486-1-git-send-email-tony@atomide.com>
@ 2013-11-14  2:35 ` Tony Lindgren
  2013-11-14  9:45   ` Peter Ujfalusi
                     ` (2 more replies)
  2013-11-14  2:35 ` [PATCH 6/8] gpio: twl4030: Fix passing of pdata in the device tree case Tony Lindgren
  1 sibling, 3 replies; 12+ messages in thread
From: Tony Lindgren @ 2013-11-14  2:35 UTC (permalink / raw)
  To: linux-arm-kernel, linux-omap; +Cc: Linus Walleij, Peter Ujfalusi, linux-gpio

Commit c111feabe2e2 (gpio: twl4030: Cache the direction and output
states in private data) improved things in general, but caused a
regression for setting the GPIO output direction.

The change reorganized twl_direction_out() and twl_set() and swapped
the function names around in the process. While doing that, a bug got
introduced that's not obvious while reading the patch as it appears
as no change to the code.

The bug is we now call function twl4030_set_gpio_dataout() twice in
both twl_direction_out() and twl_set(). Instead, we should first
call twl_direction_out() in twl_direction_out() followed by
twl4030_set_gpio_dataout() in twl_set().

This regression probably has gone unnoticed for a long time as the
bootloader may have set the GPIO direction properly in many cases.
This fixes at least the LCD panel not turning on omap3 LDP for
example.

Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Cc: linux-gpio@vger.kernel.org
Signed-off-by: Tony Lindgren <tony@atomide.com>
---

If this looks OK, I'd like to merge this as a fix via arm-soc tree
along with the other patches in this series as my later patches
depend on patches in this series.

---
 drivers/gpio/gpio-twl4030.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-twl4030.c b/drivers/gpio/gpio-twl4030.c
index 0c7e891..5738d5a 100644
--- a/drivers/gpio/gpio-twl4030.c
+++ b/drivers/gpio/gpio-twl4030.c
@@ -354,17 +354,18 @@ static void twl_set(struct gpio_chip *chip, unsigned offset, int value)
 static int twl_direction_out(struct gpio_chip *chip, unsigned offset, int value)
 {
 	struct gpio_twl4030_priv *priv = to_gpio_twl4030(chip);
+	int ret = -EINVAL;
 
 	mutex_lock(&priv->mutex);
 	if (offset < TWL4030_GPIO_MAX)
-		twl4030_set_gpio_dataout(offset, value);
+		ret = twl4030_set_gpio_direction(offset, 0);
 
 	priv->direction |= BIT(offset);
 	mutex_unlock(&priv->mutex);
 
 	twl_set(chip, offset, value);
 
-	return 0;
+	return ret;
 }
 
 static int twl_to_irq(struct gpio_chip *chip, unsigned offset)
-- 
1.8.1.1


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

* [PATCH 6/8] gpio: twl4030: Fix passing of pdata in the device tree case
       [not found] <1384396537-3486-1-git-send-email-tony@atomide.com>
  2013-11-14  2:35 ` [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output Tony Lindgren
@ 2013-11-14  2:35 ` Tony Lindgren
  2013-11-18 18:27   ` Tony Lindgren
  1 sibling, 1 reply; 12+ messages in thread
From: Tony Lindgren @ 2013-11-14  2:35 UTC (permalink / raw)
  To: linux-arm-kernel, linux-omap; +Cc: Linus Walleij, linux-gpio

We still have some legacy code needing the callback functions
that won't work properly without platform data. To use platform
data for twl4030-gpio, we need to not trash the possible data.

Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
Signed-off-by: Tony Lindgren <tony@atomide.com>
---

If this looks OK, I'd like to merge this as a fix via arm-soc tree
along with the other patches in this series as my later patches
depend on patches in this series.

---
 drivers/gpio/gpio-twl4030.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-twl4030.c b/drivers/gpio/gpio-twl4030.c
index 5738d5a..e6ecbe3 100644
--- a/drivers/gpio/gpio-twl4030.c
+++ b/drivers/gpio/gpio-twl4030.c
@@ -436,7 +436,8 @@ static int gpio_twl4030_debounce(u32 debounce, u8 mmc_cd)
 
 static int gpio_twl4030_remove(struct platform_device *pdev);
 
-static struct twl4030_gpio_platform_data *of_gpio_twl4030(struct device *dev)
+static struct twl4030_gpio_platform_data *of_gpio_twl4030(struct device *dev,
+				struct twl4030_gpio_platform_data *pdata)
 {
 	struct twl4030_gpio_platform_data *omap_twl_info;
 
@@ -444,6 +445,9 @@ static struct twl4030_gpio_platform_data *of_gpio_twl4030(struct device *dev)
 	if (!omap_twl_info)
 		return NULL;
 
+	if (pdata)
+		memcpy(omap_twl_info, pdata, sizeof(*omap_twl_info));
+
 	omap_twl_info->use_leds = of_property_read_bool(dev->of_node,
 			"ti,use-leds");
 
@@ -501,7 +505,7 @@ no_irqs:
 	mutex_init(&priv->mutex);
 
 	if (node)
-		pdata = of_gpio_twl4030(&pdev->dev);
+		pdata = of_gpio_twl4030(&pdev->dev, pdata);
 
 	if (pdata == NULL) {
 		dev_err(&pdev->dev, "Platform data is missing\n");
-- 
1.8.1.1


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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-11-14  2:35 ` [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output Tony Lindgren
@ 2013-11-14  9:45   ` Peter Ujfalusi
  2013-11-14 17:37     ` Tony Lindgren
  2013-11-18 22:45   ` Linus Walleij
  2013-12-03 13:30   ` Roger Quadros
  2 siblings, 1 reply; 12+ messages in thread
From: Peter Ujfalusi @ 2013-11-14  9:45 UTC (permalink / raw)
  To: Tony Lindgren, linux-arm-kernel, linux-omap; +Cc: Linus Walleij, linux-gpio

Hi Tony,

On 11/14/2013 04:35 AM, Tony Lindgren wrote:
> Commit c111feabe2e2 (gpio: twl4030: Cache the direction and output
> states in private data) improved things in general, but caused a
> regression for setting the GPIO output direction.
> 
> The change reorganized twl_direction_out() and twl_set() and swapped
> the function names around in the process. While doing that, a bug got
> introduced that's not obvious while reading the patch as it appears
> as no change to the code.
> 
> The bug is we now call function twl4030_set_gpio_dataout() twice in
> both twl_direction_out() and twl_set(). Instead, we should first
> call twl_direction_out() in twl_direction_out() followed by
> twl4030_set_gpio_dataout() in twl_set().
> 
> This regression probably has gone unnoticed for a long time as the
> bootloader may have set the GPIO direction properly in many cases.
> This fixes at least the LCD panel not turning on omap3 LDP for
> example.

Thanks for catching this. I have a recollection that I have tested the GPIO
and it appeared to be working fine..

Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
> 
> If this looks OK, I'd like to merge this as a fix via arm-soc tree
> along with the other patches in this series as my later patches
> depend on patches in this series.
> 
> ---
>  drivers/gpio/gpio-twl4030.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-twl4030.c b/drivers/gpio/gpio-twl4030.c
> index 0c7e891..5738d5a 100644
> --- a/drivers/gpio/gpio-twl4030.c
> +++ b/drivers/gpio/gpio-twl4030.c
> @@ -354,17 +354,18 @@ static void twl_set(struct gpio_chip *chip, unsigned offset, int value)
>  static int twl_direction_out(struct gpio_chip *chip, unsigned offset, int value)
>  {
>  	struct gpio_twl4030_priv *priv = to_gpio_twl4030(chip);
> +	int ret = -EINVAL;
>  
>  	mutex_lock(&priv->mutex);
>  	if (offset < TWL4030_GPIO_MAX)
> -		twl4030_set_gpio_dataout(offset, value);
> +		ret = twl4030_set_gpio_direction(offset, 0);
>  
>  	priv->direction |= BIT(offset);
>  	mutex_unlock(&priv->mutex);
>  
>  	twl_set(chip, offset, value);
>  
> -	return 0;
> +	return ret;
>  }
>  
>  static int twl_to_irq(struct gpio_chip *chip, unsigned offset)
> 


-- 
Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-11-14  9:45   ` Peter Ujfalusi
@ 2013-11-14 17:37     ` Tony Lindgren
  0 siblings, 0 replies; 12+ messages in thread
From: Tony Lindgren @ 2013-11-14 17:37 UTC (permalink / raw)
  To: Peter Ujfalusi; +Cc: linux-gpio, Linus Walleij, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [131114 01:46]:
> Hi Tony,
> 
> On 11/14/2013 04:35 AM, Tony Lindgren wrote:
> > Commit c111feabe2e2 (gpio: twl4030: Cache the direction and output
> > states in private data) improved things in general, but caused a
> > regression for setting the GPIO output direction.
> > 
> > The change reorganized twl_direction_out() and twl_set() and swapped
> > the function names around in the process. While doing that, a bug got
> > introduced that's not obvious while reading the patch as it appears
> > as no change to the code.
> > 
> > The bug is we now call function twl4030_set_gpio_dataout() twice in
> > both twl_direction_out() and twl_set(). Instead, we should first
> > call twl_direction_out() in twl_direction_out() followed by
> > twl4030_set_gpio_dataout() in twl_set().
> > 
> > This regression probably has gone unnoticed for a long time as the
> > bootloader may have set the GPIO direction properly in many cases.
> > This fixes at least the LCD panel not turning on omap3 LDP for
> > example.
> 
> Thanks for catching this. I have a recollection that I have tested the GPIO
> and it appeared to be working fine..

Yes it probably worked fine if the bootloader set the direction :)
This is cc stable kind of patch for sure.

Regards,

Tony

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

* Re: [PATCH 6/8] gpio: twl4030: Fix passing of pdata in the device tree case
  2013-11-14  2:35 ` [PATCH 6/8] gpio: twl4030: Fix passing of pdata in the device tree case Tony Lindgren
@ 2013-11-18 18:27   ` Tony Lindgren
  2013-11-18 22:46     ` Linus Walleij
  0 siblings, 1 reply; 12+ messages in thread
From: Tony Lindgren @ 2013-11-18 18:27 UTC (permalink / raw)
  To: linux-arm-kernel, linux-omap; +Cc: Linus Walleij, linux-gpio

* Tony Lindgren <tony@atomide.com> [131113 18:37]:
> We still have some legacy code needing the callback functions
> that won't work properly without platform data. To use platform
> data for twl4030-gpio, we need to not trash the possible data.
> 
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
> 
> If this looks OK, I'd like to merge this as a fix via arm-soc tree
> along with the other patches in this series as my later patches
> depend on patches in this series.

Here's this one with a fix from Fengguang Wu to use struct assignment
instead of memcpy folded in.

Regards,

Tony


From: Tony Lindgren <tony@atomide.com>
Date: Thu, 14 Nov 2013 15:25:08 -0800
Subject: [PATCH] gpio: twl4030: Fix passing of pdata in the device tree case

We still have some legacy code needing the callback functions
that won't work properly without platform data. To use platform
data for twl4030-gpio, we need to not trash the possible data.

Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
[tony@atomide.com: folded in fix from Fengguang to use struct assignment]
Signed-off-by: Tony Lindgren <tony@atomide.com>

--- a/drivers/gpio/gpio-twl4030.c
+++ b/drivers/gpio/gpio-twl4030.c
@@ -436,7 +436,8 @@ static int gpio_twl4030_debounce(u32 debounce, u8 mmc_cd)
 
 static int gpio_twl4030_remove(struct platform_device *pdev);
 
-static struct twl4030_gpio_platform_data *of_gpio_twl4030(struct device *dev)
+static struct twl4030_gpio_platform_data *of_gpio_twl4030(struct device *dev,
+				struct twl4030_gpio_platform_data *pdata)
 {
 	struct twl4030_gpio_platform_data *omap_twl_info;
 
@@ -444,6 +445,9 @@ static struct twl4030_gpio_platform_data *of_gpio_twl4030(struct device *dev)
 	if (!omap_twl_info)
 		return NULL;
 
+	if (pdata)
+		*omap_twl_info = *pdata;
+
 	omap_twl_info->use_leds = of_property_read_bool(dev->of_node,
 			"ti,use-leds");
 
@@ -501,7 +505,7 @@ no_irqs:
 	mutex_init(&priv->mutex);
 
 	if (node)
-		pdata = of_gpio_twl4030(&pdev->dev);
+		pdata = of_gpio_twl4030(&pdev->dev, pdata);
 
 	if (pdata == NULL) {
 		dev_err(&pdev->dev, "Platform data is missing\n");

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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-11-14  2:35 ` [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output Tony Lindgren
  2013-11-14  9:45   ` Peter Ujfalusi
@ 2013-11-18 22:45   ` Linus Walleij
  2013-12-03 13:30   ` Roger Quadros
  2 siblings, 0 replies; 12+ messages in thread
From: Linus Walleij @ 2013-11-18 22:45 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: linux-arm-kernel@lists.infradead.org, Linux-OMAP, Peter Ujfalusi,
	linux-gpio@vger.kernel.org

On Thu, Nov 14, 2013 at 3:35 AM, Tony Lindgren <tony@atomide.com> wrote:

> Commit c111feabe2e2 (gpio: twl4030: Cache the direction and output
> states in private data) improved things in general, but caused a
> regression for setting the GPIO output direction.
>
> The change reorganized twl_direction_out() and twl_set() and swapped
> the function names around in the process. While doing that, a bug got
> introduced that's not obvious while reading the patch as it appears
> as no change to the code.
>
> The bug is we now call function twl4030_set_gpio_dataout() twice in
> both twl_direction_out() and twl_set(). Instead, we should first
> call twl_direction_out() in twl_direction_out() followed by
> twl4030_set_gpio_dataout() in twl_set().
>
> This regression probably has gone unnoticed for a long time as the
> bootloader may have set the GPIO direction properly in many cases.
> This fixes at least the LCD panel not turning on omap3 LDP for
> example.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>
> If this looks OK, I'd like to merge this as a fix via arm-soc tree
> along with the other patches in this series as my later patches
> depend on patches in this series.

Sure:
Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

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

* Re: [PATCH 6/8] gpio: twl4030: Fix passing of pdata in the device tree case
  2013-11-18 18:27   ` Tony Lindgren
@ 2013-11-18 22:46     ` Linus Walleij
  0 siblings, 0 replies; 12+ messages in thread
From: Linus Walleij @ 2013-11-18 22:46 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: linux-arm-kernel@lists.infradead.org, Linux-OMAP,
	linux-gpio@vger.kernel.org

On Mon, Nov 18, 2013 at 7:27 PM, Tony Lindgren <tony@atomide.com> wrote:
> * Tony Lindgren <tony@atomide.com> [131113 18:37]:
>> We still have some legacy code needing the callback functions
>> that won't work properly without platform data. To use platform
>> data for twl4030-gpio, we need to not trash the possible data.
>>
>> Cc: Linus Walleij <linus.walleij@linaro.org>
>> Cc: linux-gpio@vger.kernel.org
>> Signed-off-by: Tony Lindgren <tony@atomide.com>
>> ---
>>
>> If this looks OK, I'd like to merge this as a fix via arm-soc tree
>> along with the other patches in this series as my later patches
>> depend on patches in this series.
>
> Here's this one with a fix from Fengguang Wu to use struct assignment
> instead of memcpy folded in.

Looks allright:
Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-11-14  2:35 ` [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output Tony Lindgren
  2013-11-14  9:45   ` Peter Ujfalusi
  2013-11-18 22:45   ` Linus Walleij
@ 2013-12-03 13:30   ` Roger Quadros
  2013-12-09 13:09     ` Linus Walleij
  2 siblings, 1 reply; 12+ messages in thread
From: Roger Quadros @ 2013-12-03 13:30 UTC (permalink / raw)
  To: Tony Lindgren, linux-arm-kernel, linux-omap
  Cc: Linus Walleij, Peter Ujfalusi, linux-gpio

Hi Tony,

On 11/14/2013 04:35 AM, Tony Lindgren wrote:
> Commit c111feabe2e2 (gpio: twl4030: Cache the direction and output
> states in private data) improved things in general, but caused a
> regression for setting the GPIO output direction.
> 
> The change reorganized twl_direction_out() and twl_set() and swapped
> the function names around in the process. While doing that, a bug got
> introduced that's not obvious while reading the patch as it appears
> as no change to the code.
> 
> The bug is we now call function twl4030_set_gpio_dataout() twice in
> both twl_direction_out() and twl_set(). Instead, we should first
> call twl_direction_out() in twl_direction_out() followed by
> twl4030_set_gpio_dataout() in twl_set().
> 
> This regression probably has gone unnoticed for a long time as the
> bootloader may have set the GPIO direction properly in many cases.
> This fixes at least the LCD panel not turning on omap3 LDP for
> example.
> 
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
> 
> If this looks OK, I'd like to merge this as a fix via arm-soc tree
> along with the other patches in this series as my later patches
> depend on patches in this series.

This patch causes a regression with LED outputs (GPO) on twl4030 on 3.13-rc2.
As one of the LED GPO is used for USB host on beagleboard, it will cause failure
of USB host probe.

I'll explain why below.
> 
> ---
>  drivers/gpio/gpio-twl4030.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-twl4030.c b/drivers/gpio/gpio-twl4030.c
> index 0c7e891..5738d5a 100644
> --- a/drivers/gpio/gpio-twl4030.c
> +++ b/drivers/gpio/gpio-twl4030.c
> @@ -354,17 +354,18 @@ static void twl_set(struct gpio_chip *chip, unsigned offset, int value)
>  static int twl_direction_out(struct gpio_chip *chip, unsigned offset, int value)
>  {
>  	struct gpio_twl4030_priv *priv = to_gpio_twl4030(chip);
> +	int ret = -EINVAL;
>  
>  	mutex_lock(&priv->mutex);
>  	if (offset < TWL4030_GPIO_MAX)
> -		twl4030_set_gpio_dataout(offset, value);
> +		ret = twl4030_set_gpio_direction(offset, 0);

twl_direction_out() is supposed to return 0 on success and non-zero only on failure.

for (offset >= TWL4030_GPIO_MAX) i.e. LED output case we now return -EINVAL, which
causes the LED GPO set_direction_out to fail. LED outputs are always outputs so
this function shouldn't fail.

>  
>  	priv->direction |= BIT(offset);
>  	mutex_unlock(&priv->mutex);
>  
>  	twl_set(chip, offset, value);
>  
> -	return 0;
> +	return ret;
>  }
>  
>  static int twl_to_irq(struct gpio_chip *chip, unsigned offset)
> 


Below is a proposed fix for this.

>From 7c36c8952ee3c7220ea21396cd3f84a1f9e9ea73 Mon Sep 17 00:00:00 2001
From: Roger Quadros <rogerq@ti.com>
Date: Tue, 3 Dec 2013 15:24:05 +0200
Subject: [PATCH] gpio: twl4030: Fix regression for twl gpio LED output

Commit 0b2aa8be introduced a regression that causes failure
in setting LED GPO direction to OUT.

This causes USB host probe failures for Beagleboard C4.

[    2.075469] platform usb_phy_gen_xceiv.2: Driver usb_phy_gen_xceiv requests probe deferral
[    2.090454] hsusb2_vcc: Failed to request enable GPIO510: -22
[    2.100982] reg-fixed-voltage reg-fixed-voltage.0.auto: Failed to register regulator: -22
[    2.109954] reg-fixed-voltage: probe of reg-fixed-voltage.0.auto failed with error -22

direction_out/direction_in must return 0 if the operation succeeded.

Signed-off-by: Roger Quadros <rogerq@ti.com>
---
 drivers/gpio/gpio-twl4030.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/gpio/gpio-twl4030.c b/drivers/gpio/gpio-twl4030.c
index b97d6a6..0999ed1 100644
--- a/drivers/gpio/gpio-twl4030.c
+++ b/drivers/gpio/gpio-twl4030.c
@@ -294,13 +294,13 @@ out:
 static int twl_direction_in(struct gpio_chip *chip, unsigned offset)
 {
 	struct gpio_twl4030_priv *priv = to_gpio_twl4030(chip);
-	int ret;
+	int ret = 0;
 
 	mutex_lock(&priv->mutex);
 	if (offset < TWL4030_GPIO_MAX)
-		ret = twl4030_set_gpio_direction(offset, 1);
+		twl4030_set_gpio_direction(offset, 1);
 	else
-		ret = -EINVAL;
+		ret = -EINVAL;	/* LED outputs can't be set as input */
 
 	if (!ret)
 		priv->direction &= ~BIT(offset);
@@ -354,18 +354,21 @@ static void twl_set(struct gpio_chip *chip, unsigned offset, int value)
 static int twl_direction_out(struct gpio_chip *chip, unsigned offset, int value)
 {
 	struct gpio_twl4030_priv *priv = to_gpio_twl4030(chip);
-	int ret = -EINVAL;
 
 	mutex_lock(&priv->mutex);
 	if (offset < TWL4030_GPIO_MAX)
-		ret = twl4030_set_gpio_direction(offset, 0);
+		twl4030_set_gpio_direction(offset, 0);
+
+	/*
+	 *  LED gpio's i.e. offset >= TWL4030_GPIO_MAX are always output
+	 */
 
 	priv->direction |= BIT(offset);
 	mutex_unlock(&priv->mutex);
 
 	twl_set(chip, offset, value);
 
-	return ret;
+	return 0;
 }
 
 static int twl_to_irq(struct gpio_chip *chip, unsigned offset)
-- 
1.8.3.2



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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-12-03 13:30   ` Roger Quadros
@ 2013-12-09 13:09     ` Linus Walleij
  2013-12-09 17:10       ` Tony Lindgren
  0 siblings, 1 reply; 12+ messages in thread
From: Linus Walleij @ 2013-12-09 13:09 UTC (permalink / raw)
  To: Roger Quadros
  Cc: Tony Lindgren, linux-arm-kernel@lists.infradead.org, Linux-OMAP,
	Peter Ujfalusi, linux-gpio@vger.kernel.org

On Tue, Dec 3, 2013 at 2:30 PM, Roger Quadros <rogerq@ti.com> wrote:

(...)
> This patch causes a regression with LED outputs (GPO) on twl4030 on 3.13-rc2.
> As one of the LED GPO is used for USB host on beagleboard, it will cause failure
> of USB host probe.
(...)
> Below is a proposed fix for this.

Roger, Tony: what happened with this? Have you hashed this out?
I ACK Roger's fixup too if that needs to be merged into the OMAP
tree.

Yours,
Linus Walleij

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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-12-09 13:09     ` Linus Walleij
@ 2013-12-09 17:10       ` Tony Lindgren
  2013-12-10 12:17         ` Linus Walleij
  0 siblings, 1 reply; 12+ messages in thread
From: Tony Lindgren @ 2013-12-09 17:10 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Roger Quadros, linux-arm-kernel@lists.infradead.org, Linux-OMAP,
	Peter Ujfalusi, linux-gpio@vger.kernel.org

* Linus Walleij <linus.walleij@linaro.org> [131209 05:10]:
> On Tue, Dec 3, 2013 at 2:30 PM, Roger Quadros <rogerq@ti.com> wrote:
> 
> (...)
> > This patch causes a regression with LED outputs (GPO) on twl4030 on 3.13-rc2.
> > As one of the LED GPO is used for USB host on beagleboard, it will cause failure
> > of USB host probe.
> (...)
> > Below is a proposed fix for this.
> 
> Roger, Tony: what happened with this? Have you hashed this out?
> I ACK Roger's fixup too if that needs to be merged into the OMAP
> tree.

There's an updated version from Roger posted that I acked:

[PATCH v2 1/1] gpio: twl4030: Fix regression for twl gpio LED output

http://lkml.org/lkml/2013/12/5/65

I also commented on the dependencies there, but basically you can
pick it up unless you want me to. Should be cc stable as well.

Regards,

Tony

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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-12-09 17:10       ` Tony Lindgren
@ 2013-12-10 12:17         ` Linus Walleij
  2013-12-10 15:20           ` Tony Lindgren
  0 siblings, 1 reply; 12+ messages in thread
From: Linus Walleij @ 2013-12-10 12:17 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Roger Quadros, linux-arm-kernel@lists.infradead.org, Linux-OMAP,
	Peter Ujfalusi, linux-gpio@vger.kernel.org

On Mon, Dec 9, 2013 at 6:10 PM, Tony Lindgren <tony@atomide.com> wrote:
> * Linus Walleij <linus.walleij@linaro.org> [131209 05:10]:
>> On Tue, Dec 3, 2013 at 2:30 PM, Roger Quadros <rogerq@ti.com> wrote:
>>
>> (...)
>> > This patch causes a regression with LED outputs (GPO) on twl4030 on 3.13-rc2.
>> > As one of the LED GPO is used for USB host on beagleboard, it will cause failure
>> > of USB host probe.
>> (...)
>> > Below is a proposed fix for this.
>>
>> Roger, Tony: what happened with this? Have you hashed this out?
>> I ACK Roger's fixup too if that needs to be merged into the OMAP
>> tree.
>
> There's an updated version from Roger posted that I acked:
>
> [PATCH v2 1/1] gpio: twl4030: Fix regression for twl gpio LED output
>
> http://lkml.org/lkml/2013/12/5/65
>
> I also commented on the dependencies there, but basically you can
> pick it up unless you want me to. Should be cc stable as well.

OK I have picked this now, I'll add a CC to stable.

Yours,
Linus Walleij

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

* Re: [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output
  2013-12-10 12:17         ` Linus Walleij
@ 2013-12-10 15:20           ` Tony Lindgren
  0 siblings, 0 replies; 12+ messages in thread
From: Tony Lindgren @ 2013-12-10 15:20 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Roger Quadros, linux-arm-kernel@lists.infradead.org, Linux-OMAP,
	Peter Ujfalusi, linux-gpio@vger.kernel.org

* Linus Walleij <linus.walleij@linaro.org> [131210 04:18]:
> On Mon, Dec 9, 2013 at 6:10 PM, Tony Lindgren <tony@atomide.com> wrote:
> > * Linus Walleij <linus.walleij@linaro.org> [131209 05:10]:
> >> On Tue, Dec 3, 2013 at 2:30 PM, Roger Quadros <rogerq@ti.com> wrote:
> >>
> >> (...)
> >> > This patch causes a regression with LED outputs (GPO) on twl4030 on 3.13-rc2.
> >> > As one of the LED GPO is used for USB host on beagleboard, it will cause failure
> >> > of USB host probe.
> >> (...)
> >> > Below is a proposed fix for this.
> >>
> >> Roger, Tony: what happened with this? Have you hashed this out?
> >> I ACK Roger's fixup too if that needs to be merged into the OMAP
> >> tree.
> >
> > There's an updated version from Roger posted that I acked:
> >
> > [PATCH v2 1/1] gpio: twl4030: Fix regression for twl gpio LED output
> >
> > http://lkml.org/lkml/2013/12/5/65
> >
> > I also commented on the dependencies there, but basically you can
> > pick it up unless you want me to. Should be cc stable as well.
> 
> OK I have picked this now, I'll add a CC to stable.

Thanks!

Tony

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

end of thread, other threads:[~2013-12-10 15:20 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1384396537-3486-1-git-send-email-tony@atomide.com>
2013-11-14  2:35 ` [PATCH 5/8] gpio: twl4030: Fix regression for twl gpio output Tony Lindgren
2013-11-14  9:45   ` Peter Ujfalusi
2013-11-14 17:37     ` Tony Lindgren
2013-11-18 22:45   ` Linus Walleij
2013-12-03 13:30   ` Roger Quadros
2013-12-09 13:09     ` Linus Walleij
2013-12-09 17:10       ` Tony Lindgren
2013-12-10 12:17         ` Linus Walleij
2013-12-10 15:20           ` Tony Lindgren
2013-11-14  2:35 ` [PATCH 6/8] gpio: twl4030: Fix passing of pdata in the device tree case Tony Lindgren
2013-11-18 18:27   ` Tony Lindgren
2013-11-18 22:46     ` Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).