Loading drivers/video/msm/mdss/mdss_dsi.c +8 −1 Original line number Diff line number Diff line Loading @@ -2493,7 +2493,7 @@ static int mdss_dsi_cont_splash_config(struct mdss_panel_info *pinfo, struct mdss_dsi_ctrl_pdata *ctrl_pdata) { void *clk_handle; int rc = 0; int rc = 0, data; if (pinfo->cont_splash_enabled) { rc = mdss_dsi_panel_power_ctrl(&(ctrl_pdata->panel_data), Loading @@ -2513,6 +2513,13 @@ static int mdss_dsi_cont_splash_config(struct mdss_panel_info *pinfo, mdss_dsi_clk_ctrl(ctrl_pdata, clk_handle, MDSS_DSI_ALL_CLKS, MDSS_DSI_CLK_ON); ctrl_pdata->is_phyreg_enabled = 1; mdss_dsi_get_hw_revision(ctrl_pdata); if ((ctrl_pdata->shared_data->hw_rev >= MDSS_DSI_HW_REV_103) && (pinfo->type == MIPI_CMD_PANEL)) { data = MIPI_INP(ctrl_pdata->ctrl_base + 0x1b8); if (data & BIT(16)) ctrl_pdata->burst_mode_enabled = true; } ctrl_pdata->ctrl_state |= (CTRL_STATE_PANEL_INIT | CTRL_STATE_MDP_ACTIVE); } else { Loading drivers/video/msm/mdss/mdss_dsi.h +2 −1 Original line number Diff line number Diff line Loading @@ -468,6 +468,7 @@ struct mdss_dsi_ctrl_pdata { int mdp_busy; struct mutex mutex; struct mutex cmd_mutex; struct mutex cmdlist_mutex; struct regulator *lab; /* vreg handle */ struct regulator *ibb; /* vreg handle */ struct mutex clk_lane_mutex; Loading @@ -478,7 +479,7 @@ struct mdss_dsi_ctrl_pdata { bool mmss_clamp; char dlane_swap; /* data lane swap */ bool is_phyreg_enabled; bool burst_mode_enabled; struct dsi_buf tx_buf; struct dsi_buf rx_buf; Loading drivers/video/msm/mdss/mdss_dsi_cmd.c +5 −0 Original line number Diff line number Diff line Loading @@ -729,6 +729,7 @@ struct dcs_cmd_req *mdss_dsi_cmdlist_get(struct mdss_dsi_ctrl_pdata *ctrl) struct dcs_cmd_list *clist; struct dcs_cmd_req *req = NULL; mutex_lock(&ctrl->cmdlist_mutex); clist = &ctrl->cmdlist; if (clist->get != clist->put) { req = &clist->list[clist->get]; Loading @@ -738,6 +739,7 @@ struct dcs_cmd_req *mdss_dsi_cmdlist_get(struct mdss_dsi_ctrl_pdata *ctrl) pr_debug("%s: tot=%d put=%d get=%d\n", __func__, clist->tot, clist->put, clist->get); } mutex_unlock(&ctrl->cmdlist_mutex); return req; } Loading @@ -749,6 +751,7 @@ int mdss_dsi_cmdlist_put(struct mdss_dsi_ctrl_pdata *ctrl, int ret = 0; mutex_lock(&ctrl->cmd_mutex); mutex_lock(&ctrl->cmdlist_mutex); clist = &ctrl->cmdlist; req = &clist->list[clist->put]; *req = *cmdreq; Loading @@ -767,6 +770,8 @@ int mdss_dsi_cmdlist_put(struct mdss_dsi_ctrl_pdata *ctrl, pr_debug("%s: tot=%d put=%d get=%d\n", __func__, clist->tot, clist->put, clist->get); mutex_unlock(&ctrl->cmdlist_mutex); if (req->flags & CMD_REQ_COMMIT) { if (!ctrl->cmdlist_commit) pr_err("cmdlist_commit not implemented!\n"); Loading drivers/video/msm/mdss/mdss_dsi_host.c +25 −5 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ void mdss_dsi_ctrl_init(struct device *ctrl_dev, mutex_init(&ctrl->mutex); mutex_init(&ctrl->cmd_mutex); mutex_init(&ctrl->clk_lane_mutex); mutex_init(&ctrl->cmdlist_mutex); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->tx_buf, SZ_4K); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->rx_buf, SZ_4K); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->status_buf, SZ_4K); Loading Loading @@ -1200,6 +1201,14 @@ static void mdss_dsi_mode_setup(struct mdss_panel_data *pdata) MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x2b4, data); } /* Enable frame transfer in burst mode */ if (ctrl_pdata->shared_data->hw_rev >= MDSS_DSI_HW_REV_103) { data = MIPI_INP(ctrl_pdata->ctrl_base + 0x1b8); data = data | BIT(16); MIPI_OUTP((ctrl_pdata->ctrl_base + 0x1b8), data); ctrl_pdata->burst_mode_enabled = 1; } /* DSI_COMMAND_MODE_MDP_STREAM_CTRL */ MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x60, stream_ctrl); MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x58, stream_ctrl); Loading Loading @@ -2283,18 +2292,26 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) int ret = -EINVAL; int rc = 0; bool hs_req = false; bool cmd_mutex_acquired = false; if (mdss_get_sd_client_cnt()) return -EPERM; if (from_mdp) { /* from mdp kickoff */ if (!ctrl->burst_mode_enabled) { mutex_lock(&ctrl->cmd_mutex); cmd_mutex_acquired = true; } pinfo = &ctrl->panel_data.panel_info; if (pinfo->partial_update_enabled) roi = &pinfo->roi; } req = mdss_dsi_cmdlist_get(ctrl); if (req && from_mdp && ctrl->burst_mode_enabled) { mutex_lock(&ctrl->cmd_mutex); cmd_mutex_acquired = true; } MDSS_XLOG(ctrl->ndx, from_mdp, ctrl->mdp_busy, current->pid, XLOG_FUNC_ENTRY); Loading @@ -2302,8 +2319,11 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) if (req && (req->flags & CMD_REQ_HS_MODE)) hs_req = true; if (!ctrl->burst_mode_enabled || (from_mdp && ctrl->shared_data->cmd_clk_ln_recovery_en)) { /* make sure dsi_cmd_mdp is idle */ mdss_dsi_cmd_mdp_busy(ctrl); } mdss_dsi_get_hw_revision(ctrl); Loading Loading @@ -2403,7 +2423,7 @@ need_lock: */ if (!roi || (roi->w != 0 || roi->h != 0)) mdss_dsi_cmd_mdp_start(ctrl); if (cmd_mutex_acquired) mutex_unlock(&ctrl->cmd_mutex); } else { /* from dcs send */ if (ctrl->shared_data->cmd_clk_ln_recovery_en && Loading Loading
drivers/video/msm/mdss/mdss_dsi.c +8 −1 Original line number Diff line number Diff line Loading @@ -2493,7 +2493,7 @@ static int mdss_dsi_cont_splash_config(struct mdss_panel_info *pinfo, struct mdss_dsi_ctrl_pdata *ctrl_pdata) { void *clk_handle; int rc = 0; int rc = 0, data; if (pinfo->cont_splash_enabled) { rc = mdss_dsi_panel_power_ctrl(&(ctrl_pdata->panel_data), Loading @@ -2513,6 +2513,13 @@ static int mdss_dsi_cont_splash_config(struct mdss_panel_info *pinfo, mdss_dsi_clk_ctrl(ctrl_pdata, clk_handle, MDSS_DSI_ALL_CLKS, MDSS_DSI_CLK_ON); ctrl_pdata->is_phyreg_enabled = 1; mdss_dsi_get_hw_revision(ctrl_pdata); if ((ctrl_pdata->shared_data->hw_rev >= MDSS_DSI_HW_REV_103) && (pinfo->type == MIPI_CMD_PANEL)) { data = MIPI_INP(ctrl_pdata->ctrl_base + 0x1b8); if (data & BIT(16)) ctrl_pdata->burst_mode_enabled = true; } ctrl_pdata->ctrl_state |= (CTRL_STATE_PANEL_INIT | CTRL_STATE_MDP_ACTIVE); } else { Loading
drivers/video/msm/mdss/mdss_dsi.h +2 −1 Original line number Diff line number Diff line Loading @@ -468,6 +468,7 @@ struct mdss_dsi_ctrl_pdata { int mdp_busy; struct mutex mutex; struct mutex cmd_mutex; struct mutex cmdlist_mutex; struct regulator *lab; /* vreg handle */ struct regulator *ibb; /* vreg handle */ struct mutex clk_lane_mutex; Loading @@ -478,7 +479,7 @@ struct mdss_dsi_ctrl_pdata { bool mmss_clamp; char dlane_swap; /* data lane swap */ bool is_phyreg_enabled; bool burst_mode_enabled; struct dsi_buf tx_buf; struct dsi_buf rx_buf; Loading
drivers/video/msm/mdss/mdss_dsi_cmd.c +5 −0 Original line number Diff line number Diff line Loading @@ -729,6 +729,7 @@ struct dcs_cmd_req *mdss_dsi_cmdlist_get(struct mdss_dsi_ctrl_pdata *ctrl) struct dcs_cmd_list *clist; struct dcs_cmd_req *req = NULL; mutex_lock(&ctrl->cmdlist_mutex); clist = &ctrl->cmdlist; if (clist->get != clist->put) { req = &clist->list[clist->get]; Loading @@ -738,6 +739,7 @@ struct dcs_cmd_req *mdss_dsi_cmdlist_get(struct mdss_dsi_ctrl_pdata *ctrl) pr_debug("%s: tot=%d put=%d get=%d\n", __func__, clist->tot, clist->put, clist->get); } mutex_unlock(&ctrl->cmdlist_mutex); return req; } Loading @@ -749,6 +751,7 @@ int mdss_dsi_cmdlist_put(struct mdss_dsi_ctrl_pdata *ctrl, int ret = 0; mutex_lock(&ctrl->cmd_mutex); mutex_lock(&ctrl->cmdlist_mutex); clist = &ctrl->cmdlist; req = &clist->list[clist->put]; *req = *cmdreq; Loading @@ -767,6 +770,8 @@ int mdss_dsi_cmdlist_put(struct mdss_dsi_ctrl_pdata *ctrl, pr_debug("%s: tot=%d put=%d get=%d\n", __func__, clist->tot, clist->put, clist->get); mutex_unlock(&ctrl->cmdlist_mutex); if (req->flags & CMD_REQ_COMMIT) { if (!ctrl->cmdlist_commit) pr_err("cmdlist_commit not implemented!\n"); Loading
drivers/video/msm/mdss/mdss_dsi_host.c +25 −5 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ void mdss_dsi_ctrl_init(struct device *ctrl_dev, mutex_init(&ctrl->mutex); mutex_init(&ctrl->cmd_mutex); mutex_init(&ctrl->clk_lane_mutex); mutex_init(&ctrl->cmdlist_mutex); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->tx_buf, SZ_4K); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->rx_buf, SZ_4K); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->status_buf, SZ_4K); Loading Loading @@ -1200,6 +1201,14 @@ static void mdss_dsi_mode_setup(struct mdss_panel_data *pdata) MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x2b4, data); } /* Enable frame transfer in burst mode */ if (ctrl_pdata->shared_data->hw_rev >= MDSS_DSI_HW_REV_103) { data = MIPI_INP(ctrl_pdata->ctrl_base + 0x1b8); data = data | BIT(16); MIPI_OUTP((ctrl_pdata->ctrl_base + 0x1b8), data); ctrl_pdata->burst_mode_enabled = 1; } /* DSI_COMMAND_MODE_MDP_STREAM_CTRL */ MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x60, stream_ctrl); MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x58, stream_ctrl); Loading Loading @@ -2283,18 +2292,26 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) int ret = -EINVAL; int rc = 0; bool hs_req = false; bool cmd_mutex_acquired = false; if (mdss_get_sd_client_cnt()) return -EPERM; if (from_mdp) { /* from mdp kickoff */ if (!ctrl->burst_mode_enabled) { mutex_lock(&ctrl->cmd_mutex); cmd_mutex_acquired = true; } pinfo = &ctrl->panel_data.panel_info; if (pinfo->partial_update_enabled) roi = &pinfo->roi; } req = mdss_dsi_cmdlist_get(ctrl); if (req && from_mdp && ctrl->burst_mode_enabled) { mutex_lock(&ctrl->cmd_mutex); cmd_mutex_acquired = true; } MDSS_XLOG(ctrl->ndx, from_mdp, ctrl->mdp_busy, current->pid, XLOG_FUNC_ENTRY); Loading @@ -2302,8 +2319,11 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) if (req && (req->flags & CMD_REQ_HS_MODE)) hs_req = true; if (!ctrl->burst_mode_enabled || (from_mdp && ctrl->shared_data->cmd_clk_ln_recovery_en)) { /* make sure dsi_cmd_mdp is idle */ mdss_dsi_cmd_mdp_busy(ctrl); } mdss_dsi_get_hw_revision(ctrl); Loading Loading @@ -2403,7 +2423,7 @@ need_lock: */ if (!roi || (roi->w != 0 || roi->h != 0)) mdss_dsi_cmd_mdp_start(ctrl); if (cmd_mutex_acquired) mutex_unlock(&ctrl->cmd_mutex); } else { /* from dcs send */ if (ctrl->shared_data->cmd_clk_ln_recovery_en && Loading