Loading drivers/video/msm/mdss/mdp3_ctrl.c +13 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,12 @@ static void mdp3_dispatch_clk_off(struct work_struct *work) return; } if (!session->clk_on) { mutex_unlock(&session->lock); pr_debug("%s: Clk shut down is done\n", __func__); MDSS_XLOG(XLOG_FUNC_EXIT, __LINE__); return; } if (session->intf->active) { retry_dma_done: rc = wait_for_completion_timeout(&session->dma_completion, Loading @@ -208,6 +214,7 @@ retry_dma_done: if (--retry_count) { pr_err("dmap is busy, retry %d\n", retry_count); MDSS_XLOG(__LINE__, retry_count); goto retry_dma_done; } pr_err("dmap is still busy, bug_on\n"); Loading Loading @@ -1049,6 +1056,7 @@ static int mdp3_ctrl_off(struct msm_fb_data_type *mfd) panel = mdp3_session->panel; mutex_lock(&mdp3_session->lock); cancel_work_sync(&mdp3_session->clk_off_work); pr_debug("Requested power state = %d\n", mfd->panel_power_state); if (mdss_fb_is_power_on_lp(mfd)) { /* Loading Loading @@ -1520,6 +1528,7 @@ static int mdp3_ctrl_display_commit_kickoff(struct msm_fb_data_type *mfd, mdp3_ctrl_notify(mdp3_session, MDP_NOTIFY_FRAME_BEGIN); data = mdp3_bufq_pop(&mdp3_session->bufq_in); if (data) { cancel_work_sync(&mdp3_session->clk_off_work); mdp3_ctrl_reset_countdown(mdp3_session, mfd); mdp3_ctrl_clk_enable(mfd, 1); stride = mdp3_session->dma->source_config.stride; Loading Loading @@ -2757,6 +2766,8 @@ static int mdp3_ctrl_ioctl_handler(struct msm_fb_data_type *mfd, } mutex_unlock(&mdp3_res->fs_idle_pc_lock); rc = mdp3_ctrl_async_blit_req(mfd, argp); if (!rc) cancel_work_sync(&mdp3_session->clk_off_work); break; case MSMFB_BLIT: mutex_lock(&mdp3_res->fs_idle_pc_lock); Loading @@ -2764,6 +2775,8 @@ static int mdp3_ctrl_ioctl_handler(struct msm_fb_data_type *mfd, mdp3_ctrl_reset(mfd); mutex_unlock(&mdp3_res->fs_idle_pc_lock); rc = mdp3_ctrl_blit_req(mfd, argp); if (!rc) cancel_work_sync(&mdp3_session->clk_off_work); break; case MSMFB_METADATA_GET: rc = copy_from_user(&metadata, argp, sizeof(metadata)); Loading Loading
drivers/video/msm/mdss/mdp3_ctrl.c +13 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,12 @@ static void mdp3_dispatch_clk_off(struct work_struct *work) return; } if (!session->clk_on) { mutex_unlock(&session->lock); pr_debug("%s: Clk shut down is done\n", __func__); MDSS_XLOG(XLOG_FUNC_EXIT, __LINE__); return; } if (session->intf->active) { retry_dma_done: rc = wait_for_completion_timeout(&session->dma_completion, Loading @@ -208,6 +214,7 @@ retry_dma_done: if (--retry_count) { pr_err("dmap is busy, retry %d\n", retry_count); MDSS_XLOG(__LINE__, retry_count); goto retry_dma_done; } pr_err("dmap is still busy, bug_on\n"); Loading Loading @@ -1049,6 +1056,7 @@ static int mdp3_ctrl_off(struct msm_fb_data_type *mfd) panel = mdp3_session->panel; mutex_lock(&mdp3_session->lock); cancel_work_sync(&mdp3_session->clk_off_work); pr_debug("Requested power state = %d\n", mfd->panel_power_state); if (mdss_fb_is_power_on_lp(mfd)) { /* Loading Loading @@ -1520,6 +1528,7 @@ static int mdp3_ctrl_display_commit_kickoff(struct msm_fb_data_type *mfd, mdp3_ctrl_notify(mdp3_session, MDP_NOTIFY_FRAME_BEGIN); data = mdp3_bufq_pop(&mdp3_session->bufq_in); if (data) { cancel_work_sync(&mdp3_session->clk_off_work); mdp3_ctrl_reset_countdown(mdp3_session, mfd); mdp3_ctrl_clk_enable(mfd, 1); stride = mdp3_session->dma->source_config.stride; Loading Loading @@ -2757,6 +2766,8 @@ static int mdp3_ctrl_ioctl_handler(struct msm_fb_data_type *mfd, } mutex_unlock(&mdp3_res->fs_idle_pc_lock); rc = mdp3_ctrl_async_blit_req(mfd, argp); if (!rc) cancel_work_sync(&mdp3_session->clk_off_work); break; case MSMFB_BLIT: mutex_lock(&mdp3_res->fs_idle_pc_lock); Loading @@ -2764,6 +2775,8 @@ static int mdp3_ctrl_ioctl_handler(struct msm_fb_data_type *mfd, mdp3_ctrl_reset(mfd); mutex_unlock(&mdp3_res->fs_idle_pc_lock); rc = mdp3_ctrl_blit_req(mfd, argp); if (!rc) cancel_work_sync(&mdp3_session->clk_off_work); break; case MSMFB_METADATA_GET: rc = copy_from_user(&metadata, argp, sizeof(metadata)); Loading