diff options
author | Sebastien Guiriec <s-guiriec@ti.com> | 2012-05-02 16:36:37 +0200 |
---|---|---|
committer | Dan Murphy <dmurphy@ti.com> | 2012-05-16 15:20:52 -0500 |
commit | 6ad115e48e77cb951b35977942ff808c8b9320e5 (patch) | |
tree | 0e62f262b944544c7e468cd20a0288a8e92f5284 | |
parent | 98f40c535af61caeb9bb3a1b141ef46cb9e55898 (diff) |
OMAP5: EVM: Add LG-4591 panel in board filedss_k34_rc7
Add omap_dss_device struct for LG-4591 panel in board file.
Add dsi panel_suppy as a regulator consumer of ldo2 attached to omapdss_dsi1
platform device, and increse the voltage to 2.9V since the panel requires
slightly higher voltage. Set apply_uv to 1 so that enabling the regulator sets
the required voltage.
Add vdds_dsi as regulator consumers of ldo7 attached to omapdss, omapdss_dsi1
and omapdss_dsi2 platform devices. Set apply_uv to 1 so that enabling the
regulator sets the required voltage.
Signed-off-by: Archit Taneja <archit@ti.com>
Conflicts:
arch/arm/mach-omap2/board-omap5evm.c
-rw-r--r-- | arch/arm/mach-omap2/board-omap5evm.c | 105 |
1 files changed, 102 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/board-omap5evm.c b/arch/arm/mach-omap2/board-omap5evm.c index b81acc0c071..2feb5e554b3 100644 --- a/arch/arm/mach-omap2/board-omap5evm.c +++ b/arch/arm/mach-omap2/board-omap5evm.c @@ -45,6 +45,9 @@ #include "common-board-devices.h" #include "mux.h" +#include <video/omapdss.h> +#include <video/omap-panel-lg4591.h> + static const int evm5430_keymap[] = { KEY(0, 0, KEY_RESERVED), KEY(0, 1, KEY_RESERVED), @@ -420,15 +423,22 @@ static struct regulator_init_data omap5_ldo1 = { }, }; +static struct regulator_consumer_supply omap5evm_lcd_panel_supply[] = { + REGULATOR_SUPPLY("panel_supply", "omapdss_dsi.0"), +}; + static struct regulator_init_data omap5_ldo2 = { .constraints = { - .min_uV = 2800000, - .max_uV = 2800000, + .min_uV = 2900000, + .max_uV = 2900000, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY, - .valid_ops_mask = REGULATOR_CHANGE_MODE + .valid_ops_mask = REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, + .apply_uV = 1, }, + .num_consumer_supplies = ARRAY_SIZE(omap5evm_lcd_panel_supply), + .consumer_supplies = omap5evm_lcd_panel_supply, }; static struct regulator_init_data omap5_ldo3 = { @@ -475,6 +485,12 @@ static struct regulator_init_data omap5_ldo6 = { }, }; +static struct regulator_consumer_supply omap5_dss_phy_supply[] = { + REGULATOR_SUPPLY("vdds_dsi", "omapdss"), + REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi.0"), + REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi.1"), +}; + static struct regulator_init_data omap5_ldo7 = { .constraints = { .min_uV = 1500000, @@ -483,7 +499,10 @@ static struct regulator_init_data omap5_ldo7 = { | REGULATOR_MODE_STANDBY, .valid_ops_mask = REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, + .apply_uV = 1, }, + .num_consumer_supplies = ARRAY_SIZE(omap5_dss_phy_supply), + .consumer_supplies = omap5_dss_phy_supply, }; static struct regulator_init_data omap5_ldo8 = { @@ -682,6 +701,85 @@ static struct i2c_board_info __initdata omap5evm_i2c_1_boardinfo[] = { }, }; +static struct panel_lg4591_data dsi_panel; +static struct omap_dss_board_info omap5evm_dss_data; + +static void omap5evm_lcd_init(void) +{ + int r; + + r = gpio_request_one(dsi_panel.reset_gpio, GPIOF_DIR_OUT, + "lcd1_reset_gpio"); + if (r) + pr_err("%s: Could not get lcd1_reset_gpio\n", __func__); +} + +static void __init omap5evm_display_init(void) +{ + omap5evm_lcd_init(); + omap_display_init(&omap5evm_dss_data); +} + +static void lg_panel_set_power(bool enable) +{ +} + +static struct panel_lg4591_data dsi_panel = { + .reset_gpio = 183, + .set_power = lg_panel_set_power, +}; + +static struct omap_dss_device omap5evm_lcd_device = { + .name = "lcd", + .driver_name = "lg4591", + .type = OMAP_DISPLAY_TYPE_DSI, + .data = &dsi_panel, + .phy.dsi = { + .clk_lane = 1, + .clk_pol = 0, + .data1_lane = 2, + .data1_pol = 0, + .data2_lane = 3, + .data2_pol = 0, + .data3_lane = 4, + .data3_pol = 0, + .data4_lane = 5, + .data4_pol = 0, + }, + .clocks = { + .dispc = { + .channel = { + .lck_div = 1, /* LCD */ + .pck_div = 2, /* PCD */ + .lcd_clk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC, + }, + .dispc_fclk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC, + }, + .dsi = { + .regn = 19, /* DSI_PLL_REGN */ + .regm = 233, /* DSI_PLL_REGM */ + + .regm_dispc = 3, /* PLL_CLK1 (M4) */ + .regm_dsi = 3, /* PLL_CLK2 (M5) */ + .lp_clk_div = 9, /* LPDIV */ + + .dsi_fclk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DSI, + }, + }, + .panel.dsi_mode = OMAP_DSS_DSI_VIDEO_MODE, + .channel = OMAP_DSS_CHANNEL_LCD, +}; + +static struct omap_dss_device *omap5evm_dss_devices[] = { + &omap5evm_lcd_device, +}; + +static struct omap_dss_board_info omap5evm_dss_data = { + .num_devices = ARRAY_SIZE(omap5evm_dss_devices), + .devices = omap5evm_dss_devices, + .default_device = &omap5evm_lcd_device, +}; + static struct omap_i2c_bus_board_data __initdata omap5_i2c_1_bus_pdata; static struct omap_i2c_bus_board_data __initdata omap5_i2c_2_bus_pdata; static struct omap_i2c_bus_board_data __initdata omap5_i2c_3_bus_pdata; @@ -758,6 +856,7 @@ static void __init omap_5430evm_init(void) omap_hsmmc_init(mmc); platform_add_devices(omap5evm_devices, ARRAY_SIZE(omap5evm_devices)); + omap5evm_display_init(); } MACHINE_START(OMAP5_SEVM, "OMAP5430 evm board") |