Function beagle_twl_gpio_setup is called after beagle_display_init, what
lets reset_gpio with an invalid value at the time it request the gpio.
As a side effect the DVI reset GPIO is not properly set.

Also removing old code that powers down DVI in a hardcoded way, as it's
not necessary anymore.

Tested with Beagle-xM and C4.

Signed-off-by: Ricardo Salveti de Araujo <ricardo.salv...@canonical.com>
---
 arch/arm/mach-omap2/board-omap3beagle.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c 
b/arch/arm/mach-omap2/board-omap3beagle.c
index 685ac06..1a21002 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -52,6 +52,9 @@
 
 #define NAND_BLOCK_SIZE                SZ_128K
 
+#define BEAGLE_DVI_RESET_GPIO          170
+#define BEAGLE_XM_DVI_RESET_GPIO       129
+
 /*
  * OMAP3 Beagle revision
  * Run time detection of Beagle revision is done by reading GPIO.
@@ -248,6 +251,14 @@ static void __init beagle_display_init(void)
 {
        int r;
 
+       /* DVI reset GPIO is different between beagle revisions */
+       if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
+               beagle_dvi_device.reset_gpio = BEAGLE_XM_DVI_RESET_GPIO;
+       else
+               beagle_dvi_device.reset_gpio = BEAGLE_DVI_RESET_GPIO;
+
+       omap_mux_init_gpio(beagle_dvi_device.reset_gpio, OMAP_PIN_OUTPUT);
+
        r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset");
        if (r < 0) {
                printk(KERN_ERR "Unable to get DVI reset GPIO\n");
@@ -324,12 +335,6 @@ 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;
 
@@ -620,11 +625,6 @@ static void __init omap3_beagle_init(void)
                        ARRAY_SIZE(omap3_beagle_devices));
        omap_serial_init();
 
-       omap_mux_init_gpio(170, OMAP_PIN_INPUT);
-       gpio_request(170, "DVI_nPD");
-       /* REVISIT leave DVI powered down until it's needed ... */
-       gpio_direction_output(170, true);
-
        usb_musb_init(&musb_board_data);
        usb_ehci_init(&ehci_pdata);
        omap3beagle_flash_init();
-- 
1.7.2.3

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

Reply via email to