linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/3] OMAP3: beaglexm: GPIO fixes
       [not found] <[PATCH v4 0/3] OMAP3: beaglexm: GPIO fixes>
@ 2011-01-11 17:13 ` Nishanth Menon
  2011-01-11 17:13 ` [PATCH v5 1/3] omap3: beaglexm: fix EHCI power up GPIO dir Nishanth Menon
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Nishanth Menon @ 2011-01-11 17:13 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,
revision 5 of this series.
As discussed in the threads:
http://thread.gmane.org/gmane.linux.ports.arm.omap/47807/
http://marc.info/?t=121540030800004&r=1&w=2

here is the split up series with commit message after discussion:
http://www.beagleboard.org/irclogs/index.php?date=2011-01-06#T19:12:21

Koen Kooi (3):
  omap3: beaglexm: fix EHCI power up GPIO dir
  omap3: beaglexm: fix DVI reset GPIO
  omap3: beaglexm: fix power on of DVI

 arch/arm/mach-omap2/board-omap3beagle.c |   38 ++++++++++++++++++++++++++-----
 1 files changed, 32 insertions(+), 6 deletions(-)

v5:
	review comment incorporation - gpio_direction_output removable.

v4: http://marc.info/?t=129444130100001&r=1&w=2
  no functional change.
  minor cleanups in commit logs incorporating offline feedback

v3: http://marc.info/?t=129434384700006&r=1&w=2
	split up the series, addressed review comments

v2: http://marc.info/?t=129276977900002&r=1&w=2
	Reenable the PMU stat LED
v1: http://marc.info/?t=129172571000001&r=1&w=2

Regards,
Nishanth Menon

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

