]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/mach-omap2/board-omap3evm.c
Merge branch 'late/clksrc' into late/cleanup
[karo-tx-linux.git] / arch / arm / mach-omap2 / board-omap3evm.c
index 2de92facc8a38234bacec820218fe4143b8b137f..f76d0de7b406bb0c1cb170ecb9b1982c2c4f63d2 100644 (file)
@@ -51,7 +51,7 @@
 #include "common.h"
 #include <linux/platform_data/spi-omap2-mcspi.h>
 #include <video/omapdss.h>
-#include <video/omap-panel-tfp410.h>
+#include <video/omap-panel-data.h>
 
 #include "soc.h"
 #include "mux.h"
@@ -155,61 +155,43 @@ static inline void __init omap3evm_init_smsc911x(void) { return; }
 #define OMAP3EVM_LCD_PANEL_LR          2
 #define OMAP3EVM_LCD_PANEL_UD          3
 #define OMAP3EVM_LCD_PANEL_INI         152
-#define OMAP3EVM_LCD_PANEL_ENVDD       153
 #define OMAP3EVM_LCD_PANEL_QVGA                154
 #define OMAP3EVM_LCD_PANEL_RESB                155
+
+#define OMAP3EVM_LCD_PANEL_ENVDD       153
 #define OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO        210
+
+/*
+ * OMAP3EVM DVI control signals
+ */
 #define OMAP3EVM_DVI_PANEL_EN_GPIO     199
 
-static struct gpio omap3_evm_dss_gpios[] __initdata = {
-       { OMAP3EVM_LCD_PANEL_RESB,  GPIOF_OUT_INIT_HIGH, "lcd_panel_resb"  },
-       { OMAP3EVM_LCD_PANEL_INI,   GPIOF_OUT_INIT_HIGH, "lcd_panel_ini"   },
-       { OMAP3EVM_LCD_PANEL_QVGA,  GPIOF_OUT_INIT_LOW,  "lcd_panel_qvga"  },
-       { OMAP3EVM_LCD_PANEL_LR,    GPIOF_OUT_INIT_HIGH, "lcd_panel_lr"    },
-       { OMAP3EVM_LCD_PANEL_UD,    GPIOF_OUT_INIT_HIGH, "lcd_panel_ud"    },
-       { OMAP3EVM_LCD_PANEL_ENVDD, GPIOF_OUT_INIT_LOW,  "lcd_panel_envdd" },
+static struct panel_sharp_ls037v7dw01_data omap3_evm_lcd_data = {
+       .resb_gpio = OMAP3EVM_LCD_PANEL_RESB,
+       .ini_gpio = OMAP3EVM_LCD_PANEL_INI,
+       .mo_gpio = OMAP3EVM_LCD_PANEL_QVGA,
+       .lr_gpio = OMAP3EVM_LCD_PANEL_LR,
+       .ud_gpio = OMAP3EVM_LCD_PANEL_UD,
 };
 
-static int lcd_enabled;
-static int dvi_enabled;
-
 static void __init omap3_evm_display_init(void)
 {
        int r;
 
-       r = gpio_request_array(omap3_evm_dss_gpios,
-                              ARRAY_SIZE(omap3_evm_dss_gpios));
+       r = gpio_request_one(OMAP3EVM_LCD_PANEL_ENVDD, GPIOF_OUT_INIT_LOW,
+                               "lcd_panel_envdd");
        if (r)
-               printk(KERN_ERR "failed to get lcd_panel_* gpios\n");
-}
+               pr_err("failed to get lcd_panel_envdd GPIO\n");
 
-static int omap3_evm_enable_lcd(struct omap_dss_device *dssdev)
-{
-       if (dvi_enabled) {
-               printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
-               return -EINVAL;
-       }
-       gpio_set_value(OMAP3EVM_LCD_PANEL_ENVDD, 0);
+       r = gpio_request_one(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO,
+                               GPIOF_OUT_INIT_LOW, "lcd_panel_bklight");
+       if (r)
+               pr_err("failed to get lcd_panel_bklight GPIO\n");
 
        if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
                gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
        else
                gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
-
-       lcd_enabled = 1;
-       return 0;
-}
-
-static void omap3_evm_disable_lcd(struct omap_dss_device *dssdev)
-{
-       gpio_set_value(OMAP3EVM_LCD_PANEL_ENVDD, 1);
-
-       if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
-               gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
-       else
-               gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
-
-       lcd_enabled = 0;
 }
 
 static struct omap_dss_device omap3_evm_lcd_device = {
@@ -217,26 +199,14 @@ static struct omap_dss_device omap3_evm_lcd_device = {
        .driver_name            = "sharp_ls_panel",
        .type                   = OMAP_DISPLAY_TYPE_DPI,
        .phy.dpi.data_lines     = 18,
-       .platform_enable        = omap3_evm_enable_lcd,
-       .platform_disable       = omap3_evm_disable_lcd,
+       .data                   = &omap3_evm_lcd_data,
 };
 
-static int omap3_evm_enable_tv(struct omap_dss_device *dssdev)
-{
-       return 0;
-}
-
-static void omap3_evm_disable_tv(struct omap_dss_device *dssdev)
-{
-}
-
 static struct omap_dss_device omap3_evm_tv_device = {
        .name                   = "tv",
        .driver_name            = "venc",
        .type                   = OMAP_DISPLAY_TYPE_VENC,
        .phy.venc.type          = OMAP_DSS_VENC_TYPE_SVIDEO,
-       .platform_enable        = omap3_evm_enable_tv,
-       .platform_disable       = omap3_evm_disable_tv,
 };
 
 static struct tfp410_platform_data dvi_panel = {