From 7c27760176ca680e4256361382ac6fe3972931c7 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 22 Feb 2011 16:39:33 +0200 Subject: OMAP: Overo Palo43 LCD support Temporary patch until Sakoman gets his Overo patches ready. Signed-off-by: Tomi Valkeinen --- arch/arm/mach-omap2/board-overo.c | 63 ++++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index a33ec0edec1..28a14148626 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -46,6 +46,8 @@ #include #include #include +#include +#include #include "mux.h" #include "sdram-micron-mt46h32m32lf-6.h" @@ -358,6 +360,25 @@ static struct regulator_init_data overo_vmmc1 = { .consumer_supplies = &overo_vmmc1_supply, }; +static struct regulator_consumer_supply overo_vpll2_supplies[] = { + REGULATOR_SUPPLY("vdds_dsi", "omapdss"), + REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi1"), +}; + +static struct regulator_init_data overo_vpll2 = { + .constraints = { + .min_uV = 1800000, + .max_uV = 1800000, + .apply_uV = true, + .valid_modes_mask = REGULATOR_MODE_NORMAL + | REGULATOR_MODE_STANDBY, + .valid_ops_mask = REGULATOR_CHANGE_MODE + | REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = ARRAY_SIZE(overo_vpll2_supplies), + .consumer_supplies = overo_vpll2_supplies, +}; + static struct twl4030_codec_audio_data overo_audio_data = { .audio_mclk = 26000000, }; @@ -376,6 +397,7 @@ static struct twl4030_platform_data overo_twldata = { .usb = &overo_usb_data, .codec = &overo_codec_data, .vmmc1 = &overo_vmmc1, + .vpll2 = &overo_vpll2, }; static struct i2c_board_info __initdata overo_i2c_boardinfo[] = { @@ -396,17 +418,44 @@ static int __init overo_i2c_init(void) return 0; } -static struct platform_device overo_lcd_device = { - .name = "overo_lcd", - .id = -1, +#define OVERO_GPIO_LCD_EN 144 + +static int omap3_overo_enable_lcd(struct omap_dss_device *dssdev) +{ + gpio_set_value(OVERO_GPIO_LCD_EN, 1); + return 0; +} + +static void omap3_overo_disable_lcd(struct omap_dss_device *dssdev) +{ + gpio_set_value(OVERO_GPIO_LCD_EN, 0); +} + +static struct panel_generic_dpi_data lcd_panel = { + .name = "samsung_lte430wq_f0c", + .platform_enable = omap3_overo_enable_lcd, + .platform_disable = omap3_overo_disable_lcd, +}; + +static struct omap_dss_device omap3_overo_lcd_device = { + .name = "lcd", + .type = OMAP_DISPLAY_TYPE_DPI, + .driver_name = "generic_dpi_panel", + .data = &lcd_panel, + .phy.dpi.data_lines = 24, +}; + +static struct omap_dss_device *omap3_overo_dss_devices[] = { + &omap3_overo_lcd_device, }; -static struct omap_lcd_config overo_lcd_config __initdata = { - .ctrl_name = "internal", +static struct omap_dss_board_info omap3_overo_dss_data = { + .num_devices = ARRAY_SIZE(omap3_overo_dss_devices), + .devices = omap3_overo_dss_devices, + .default_device = &omap3_overo_lcd_device, }; static struct omap_board_config_kernel overo_config[] __initdata = { - { OMAP_TAG_LCD, &overo_lcd_config }, }; static void __init overo_init_early(void) @@ -419,7 +468,6 @@ static void __init overo_init_early(void) } static struct platform_device *overo_devices[] __initdata = { - &overo_lcd_device, }; static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { @@ -456,6 +504,7 @@ static void __init overo_init(void) usb_ehci_init(&ehci_pdata); overo_ads7846_init(); overo_init_smsc911x(); + omap_display_init(&omap3_overo_dss_data); /* Ensure SDRC pins are mux'd for self-refresh */ omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); -- cgit v1.2.3