summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Guiriec <s-guiriec@ti.com>2012-05-02 16:36:37 +0200
committerDan Murphy <dmurphy@ti.com>2012-05-16 15:20:52 -0500
commit6ad115e48e77cb951b35977942ff808c8b9320e5 (patch)
tree0e62f262b944544c7e468cd20a0288a8e92f5284
parent98f40c535af61caeb9bb3a1b141ef46cb9e55898 (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.c105
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")