aboutsummaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap/base/0003-omap3-beaglexm-fix-power-on-of-DVI.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap/base/0003-omap3-beaglexm-fix-power-on-of-DVI.patch')
-rw-r--r--extras/recipes-kernel/linux/linux-omap/base/0003-omap3-beaglexm-fix-power-on-of-DVI.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap/base/0003-omap3-beaglexm-fix-power-on-of-DVI.patch b/extras/recipes-kernel/linux/linux-omap/base/0003-omap3-beaglexm-fix-power-on-of-DVI.patch
new file mode 100644
index 00000000..90446e40
--- /dev/null
+++ b/extras/recipes-kernel/linux/linux-omap/base/0003-omap3-beaglexm-fix-power-on-of-DVI.patch
@@ -0,0 +1,94 @@
+From 4004c3e68b973f4cb736048b1e90ee3b511f5865 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@beagleboard.org>
+Date: Wed, 12 Jan 2011 00:23:29 +0000
+Subject: [PATCH 03/28] omap3: beaglexm: fix power on of DVI
+
+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@ti.com: split up, added descriptive changelogs]
+Signed-off-by: Nishanth Menon <nm@ti.com>
+Signed-off-by: Koen Kooi <koen@beagleboard.org>
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c | 42 ++++++++++++++++++++++++++++--
+ 1 files changed, 39 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 673deb9..2ed8040 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -273,6 +273,8 @@ static struct gpio_led gpio_leds[];
+ static int beagle_twl_gpio_setup(struct device *dev,
+ unsigned gpio, unsigned ngpio)
+ {
++ int r;
++
+ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
+ mmc[0].gpio_wp = -EINVAL;
+ } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
+@@ -293,9 +295,16 @@ 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) {
++ r = gpio_request(gpio + 1, "EHCI_nOC");
++ if (!r) {
++ r = gpio_direction_input(gpio + 1);
++ if (r)
++ gpio_free(gpio + 1);
++ }
++ if (r)
++ pr_err("%s: unable to configure EHCI_nOC\n", __func__);
++ }
+
+ /*
+ * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
+@@ -316,6 +325,33 @@ 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) {
++ 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 + 2);
++ }
++ if (r)
++ pr_err("%s: unable to configure DVI_LDO_EN\n",
++ __func__);
++ }
++
+ return 0;
+ }
+
+--
+1.6.6.1
+