DSS: tonka: panda: Configure DSI peripheral for Tonka screen
Add clock, lane, and mux configuration for connecting the Tonka screen
to the Pandaboard. The screen is configured for operation on DSI1.
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index 981d865..5f951a2 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -655,6 +655,93 @@
.channel = OMAP_DSS_CHANNEL_DIGIT,
};
+static struct nokia_dsi_panel_data dsi1_panel = {
+ .name = "tonka",
+ .reset_gpio = 102,
+ .use_ext_te = false,
+ .ext_te_gpio = -1,
+ .esd_interval = 0,
+};
+
+static struct omap_dss_device omap4_panda_dsi_device = {
+ .name = "lcd",
+ .driver_name = "tonka",
+ .type = OMAP_DISPLAY_TYPE_DSI,
+ .data = &dsi1_panel,
+
+ .phy.dsi = {
+ .type = OMAP_DSS_DSI_TYPE_CMD_MODE,
+ .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,
+ .pck_div = 3,
+ .lcd_clk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC,
+ },
+ .dispc_fclk_src = OMAP_DSS_CLK_SRC_FCK,
+ },
+
+ .dsi = {
+ .regn = 16,
+ .regm = 180,
+ .regm_dispc = 5, //m4reg
+ .regm_dsi = 5, //m5rev
+ .lp_clk_div = 10,
+ .dsi_fclk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DSI
+ },
+ },
+
+.panel = {
+ .timings = {
+ .x_res = 720,
+ .y_res = 1280,
+ .pixel_clock = 62963,
+ .hsw = 32,
+ .hfp = 32,
+ .hbp = 32,
+ .vsw = 2,
+ .vfp = 2,
+ .vbp = 2,
+ },
+ .width_in_um = 57960,
+ .height_in_um = 103040,
+ },
+
+ .channel = OMAP_DSS_CHANNEL_LCD,
+};
+
+static void omap4_panda_dsi_mux_init(void)
+{
+ int rc;
+ unsigned int reg;
+
+ reg = omap4_ctrl_pad_readl(OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY);
+ reg &= ~OMAP4_DSI1_LANEENABLE_MASK;
+ reg |= (0x1f) << OMAP4_DSI1_LANEENABLE_SHIFT;
+ reg &= ~OMAP4_DSI1_PIPD_MASK;
+ reg |= (0x1f) << OMAP4_DSI1_PIPD_SHIFT;
+ omap4_ctrl_pad_writel(reg, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY);
+
+ rc = gpio_request_one(dsi1_panel.reset_gpio,
+ GPIOF_DIR_OUT,
+ "lcd1_reset_gpio");
+ if (rc) {
+ pr_err("%s: Could not request lcd1 reset gpio\n", __func__);
+ }
+}
+
#ifdef CONFIG_MACH_OMAP4_PANDA_DVI_PRIMARY
static struct omap_dss_device *omap4_panda_dss_devices[] = {
&omap4_panda_dvi_device,
@@ -688,6 +775,7 @@
pr_err("error initializing panda DVI\n");
omap4_panda_hdmi_mux_init();
+ omap4_panda_dsi_mux_init();
omap_display_init(&omap4_panda_dss_data);
}