diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-psp-2.6.32/beagleboard-xmc/0006-omap3-beaglexm-fix-power-on-of-DVI.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap-psp-2.6.32/beagleboard-xmc/0006-omap3-beaglexm-fix-power-on-of-DVI.patch | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/beagleboard-xmc/0006-omap3-beaglexm-fix-power-on-of-DVI.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/beagleboard-xmc/0006-omap3-beaglexm-fix-power-on-of-DVI.patch new file mode 100644 index 00000000..ba74284b --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/beagleboard-xmc/0006-omap3-beaglexm-fix-power-on-of-DVI.patch | |||
@@ -0,0 +1,92 @@ | |||
1 | From 7ad849e3d54d897614a74ad225392bd243e07d2e Mon Sep 17 00:00:00 2001 | ||
2 | From: Koen Kooi <koen@beagleboard.org> | ||
3 | Date: Wed, 12 Jan 2011 00:23:29 +0000 | ||
4 | Subject: [PATCH 06/10] omap3: beaglexm: fix power on of DVI | ||
5 | |||
6 | TFP410 DVI chip is used to provide display out. | ||
7 | This chip is controlled by 2 lines: | ||
8 | LDO which supplies the power is controlled over gpio + 2 | ||
9 | and the enable of the chip itself is done over gpio + 1 | ||
10 | NOTE: the LDO is necessary for LED, serial blocks as well. | ||
11 | |||
12 | gpio + 1 was used to sense USB overcurrent in vanilla beagle. | ||
13 | |||
14 | Without this fix, the display would not function as the LDO | ||
15 | remains shut down. | ||
16 | |||
17 | [nm@ti.com: split up, added descriptive changelogs] | ||
18 | Signed-off-by: Nishanth Menon <nm@ti.com> | ||
19 | Signed-off-by: Koen Kooi <koen@beagleboard.org> | ||
20 | Signed-off-by: Tony Lindgren <tony@atomide.com> | ||
21 | --- | ||
22 | arch/arm/mach-omap2/board-omap3beagle.c | 40 +++++++++++++++++++++++++++++++ | ||
23 | 1 files changed, 40 insertions(+), 0 deletions(-) | ||
24 | |||
25 | diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c | ||
26 | index 939de5a..9880c5c 100644 | ||
27 | --- a/arch/arm/mach-omap2/board-omap3beagle.c | ||
28 | +++ b/arch/arm/mach-omap2/board-omap3beagle.c | ||
29 | @@ -444,6 +444,8 @@ static struct gpio_led gpio_leds[]; | ||
30 | static int beagle_twl_gpio_setup(struct device *dev, | ||
31 | unsigned gpio, unsigned ngpio) | ||
32 | { | ||
33 | + int r; | ||
34 | + | ||
35 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | ||
36 | mmc[0].gpio_wp = -EINVAL; | ||
37 | } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) || | ||
38 | @@ -465,6 +467,17 @@ static int beagle_twl_gpio_setup(struct device *dev, | ||
39 | * power switch and overcurrent detect | ||
40 | */ | ||
41 | |||
42 | + if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) { | ||
43 | + r = gpio_request(gpio + 1, "EHCI_nOC"); | ||
44 | + if (!r) { | ||
45 | + r = gpio_direction_input(gpio + 1); | ||
46 | + if (r) | ||
47 | + gpio_free(gpio + 1); | ||
48 | + } | ||
49 | + if (r) | ||
50 | + pr_err("%s: unable to configure EHCI_nOC\n", __func__); | ||
51 | + } | ||
52 | + | ||
53 | if (cpu_is_omap3630()) { | ||
54 | /* Power on DVI, Serial and PWR led */ | ||
55 | gpio_request(gpio + 1, "nDVI_PWR_EN"); | ||
56 | @@ -506,6 +519,33 @@ static int beagle_twl_gpio_setup(struct device *dev, | ||
57 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ | ||
58 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; | ||
59 | |||
60 | + /* | ||
61 | + * gpio + 1 on Xm controls the TFP410's enable line (active low) | ||
62 | + * gpio + 2 control varies depending on the board rev as follows: | ||
63 | + * P7/P8 revisions(prototype): Camera EN | ||
64 | + * A2+ revisions (production): LDO (supplies DVI, serial, led blocks) | ||
65 | + */ | ||
66 | + if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | ||
67 | + r = gpio_request(gpio + 1, "nDVI_PWR_EN"); | ||
68 | + if (!r) { | ||
69 | + r = gpio_direction_output(gpio + 1, 0); | ||
70 | + if (r) | ||
71 | + gpio_free(gpio + 1); | ||
72 | + } | ||
73 | + if (r) | ||
74 | + pr_err("%s: unable to configure nDVI_PWR_EN\n", | ||
75 | + __func__); | ||
76 | + r = gpio_request(gpio + 2, "DVI_LDO_EN"); | ||
77 | + if (!r) { | ||
78 | + r = gpio_direction_output(gpio + 2, 1); | ||
79 | + if (r) | ||
80 | + gpio_free(gpio + 2); | ||
81 | + } | ||
82 | + if (r) | ||
83 | + pr_err("%s: unable to configure DVI_LDO_EN\n", | ||
84 | + __func__); | ||
85 | + } | ||
86 | + | ||
87 | return 0; | ||
88 | } | ||
89 | |||
90 | -- | ||
91 | 1.6.6.1 | ||
92 | |||