Skip to contentSkip to conversation

OMAP3: beaglexm: GPIO fixes

PATCH Superseded Nishanth Menon 4 participants 11 messages Jan 7, 2011 – Jan 10, 2011 1 message not in the archive

Subsystems (3)

v4 of 5 Superseded Latest is v5 →

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [PATCH v3 0/3] OMAP3: beaglexm: GPIO fixes

#1 lore raw

v4 cover OMAP3: beaglexm: GPIO fixes

Hi,
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 |   37 ++++++++++++++++++++++++++----
 1 files changed, 32 insertions(+), 5 deletions(-)

v4:
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

#2 lore raw

v4 cover OMAP3: beaglexm: GPIO fixes

Quoted 12 lines · Nishanth Menon

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

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

v4:
no functional change.
minor cleanups in commit logs incorporating offline feedback

Thanks for the updates. Will queue in my fixes queue.

Kevin

Quoted 9 lines

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

maintainer
#3 lore raw

v4 cover OMAP3: beaglexm: GPIO fixes

In reply to Nishanth Menon
Quoted 5 lines · Nishanth Menon

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

Quoted 7 lines

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

Dropping the earlier versions from omap-fixes, I want to get the build fixes in ASAP. These can wait a bit until Aaro's comments are addressed.

Regards,

Tony

#4 lore raw

v4 cover OMAP3: beaglexm: GPIO fixes

Tony Lindgren had written, on 01/10/2011 01:04 PM, the following:

Quoted 9 lines · Nishanth Menon
Quoted 8 lines

Hi,
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

Quoted 8 lines
Quoted 4 lines

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

Dropping the earlier versions from omap-fixes, I want to get the build fixes in ASAP. These can wait a bit until Aaro's comments are addressed.

Ack. will post a v5 after aligning. build breakages have higher priority ofcourse ;)

Signature · 2 lines
Regards,
Nishanth Menon
#5 lore raw

PATCH v4 1/3 omap3: beaglexm: fix EHCI power up GPIO dir

In reply to a message not in the archive

From: Koen Kooi <[email protected]>

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]
---
 arch/arm/mach-omap2/board-omap3beagle.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +8 -1
index 6c12760..1b5aa7a 100644
@@ -297,9 +297,16 @@ 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;
Signature · 1 line
1.6.3.3
#6 lore raw

PATCH v4 1/3 omap3: beaglexm: fix EHCI power up GPIO dir

Hi,

Quoted 20 lines · Nishanth Menon

From: Koen Kooi <[email protected]>

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]

---
arch/arm/mach-omap2/board-omap3beagle.c | 9 ++++++++-

1 files changed, 8 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +0 -0
index 6c12760..1b5aa7a 100644

arch/arm/mach-omap2/board-omap3beagle.c static int beagle_twl_gpio_setup(struct device *dev, · line 305

Quoted 10 lines
arch/arm/mach-omap2/board-omap3beagle.c +4 -1
@@ -297,9 +297,16 @@ 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);

This call should be deleted.

Quoted 10 lines
arch/arm/mach-omap2/board-omap3beagle.c +4 -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;
Signature · 1 line
1.6.3.3
#7 lore raw

PATCH v4 1/3 omap3: beaglexm: fix EHCI power up GPIO dir

Aaro Koskinen had written, on 01/10/2011 06:44 AM, the following:

Quoted 27 lines

Hi,

Quoted 24 lines · Nishanth Menon

From: Koen Kooi <[email protected]>

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]

---
arch/arm/mach-omap2/board-omap3beagle.c | 9 ++++++++-

1 files changed, 8 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +0 -0
index 6c12760..1b5aa7a 100644
@@ -297,9 +297,16 @@ static int beagle_twl_gpio_setup(struct device *dev,
    gpio_request(gpio + 1, "EHCI_nOC");
    gpio_direction_input(gpio + 1);
 
Quoted 10 lines

arch/arm/mach-omap2/board-omap3beagle.c static int beagle_twl_gpio_setup(struct device *dev, · line 305

Quoted 8 lines
arch/arm/mach-omap2/board-omap3beagle.c +0 -1
-    /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active 

low) */

arch/arm/mach-omap2/board-omap3beagle.c +4 -0
+    /*
+     * 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);

This call should be deleted.

yikes. yep. thanks for catching.

Signature · 2 lines
Regards,
Nishanth Menon
#8 lore raw

PATCH v4 2/3 omap3: beaglexm: fix DVI reset GPIO

In reply to a message not in the archive

From: Koen Kooi <[email protected]>

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]
---
 arch/arm/mach-omap2/board-omap3beagle.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +7 -1
index 1b5aa7a..d628f5e 100644
@@ -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,
 };
@@ -308,6 +308,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;
 
Signature · 1 line
1.6.3.3
#9 lore raw

PATCH v4 3/3 omap3: beaglexm: fix power on of DVI

In reply to a message not in the archive

From: Koen Kooi <[email protected]>

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]
---
 arch/arm/mach-omap2/board-omap3beagle.c |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +17 -3
index d628f5e..7c82730 100644
@@ -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
@@ -317,6 +318,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;
 }
 
Signature · 1 line
1.6.3.3
#10 lore raw

PATCH v4 3/3 omap3: beaglexm: fix power on of DVI

Hi,

Quoted 43 lines · Nishanth Menon

From: Koen Kooi <[email protected]>

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]

---
arch/arm/mach-omap2/board-omap3beagle.c | 20 +++++++++++++++++---

1 files changed, 17 insertions(+), 3 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +5 -3
index d628f5e..7c82730 100644
@@ -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
@@ -317,6 +318,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;
 
+	/*

arch/arm/mach-omap2/board-omap3beagle.c static int beagle_twl_gpio_setup(struct device *dev, · line 331

Quoted 10 lines
arch/arm/mach-omap2/board-omap3beagle.c +10 -0
+	 * 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);

FYI, gpiolib provides gpio_request_one() and gpio_request_array() calls which make code simpler. I think any new code should use those _and_ do proper error checking.

Quoted 8 lines
arch/arm/mach-omap2/board-omap3beagle.c +2 -0
+	}
+
 	return 0;
 }
 
Signature · 1 line
1.6.3.3
#11 lore raw

PATCH v4 3/3 omap3: beaglexm: fix power on of DVI

Aaro Koskinen had written, on 01/10/2011 06:51 AM, the following:
[..]

Quoted 9 lines

arch/arm/mach-omap2/board-omap3beagle.c static int beagle_twl_gpio_setup(struct device *dev, · line 331

Quoted 5 lines
arch/arm/mach-omap2/board-omap3beagle.c +5 -0
+    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);

FYI, gpiolib provides gpio_request_one() and gpio_request_array() calls which make code simpler. I think any new code should use those _and_ do proper error checking.

Thanks for pointing this out. Funny why it is in include/asm-generic/gpio.h instead of in include/linux/gpio.h considering it implemented in drivers/gpio/gpiolib.c :(

Am I right in understanding that you are mentioning about DVI gpios alone? in that case, the LDO gpio is used for other functions as well in addition to driving DVI. I suppose we dont want to loose that function because dvi pwr_en gpio failed.

Signature · 2 lines
Regards,
Nishanth Menon