Loading drivers/video/fbdev/msm/mdp3_ctrl.c +18 −2 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ static void mdp3_dispatch_clk_off(struct work_struct *work) return; mutex_lock(&session->lock); MDSS_XLOG(0x111); if (session->vsync_enabled || atomic_read(&session->vsync_countdown) > 0) { mutex_unlock(&session->lock); Loading @@ -182,10 +183,17 @@ 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, WAIT_DMA_TIMEOUT); MDSS_XLOG(0x222); if (rc <= 0) { struct mdss_panel_data *panel; Loading @@ -196,6 +204,7 @@ static void mdp3_dispatch_clk_off(struct work_struct *work) 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 @@ -1017,8 +1026,10 @@ static int mdp3_ctrl_off(struct msm_fb_data_type *mfd) MDSS_XLOG(XLOG_FUNC_ENTRY, __LINE__, mdss_fb_is_power_on_ulp(mfd), mfd->panel_power_state); panel = mdp3_session->panel; mutex_lock(&mdp3_session->lock); cancel_work_sync(&mdp3_session->clk_off_work); mutex_lock(&mdp3_session->lock); MDSS_XLOG(0x111); pr_debug("Requested power state = %d\n", mfd->panel_power_state); if (mdss_fb_is_power_on_lp(mfd)) { /* Loading Loading @@ -1485,6 +1496,7 @@ static int mdp3_ctrl_display_commit_kickoff(struct msm_fb_data_type *mfd, } mutex_unlock(&mdp3_res->fs_idle_pc_lock); cancel_work_sync(&mdp3_session->clk_off_work); mutex_lock(&mdp3_session->lock); if (!mdp3_session->status) { Loading @@ -1492,7 +1504,7 @@ static int mdp3_ctrl_display_commit_kickoff(struct msm_fb_data_type *mfd, mutex_unlock(&mdp3_session->lock); return -EPERM; } MDSS_XLOG(0x111); mdp3_ctrl_notify(mdp3_session, MDP_NOTIFY_FRAME_BEGIN); data = mdp3_bufq_pop(&mdp3_session->bufq_in); if (data) { Loading Loading @@ -2714,6 +2726,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 @@ -2721,6 +2735,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/fbdev/msm/mdp3_ctrl.c +18 −2 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ static void mdp3_dispatch_clk_off(struct work_struct *work) return; mutex_lock(&session->lock); MDSS_XLOG(0x111); if (session->vsync_enabled || atomic_read(&session->vsync_countdown) > 0) { mutex_unlock(&session->lock); Loading @@ -182,10 +183,17 @@ 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, WAIT_DMA_TIMEOUT); MDSS_XLOG(0x222); if (rc <= 0) { struct mdss_panel_data *panel; Loading @@ -196,6 +204,7 @@ static void mdp3_dispatch_clk_off(struct work_struct *work) 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 @@ -1017,8 +1026,10 @@ static int mdp3_ctrl_off(struct msm_fb_data_type *mfd) MDSS_XLOG(XLOG_FUNC_ENTRY, __LINE__, mdss_fb_is_power_on_ulp(mfd), mfd->panel_power_state); panel = mdp3_session->panel; mutex_lock(&mdp3_session->lock); cancel_work_sync(&mdp3_session->clk_off_work); mutex_lock(&mdp3_session->lock); MDSS_XLOG(0x111); pr_debug("Requested power state = %d\n", mfd->panel_power_state); if (mdss_fb_is_power_on_lp(mfd)) { /* Loading Loading @@ -1485,6 +1496,7 @@ static int mdp3_ctrl_display_commit_kickoff(struct msm_fb_data_type *mfd, } mutex_unlock(&mdp3_res->fs_idle_pc_lock); cancel_work_sync(&mdp3_session->clk_off_work); mutex_lock(&mdp3_session->lock); if (!mdp3_session->status) { Loading @@ -1492,7 +1504,7 @@ static int mdp3_ctrl_display_commit_kickoff(struct msm_fb_data_type *mfd, mutex_unlock(&mdp3_session->lock); return -EPERM; } MDSS_XLOG(0x111); mdp3_ctrl_notify(mdp3_session, MDP_NOTIFY_FRAME_BEGIN); data = mdp3_bufq_pop(&mdp3_session->bufq_in); if (data) { Loading Loading @@ -2714,6 +2726,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 @@ -2721,6 +2735,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