aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddhartha Agrawal <agrawals@codeaurora.org>2013-04-21 16:16:57 -0700
committerSiddhartha Agrawal <agrawals@codeaurora.org>2013-04-24 14:30:38 -0700
commit7317e48dd0047af0df473645af2ff2c1978c841e (patch)
tree23fc7c428bce34c5fdf5842d827a319eb8660a54
parent7dc3aa920cdfff9415f94e3a2255422a0bfbc4cf (diff)
downloadlk-7317e48dd0047af0df473645af2ff2c1978c841e.tar.gz
msm_shared: mipi: Add MIPI DSI support for command mode panel
Add support for command mode panels. Change-Id: Iab4d4ec905c3ab618c2d816cde25b24a7768ec5c
-rw-r--r--platform/msm_shared/mipi_dsi.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/platform/msm_shared/mipi_dsi.c b/platform/msm_shared/mipi_dsi.c
index 64fe03d3..055de7d6 100644
--- a/platform/msm_shared/mipi_dsi.c
+++ b/platform/msm_shared/mipi_dsi.c
@@ -774,6 +774,65 @@ int mipi_dsi_video_mode_config(unsigned short disp_width,
return status;
}
+int mdss_dsi_cmd_mode_config(uint16_t disp_width,
+ uint16_t disp_height,
+ uint16_t img_width,
+ uint16_t img_height,
+ uint16_t dst_format,
+ uint16_t traffic_mode)
+{
+ uint8_t DST_FORMAT;
+ uint8_t TRAFIC_MODE;
+ uint8_t DLNx_EN;
+ // video mode data ctrl
+ int status = 0;
+ uint8_t interleav = 0;
+ uint8_t ystride = 0x03;
+ // disable mdp first
+
+ writel(0x00000000, DSI_CLK_CTRL);
+ writel(0x00000000, DSI_CLK_CTRL);
+ writel(0x00000000, DSI_CLK_CTRL);
+ writel(0x00000000, DSI_CLK_CTRL);
+ writel(0x00000002, DSI_CLK_CTRL);
+ writel(0x00000006, DSI_CLK_CTRL);
+ writel(0x0000000e, DSI_CLK_CTRL);
+ writel(0x0000001e, DSI_CLK_CTRL);
+ writel(0x0000023f, DSI_CLK_CTRL);
+
+ writel(0, DSI_CTRL);
+
+ writel(0, DSI_ERR_INT_MASK0);
+
+ writel(0x02020202, DSI_INT_CTRL);
+
+ DST_FORMAT = 8; // RGB888
+ dprintf(SPEW, "DSI_Cmd_Mode - Dst Format: RGB888\n");
+
+ DLNx_EN = 0xf; // 4 lane with clk programming
+ dprintf(SPEW, "Data Lane: 4 lane\n");
+
+ TRAFIC_MODE = 0; // non burst mode with sync pulses
+ dprintf(SPEW, "Traffic mode: non burst mode with sync pulses\n");
+
+ writel(DST_FORMAT, DSI_COMMAND_MODE_MDP_CTRL);
+ writel((img_width * ystride + 1) << 16 | 0x0039,
+ DSI_COMMAND_MODE_MDP_STREAM0_CTRL);
+ writel((img_width * ystride + 1) << 16 | 0x0039,
+ DSI_COMMAND_MODE_MDP_STREAM1_CTRL);
+ writel(img_height << 16 | img_width,
+ DSI_COMMAND_MODE_MDP_STREAM0_TOTAL);
+ writel(img_height << 16 | img_width,
+ DSI_COMMAND_MODE_MDP_STREAM1_TOTAL);
+ writel(0x13c2c, DSI_COMMAND_MODE_MDP_DCS_CMD_CTRL);
+ writel(interleav << 30 | 0 << 24 | 0 << 20 | DLNx_EN << 4 | 0x105,
+ DSI_CTRL);
+ writel(0x10000000, DSI_COMMAND_MODE_DMA_CTRL);
+ writel(0x10000000, DSI_MISR_CMD_CTRL);
+
+ return NO_ERROR;
+}
+
int mipi_dsi_cmd_mode_config(unsigned short disp_width,
unsigned short disp_height,
unsigned short img_width,