* [PATCH v5 1/3] omap3: beaglexm: fix EHCI power up GPIO dir
       [not found] <[PATCH v4 0/3] OMAP3: beaglexm: GPIO fixes>
  2011-01-11 17:13 ` [PATCH v5 0/3] OMAP3: beaglexm: GPIO fixes Nishanth Menon
@ 2011-01-11 17:13 ` Nishanth Menon
  2011-01-11 17:13 ` [PATCH v5 2/3] omap3: beaglexm: fix DVI reset GPIO Nishanth Menon
  2011-01-11 17:13 ` [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI Nishanth Menon
  3 siblings, 0 replies; 8+ messages in thread
From: Nishanth Menon @ 2011-01-11 17:13 UTC (permalink / raw)
  To: linux-arm-kernel

From: Koen Kooi <koen@beagleboard.org>

EHCI enable power pin is inverted (active high) in comparison
to vanilla beagle which is active low. Handle this case conditionally.

Without this fix, Beagle XM 4 port EHCI will not function and no
networking will be available

[nm at ti.com: split up, added descriptive changelogs]
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Koen Kooi <koen@beagleboard.org>
---
 arch/arm/mach-omap2/board-omap3beagle.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 6c12760..af1166b 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -297,9 +297,15 @@ static int beagle_twl_gpio_setup(struct device *dev,
 	gpio_request(gpio + 1, "EHCI_nOC");
 	gpio_direction_input(gpio + 1);
 
-	/* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
+	/*
+	 * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
+	 * high / others active low)
+	 */
 	gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
-	gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
+	if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
+		gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
+	else
+		gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
 
 	/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
 	gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
-- 
1.6.3.3

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

* [PATCH v5 2/3] omap3: beaglexm: fix DVI reset GPIO
       [not found] <[PATCH v4 0/3] OMAP3: beaglexm: GPIO fixes>
  2011-01-11 17:13 ` [PATCH v5 0/3] OMAP3: beaglexm: GPIO fixes Nishanth Menon
  2011-01-11 17:13 ` [PATCH v5 1/3] omap3: beaglexm: fix EHCI power up GPIO dir Nishanth Menon
@ 2011-01-11 17:13 ` Nishanth Menon
  2011-01-11 17:13 ` [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI Nishanth Menon
  3 siblings, 0 replies; 8+ messages in thread
From: Nishanth Menon @ 2011-01-11 17:13 UTC (permalink / raw)
  To: linux-arm-kernel

From: Koen Kooi <koen@beagleboard.org>

GPIO reset line for Beagle XM is different from vanilla beagle
so we populate it as part of gpio update routine.

This in part fixes the issue of display not functioning on beagle XM
platform.

[nm at ti.com: split up, added descriptive changelogs]
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Koen Kooi <koen@beagleboard.org>
---
 arch/arm/mach-omap2/board-omap3beagle.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index af1166b..673deb9 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -199,7 +199,7 @@ static struct omap_dss_device beagle_dvi_device = {
 	.name = "dvi",
 	.driver_name = "generic_panel",
 	.phy.dpi.data_lines = 24,
-	.reset_gpio = 170,
+	.reset_gpio = -EINVAL,
 	.platform_enable = beagle_enable_dvi,
 	.platform_disable = beagle_disable_dvi,
 };
@@ -307,6 +307,12 @@ static int beagle_twl_gpio_setup(struct device *dev,
 	else
 		gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
 
+	/* DVI reset GPIO is different between beagle revisions */
+	if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
+		beagle_dvi_device.reset_gpio = 129;
+	else
+		beagle_dvi_device.reset_gpio = 170;
+
 	/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
 	gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
 
-- 
1.6.3.3

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

* [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI
       [not found] <[PATCH v4 0/3] OMAP3: beaglexm: GPIO fixes>
                   ` (2 preceding siblings ...)
  2011-01-11 17:13 ` [PATCH v5 2/3] omap3: beaglexm: fix DVI reset GPIO Nishanth Menon
@ 2011-01-11 17:13 ` Nishanth Menon
  2011-01-11 23:23   ` Tony Lindgren
  3 siblings, 1 reply; 8+ messages in thread
From: Nishanth Menon @ 2011-01-11 17:13 UTC (permalink / raw)
  To: linux-arm-kernel

From: Koen Kooi <koen@beagleboard.org>

TFP410 DVI chip is used to provide display out.
This chip is controlled by 2 lines:
LDO which supplies the power is controlled over gpio + 2
and the enable of the chip itself is done over gpio + 1
NOTE: the LDO is necessary for LED, serial blocks as well.

gpio + 1 was used to sense USB overcurrent in vanilla beagle.

Without this fix, the display would not function as the LDO
remains shut down.

[nm at ti.com: split up, added descriptive changelogs]
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Koen Kooi <koen@beagleboard.org>
---
 arch/arm/mach-omap2/board-omap3beagle.c |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 673deb9..458aee4 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -293,9 +293,10 @@ static int beagle_twl_gpio_setup(struct device *dev,
 	/* REVISIT: need ehci-omap hooks for external VBUS
 	 * power switch and overcurrent detect
 	 */
-
-	gpio_request(gpio + 1, "EHCI_nOC");
-	gpio_direction_input(gpio + 1);
+	if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
+		gpio_request(gpio + 1, "EHCI_nOC");
+		gpio_direction_input(gpio + 1);
+	}
 
 	/*
 	 * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
@@ -316,6 +317,19 @@ static int beagle_twl_gpio_setup(struct device *dev,
 	/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
 	gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
 
+	/*
+	 * gpio + 1 on Xm controls the TFP410's enable line (active low)
+	 * gpio + 2 control varies depending on the board rev as follows:
+	 * P7/P8 revisions(prototype): Camera EN
+	 * A2+ revisions (production): LDO (supplies DVI, serial, led blocks)
+	 */
+	if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
+		gpio_request(gpio + 1, "nDVI_PWR_EN");
+		gpio_direction_output(gpio + 1, 0);
+		gpio_request(gpio + 2, "DVI_LDO_EN");
+		gpio_direction_output(gpio + 2, 1);
+	}
+
 	return 0;
 }
 
-- 
1.6.3.3

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

* [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI
  2011-01-11 17:13 ` [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI Nishanth Menon
@ 2011-01-11 23:23   ` Tony Lindgren
  2011-01-11 23:55     ` Nishanth Menon
  0 siblings, 1 reply; 8+ messages in thread
From: Tony Lindgren @ 2011-01-11 23:23 UTC (permalink / raw)
  To: linux-arm-kernel

* Nishanth Menon <nm@ti.com> [110111 09:12]:
> From: Koen Kooi <koen@beagleboard.org>
> 
> TFP410 DVI chip is used to provide display out.
> This chip is controlled by 2 lines:
> LDO which supplies the power is controlled over gpio + 2
> and the enable of the chip itself is done over gpio + 1
> NOTE: the LDO is necessary for LED, serial blocks as well.
> 
> gpio + 1 was used to sense USB overcurrent in vanilla beagle.
> 
> Without this fix, the display would not function as the LDO
> remains shut down.
> 
> [nm at ti.com: split up, added descriptive changelogs]
> Signed-off-by: Nishanth Menon <nm@ti.com>
> Signed-off-by: Koen Kooi <koen@beagleboard.org>
> ---
>  arch/arm/mach-omap2/board-omap3beagle.c |   20 +++++++++++++++++---
>  1 files changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
> index 673deb9..458aee4 100644
> --- a/arch/arm/mach-omap2/board-omap3beagle.c
> +++ b/arch/arm/mach-omap2/board-omap3beagle.c
> @@ -293,9 +293,10 @@ static int beagle_twl_gpio_setup(struct device *dev,
>  	/* REVISIT: need ehci-omap hooks for external VBUS
>  	 * power switch and overcurrent detect
>  	 */
> -
> -	gpio_request(gpio + 1, "EHCI_nOC");
> -	gpio_direction_input(gpio + 1);
> +	if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
> +		gpio_request(gpio + 1, "EHCI_nOC");
> +		gpio_direction_input(gpio + 1);
> +	}

The return value for gpio_request must be checked.
  
>  	/*
>  	 * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
> @@ -316,6 +317,19 @@ static int beagle_twl_gpio_setup(struct device *dev,
>  	/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
>  	gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
>  
> +	/*
> +	 * gpio + 1 on Xm controls the TFP410's enable line (active low)
> +	 * gpio + 2 control varies depending on the board rev as follows:
> +	 * P7/P8 revisions(prototype): Camera EN
> +	 * A2+ revisions (production): LDO (supplies DVI, serial, led blocks)
> +	 */
> +	if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
> +		gpio_request(gpio + 1, "nDVI_PWR_EN");
> +		gpio_direction_output(gpio + 1, 0);
> +		gpio_request(gpio + 2, "DVI_LDO_EN");
> +		gpio_direction_output(gpio + 2, 1);
> +	}
> +
>  	return 0;
>  }

Here too. I've applied the first two patches into devel-board branch,
but not this one.

Regards,

Tony

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

* [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI
  2011-01-11 23:23   ` Tony Lindgren
@ 2011-01-11 23:55     ` Nishanth Menon
  2011-01-12  0:15       ` Tony Lindgren
  0 siblings, 1 reply; 8+ messages in thread
From: Nishanth Menon @ 2011-01-11 23:55 UTC (permalink / raw)
  To: linux-arm-kernel

Tony Lindgren had written, on 01/11/2011 05:23 PM, the following:
[..]
>> -
>> -	gpio_request(gpio + 1, "EHCI_nOC");
>> -	gpio_direction_input(gpio + 1);
>> +	if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
>> +		gpio_request(gpio + 1, "EHCI_nOC");
>> +		gpio_direction_input(gpio + 1);
>> +	}
> 
> The return value for gpio_request must be checked.
Ack.
we can go down two paths:
a) I can redo this patch as in v6.patch (attached)
OR
b) we take this patch and do another one cleaning the function up - 
gpio-check.patch

-- 
Regards,
Nishanth Menon

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

* [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI
  2011-01-11 23:55     ` Nishanth Menon
@ 2011-01-12  0:15       ` Tony Lindgren
  2011-01-12  0:17         ` Nishanth Menon
  0 siblings, 1 reply; 8+ messages in thread
From: Tony Lindgren @ 2011-01-12  0:15 UTC (permalink / raw)
  To: linux-arm-kernel

* Nishanth Menon <nm@ti.com> [110111 15:54]:
> Tony Lindgren had written, on 01/11/2011 05:23 PM, the following:
> [..]
> >>-
> >>-	gpio_request(gpio + 1, "EHCI_nOC");
> >>-	gpio_direction_input(gpio + 1);
> >>+	if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
> >>+		gpio_request(gpio + 1, "EHCI_nOC");
> >>+		gpio_direction_input(gpio + 1);
> >>+	}
> >
> >The return value for gpio_request must be checked.
> Ack.
> we can go down two paths:
> a) I can redo this patch as in v6.patch (attached)

Yes let's do that, one comment below though..

> OR
> b) we take this patch and do another one cleaning the function up -
> gpio-check.patch

That can be done later.
 
> +	if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
> +		r = gpio_request(gpio + 1, "nDVI_PWR_EN");
> +		if (!r) {
> +			r = gpio_direction_output(gpio + 1, 0);
> +			if (r)
> +				gpio_free(gpio + 1);
> +		}
> +		if (r)
> +			pr_err("%s: unable to configure nDVI_PWR_EN\n",
> +				__func__);
> +		r = gpio_request(gpio + 2, "DVI_LDO_EN");
> +		if (!r) {
> +			r = gpio_direction_output(gpio + 2, 1);
> +			if (r)
> +				gpio_free(gpio + 1);
> +		}
> +		if (r)
> +			pr_err("%s: unable to configure DVI_LDO_EN\n",
> +				__func__);
> +	}
> +

Should the second gpio_free be gpio + 2 instead of gpio + 1?

Tony

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

* [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI
  2011-01-12  0:15       ` Tony Lindgren
@ 2011-01-12  0:17         ` Nishanth Menon
  0 siblings, 0 replies; 8+ messages in thread
From: Nishanth Menon @ 2011-01-12  0:17 UTC (permalink / raw)
  To: linux-arm-kernel

Tony Lindgren had written, on 01/11/2011 06:15 PM, the following:
> * Nishanth Menon <nm@ti.com> [110111 15:54]:
>> Tony Lindgren had written, on 01/11/2011 05:23 PM, the following:
>> [..]
>>>> -
>>>> -	gpio_request(gpio + 1, "EHCI_nOC");
>>>> -	gpio_direction_input(gpio + 1);
>>>> +	if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
>>>> +		gpio_request(gpio + 1, "EHCI_nOC");
>>>> +		gpio_direction_input(gpio + 1);
>>>> +	}
>>> The return value for gpio_request must be checked.
>> Ack.
>> we can go down two paths:
>> a) I can redo this patch as in v6.patch (attached)
> 
> Yes let's do that, one comment below though..
> 
>> OR
>> b) we take this patch and do another one cleaning the function up -
>> gpio-check.patch
> 
> That can be done later.
ok

>  
>> +	if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
>> +		r = gpio_request(gpio + 1, "nDVI_PWR_EN");
>> +		if (!r) {
>> +			r = gpio_direction_output(gpio + 1, 0);
>> +			if (r)
>> +				gpio_free(gpio + 1);
>> +		}
>> +		if (r)
>> +			pr_err("%s: unable to configure nDVI_PWR_EN\n",
>> +				__func__);
>> +		r = gpio_request(gpio + 2, "DVI_LDO_EN");
>> +		if (!r) {
>> +			r = gpio_direction_output(gpio + 2, 1);
>> +			if (r)
>> +				gpio_free(gpio + 1);
>> +		}
>> +		if (r)
>> +			pr_err("%s: unable to configure DVI_LDO_EN\n",
>> +				__func__);
>> +	}
>> +
> 
> Should the second gpio_free be gpio + 2 instead of gpio + 1?
oops.. yep. will fix and send out a v6 for this alone. thanks for the check.

-- 
Regards,
Nishanth Menon

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

end of thread, other threads:[~2011-01-12  0:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <[PATCH v4 0/3] OMAP3: beaglexm: GPIO fixes>
2011-01-11 17:13 ` [PATCH v5 0/3] OMAP3: beaglexm: GPIO fixes Nishanth Menon
2011-01-11 17:13 ` [PATCH v5 1/3] omap3: beaglexm: fix EHCI power up GPIO dir Nishanth Menon
2011-01-11 17:13 ` [PATCH v5 2/3] omap3: beaglexm: fix DVI reset GPIO Nishanth Menon
2011-01-11 17:13 ` [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI Nishanth Menon
2011-01-11 23:23   ` Tony Lindgren
2011-01-11 23:55     ` Nishanth Menon
2011-01-12  0:15       ` Tony Lindgren
2011-01-12  0:17         ` Nishanth Menon

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).