Merge tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[pandora-kernel.git] / arch / arm / mach-omap2 / board-am3517evm.c
index c7196a6..543d9a8 100644 (file)
@@ -120,56 +120,95 @@ static int __init am3517_evm_i2c_init(void)
        return 0;
 }
 
-static struct panel_generic_dpi_data lcd_panel = {
-       .name                   = "sharp_lq",
-       .num_gpios              = 3,
-       .gpios                  = {
-               LCD_PANEL_PWR,
-               LCD_PANEL_BKLIGHT_PWR,
-               LCD_PANEL_PWM,
-       },
+static const struct display_timing am3517_evm_lcd_videomode = {
+       .pixelclock     = { 0, 9000000, 0 },
+
+       .hactive = { 0, 480, 0 },
+       .hfront_porch = { 0, 3, 0 },
+       .hback_porch = { 0, 2, 0 },
+       .hsync_len = { 0, 42, 0 },
+
+       .vactive = { 0, 272, 0 },
+       .vfront_porch = { 0, 3, 0 },
+       .vback_porch = { 0, 2, 0 },
+       .vsync_len = { 0, 11, 0 },
+
+       .flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
+               DISPLAY_FLAGS_DE_LOW | DISPLAY_FLAGS_PIXDATA_POSEDGE,
+};
+
+static struct panel_dpi_platform_data am3517_evm_lcd_pdata = {
+       .name                   = "lcd",
+       .source                 = "dpi.0",
+
+       .data_lines             = 16,
+
+       .display_timing         = &am3517_evm_lcd_videomode,
+
+       .enable_gpio            = LCD_PANEL_PWR,
+       .backlight_gpio         = LCD_PANEL_BKLIGHT_PWR,
+};
+
+static struct platform_device am3517_evm_lcd_device = {
+       .name                   = "panel-dpi",
+       .id                     = 0,
+       .dev.platform_data      = &am3517_evm_lcd_pdata,
 };
 
-static struct omap_dss_device am3517_evm_lcd_device = {
-       .type                   = OMAP_DISPLAY_TYPE_DPI,
-       .name                   = "lcd",
-       .driver_name            = "generic_dpi_panel",
-       .data                   = &lcd_panel,
-       .phy.dpi.data_lines     = 16,
+static struct connector_dvi_platform_data am3517_evm_dvi_connector_pdata = {
+       .name                   = "dvi",
+       .source                 = "tfp410.0",
+       .i2c_bus_num            = -1,
 };
 
-static struct omap_dss_device am3517_evm_tv_device = {
-       .type                   = OMAP_DISPLAY_TYPE_VENC,
-       .name                   = "tv",
-       .driver_name            = "venc",
-       .phy.venc.type          = OMAP_DSS_VENC_TYPE_SVIDEO,
+static struct platform_device am3517_evm_dvi_connector_device = {
+       .name                   = "connector-dvi",
+       .id                     = 0,
+       .dev.platform_data      = &am3517_evm_dvi_connector_pdata,
 };
 
-static struct tfp410_platform_data dvi_panel = {
-       .power_down_gpio        = -1,
-       .i2c_bus_num            = -1,
+static struct encoder_tfp410_platform_data am3517_evm_tfp410_pdata = {
+       .name                   = "tfp410.0",
+       .source                 = "dpi.0",
+       .data_lines             = 24,
+       .power_down_gpio        = -1,
 };
 
-static struct omap_dss_device am3517_evm_dvi_device = {
-       .type                   = OMAP_DISPLAY_TYPE_DPI,
-       .name                   = "dvi",
-       .driver_name            = "tfp410",
-       .data                   = &dvi_panel,
-       .phy.dpi.data_lines     = 24,
+static struct platform_device am3517_evm_tfp410_device = {
+       .name                   = "tfp410",
+       .id                     = 0,
+       .dev.platform_data      = &am3517_evm_tfp410_pdata,
 };
 
-static struct omap_dss_device *am3517_evm_dss_devices[] = {
-       &am3517_evm_lcd_device,
-       &am3517_evm_tv_device,
-       &am3517_evm_dvi_device,
+static struct connector_atv_platform_data am3517_evm_tv_pdata = {
+       .name = "tv",
+       .source = "venc.0",
+       .connector_type = OMAP_DSS_VENC_TYPE_SVIDEO,
+       .invert_polarity = false,
+};
+
+static struct platform_device am3517_evm_tv_connector_device = {
+       .name                   = "connector-analog-tv",
+       .id                     = 0,
+       .dev.platform_data      = &am3517_evm_tv_pdata,
 };
 
 static struct omap_dss_board_info am3517_evm_dss_data = {
-       .num_devices    = ARRAY_SIZE(am3517_evm_dss_devices),
-       .devices        = am3517_evm_dss_devices,
-       .default_device = &am3517_evm_lcd_device,
+       .default_display_name = "lcd",
 };
 
+static void __init am3517_evm_display_init(void)
+{
+       gpio_request_one(LCD_PANEL_PWM, GPIOF_OUT_INIT_HIGH, "lcd panel pwm");
+
+       omap_display_init(&am3517_evm_dss_data);
+
+       platform_device_register(&am3517_evm_tfp410_device);
+       platform_device_register(&am3517_evm_dvi_connector_device);
+       platform_device_register(&am3517_evm_lcd_device);
+       platform_device_register(&am3517_evm_tv_connector_device);
+}
+
 /*
  * Board initialization
  */
@@ -295,7 +334,9 @@ static void __init am3517_evm_init(void)
        omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
 
        am3517_evm_i2c_init();
-       omap_display_init(&am3517_evm_dss_data);
+
+       am3517_evm_display_init();
+
        omap_serial_init();
        omap_sdrc_init(NULL, NULL);