diff options
| author | Ujwal Patel <ujwalp@codeaurora.org> | 2015-09-14 10:14:06 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:47:22 -0700 |
| commit | ba6ca57a7c19ee000136efd02637d4473565e429 (patch) | |
| tree | f5d5077024d7d235f67eeec8cca4892aef367b91 /drivers | |
| parent | a7bb6fa7cb02ef985331297c2d31ee6efdec888f (diff) | |
msm: mdss: configure DSC pkt_per_line correctly
DSC pkt_per_line is not mapping to register directly.
value 0 is for 1 pkt, value 1 for 2 pkt and value 2
is for 4 pkt. 3 pkt per line is not support.
Change-Id: I43ff34018668feb7a52eaa8f4b2de632fc9ab59b
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi_host.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi_host.c b/drivers/video/fbdev/msm/mdss_dsi_host.c index 777828ef0b55..852d232d00ca 100644 --- a/drivers/video/fbdev/msm/mdss_dsi_host.c +++ b/drivers/video/fbdev/msm/mdss_dsi_host.c @@ -1092,18 +1092,20 @@ int mdss_dsi_reg_status_check(struct mdss_dsi_ctrl_pdata *ctrl_pdata) static void mdss_dsi_dsc_config(struct mdss_dsi_ctrl_pdata *ctrl, struct dsc_desc *dsc) { - u32 data; + u32 data, offset; + + if (dsc->pkt_per_line <= 0) { + pr_err("%s: Error: pkt_per_line cannot be negative or 0\n", + __func__); + return; + } if (ctrl->panel_mode == DSI_VIDEO_MODE) { MIPI_OUTP((ctrl->ctrl_base) + MDSS_DSI_VIDEO_COMPRESSION_MODE_CTRL2, 0); data = dsc->bytes_per_pkt << 16; data |= (0x0b << 8); /* dtype of compressed image */ - data |= (dsc->pkt_per_line - 1) << 6; - data |= dsc->eol_byte_num << 4; - data |= 1; /* enable */ - MIPI_OUTP((ctrl->ctrl_base) + - MDSS_DSI_VIDEO_COMPRESSION_MODE_CTRL, data); + offset = MDSS_DSI_VIDEO_COMPRESSION_MODE_CTRL; } else { /* strem 0 */ MIPI_OUTP((ctrl->ctrl_base) + @@ -1114,12 +1116,23 @@ static void mdss_dsi_dsc_config(struct mdss_dsi_ctrl_pdata *ctrl, dsc->bytes_in_slice); data = DTYPE_DCS_LWRITE << 8; - data |= (dsc->pkt_per_line - 1) << 6; - data |= dsc->eol_byte_num << 4; - data |= 1; /* enable */ - MIPI_OUTP((ctrl->ctrl_base) + - MDSS_DSI_COMMAND_COMPRESSION_MODE_CTRL, data); + offset = MDSS_DSI_COMMAND_COMPRESSION_MODE_CTRL; } + + /* + * pkt_per_line: + * 0 == 1 pkt + * 1 == 2 pkt + * 2 == 4 pkt + * 3 pkt is not support + */ + if (dsc->pkt_per_line == 4) + data |= (dsc->pkt_per_line - 2) << 6; + else + data |= (dsc->pkt_per_line - 1) << 6; + data |= dsc->eol_byte_num << 4; + data |= 1; /* enable */ + MIPI_OUTP((ctrl->ctrl_base) + offset, data); } static void mdss_dsi_mode_setup(struct mdss_panel_data *pdata) |
