Loading drivers/video/msm/mdss/mdss_mdp.c +8 −7 Original line number Diff line number Diff line Loading @@ -174,9 +174,6 @@ static int mdss_mdp_parse_dt_misc(struct platform_device *pdev); static int mdss_mdp_parse_dt_ad_cfg(struct platform_device *pdev); static int mdss_mdp_parse_dt_bus_scale(struct platform_device *pdev); static int mdss_mdp_parse_dt_ppb_off(struct platform_device *pdev); static int mdss_iommu_attach(struct mdss_data_type *mdata); static int mdss_iommu_dettach(struct mdss_data_type *mdata); /** * mdss_mdp_vbif_axi_halt() - Halt MDSS AXI ports * @mdata: pointer to the global mdss data structure. Loading Loading @@ -683,7 +680,11 @@ int mdss_iommu_ctrl(int enable) __builtin_return_address(0), enable, mdata->iommu_ref_cnt); if (enable) { if (mdata->iommu_ref_cnt == 0) { /* * delay iommu attach until continous splash screen has * finished handoff, as it may still be working with phys addr */ if (!mdata->iommu_attached && !mdata->handoff_pending) { if (mdata->needs_iommu_bw_vote) mdss_bus_scale_set_quota(MDSS_HW_IOMMU, SZ_1M, SZ_1M); Loading Loading @@ -984,7 +985,7 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata) return 0; } static int mdss_iommu_attach(struct mdss_data_type *mdata) int mdss_iommu_attach(struct mdss_data_type *mdata) { struct iommu_domain *domain; struct mdss_iommu_map_type *iomap; Loading Loading @@ -1025,7 +1026,7 @@ end: return rc; } static int mdss_iommu_dettach(struct mdss_data_type *mdata) int mdss_iommu_dettach(struct mdss_data_type *mdata) { struct iommu_domain *domain; struct mdss_iommu_map_type *iomap; Loading Loading @@ -1057,7 +1058,7 @@ end: return 0; } static int mdss_iommu_init(struct mdss_data_type *mdata) int mdss_iommu_init(struct mdss_data_type *mdata) { struct msm_iova_layout layout; struct iommu_domain *domain; Loading drivers/video/msm/mdss/mdss_mdp.h +2 −0 Original line number Diff line number Diff line Loading @@ -816,6 +816,8 @@ static inline u32 left_lm_w_from_mfd(struct msm_fb_data_type *mfd) } irqreturn_t mdss_mdp_isr(int irq, void *ptr); int mdss_iommu_attach(struct mdss_data_type *mdata); int mdss_iommu_dettach(struct mdss_data_type *mdata); void mdss_mdp_irq_clear(struct mdss_data_type *mdata, u32 intr_type, u32 intf_num); int mdss_mdp_irq_enable(u32 intr_type, u32 intf_num); Loading drivers/video/msm/mdss/mdss_mdp_overlay.c +10 −14 Original line number Diff line number Diff line Loading @@ -1301,12 +1301,10 @@ int mdss_mdp_overlay_start(struct msm_fb_data_type *mfd) struct mdss_data_type *mdata = mdss_mdp_get_mdata(); struct mdss_mdp_ctl *ctl = mdp5_data->ctl; pr_debug("starting fb%d overlay called from %pS\n", mfd->index, __builtin_return_address(0)); if (mdss_mdp_ctl_is_power_on(ctl)) { if (!mdp5_data->mdata->batfet) mdss_mdp_batfet_ctrl(mdp5_data->mdata, true); mdss_mdp_release_splash_pipe(mfd); return 0; } else if (mfd->panel_info->cont_splash_enabled) { mutex_lock(&mdp5_data->list_lock); Loading Loading @@ -1704,18 +1702,19 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd, ret = mdss_mdp_overlay_start(mfd); if (ret) { pr_err("unable to start overlay %d (%d)\n", mfd->index, ret); goto unlock_exit; } if (!mdss_mdp_ctl_is_power_on(ctl)) { pr_debug("ctl is not powerd on. skip kickoff\n"); goto unlock_exit; mutex_unlock(&mdp5_data->ov_lock); if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); return ret; } ret = mdss_iommu_ctrl(1); if (IS_ERR_VALUE(ret)) { pr_err("iommu attach failed rc=%d\n", ret); goto unlock_exit; mutex_unlock(&mdp5_data->ov_lock); if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); return ret; } mutex_lock(&mdp5_data->list_lock); Loading Loading @@ -1880,11 +1879,10 @@ commit_fail: if (!mdp5_data->kickoff_released) mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_CTX_DONE); mdss_iommu_ctrl(0); unlock_exit: mutex_unlock(&mdp5_data->ov_lock); if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); mdss_iommu_ctrl(0); ATRACE_END(__func__); return ret; Loading Loading @@ -2122,8 +2120,6 @@ static int mdss_mdp_overlay_play(struct msm_fb_data_type *mfd, goto done; } mdss_mdp_release_splash_pipe(mfd); if (req->id & MDSS_MDP_ROT_SESSION_MASK) { ret = mdss_mdp_rotator_play(mfd, req); } else if (req->id == BORDERFILL_NDX) { Loading Loading
drivers/video/msm/mdss/mdss_mdp.c +8 −7 Original line number Diff line number Diff line Loading @@ -174,9 +174,6 @@ static int mdss_mdp_parse_dt_misc(struct platform_device *pdev); static int mdss_mdp_parse_dt_ad_cfg(struct platform_device *pdev); static int mdss_mdp_parse_dt_bus_scale(struct platform_device *pdev); static int mdss_mdp_parse_dt_ppb_off(struct platform_device *pdev); static int mdss_iommu_attach(struct mdss_data_type *mdata); static int mdss_iommu_dettach(struct mdss_data_type *mdata); /** * mdss_mdp_vbif_axi_halt() - Halt MDSS AXI ports * @mdata: pointer to the global mdss data structure. Loading Loading @@ -683,7 +680,11 @@ int mdss_iommu_ctrl(int enable) __builtin_return_address(0), enable, mdata->iommu_ref_cnt); if (enable) { if (mdata->iommu_ref_cnt == 0) { /* * delay iommu attach until continous splash screen has * finished handoff, as it may still be working with phys addr */ if (!mdata->iommu_attached && !mdata->handoff_pending) { if (mdata->needs_iommu_bw_vote) mdss_bus_scale_set_quota(MDSS_HW_IOMMU, SZ_1M, SZ_1M); Loading Loading @@ -984,7 +985,7 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata) return 0; } static int mdss_iommu_attach(struct mdss_data_type *mdata) int mdss_iommu_attach(struct mdss_data_type *mdata) { struct iommu_domain *domain; struct mdss_iommu_map_type *iomap; Loading Loading @@ -1025,7 +1026,7 @@ end: return rc; } static int mdss_iommu_dettach(struct mdss_data_type *mdata) int mdss_iommu_dettach(struct mdss_data_type *mdata) { struct iommu_domain *domain; struct mdss_iommu_map_type *iomap; Loading Loading @@ -1057,7 +1058,7 @@ end: return 0; } static int mdss_iommu_init(struct mdss_data_type *mdata) int mdss_iommu_init(struct mdss_data_type *mdata) { struct msm_iova_layout layout; struct iommu_domain *domain; Loading
drivers/video/msm/mdss/mdss_mdp.h +2 −0 Original line number Diff line number Diff line Loading @@ -816,6 +816,8 @@ static inline u32 left_lm_w_from_mfd(struct msm_fb_data_type *mfd) } irqreturn_t mdss_mdp_isr(int irq, void *ptr); int mdss_iommu_attach(struct mdss_data_type *mdata); int mdss_iommu_dettach(struct mdss_data_type *mdata); void mdss_mdp_irq_clear(struct mdss_data_type *mdata, u32 intr_type, u32 intf_num); int mdss_mdp_irq_enable(u32 intr_type, u32 intf_num); Loading
drivers/video/msm/mdss/mdss_mdp_overlay.c +10 −14 Original line number Diff line number Diff line Loading @@ -1301,12 +1301,10 @@ int mdss_mdp_overlay_start(struct msm_fb_data_type *mfd) struct mdss_data_type *mdata = mdss_mdp_get_mdata(); struct mdss_mdp_ctl *ctl = mdp5_data->ctl; pr_debug("starting fb%d overlay called from %pS\n", mfd->index, __builtin_return_address(0)); if (mdss_mdp_ctl_is_power_on(ctl)) { if (!mdp5_data->mdata->batfet) mdss_mdp_batfet_ctrl(mdp5_data->mdata, true); mdss_mdp_release_splash_pipe(mfd); return 0; } else if (mfd->panel_info->cont_splash_enabled) { mutex_lock(&mdp5_data->list_lock); Loading Loading @@ -1704,18 +1702,19 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd, ret = mdss_mdp_overlay_start(mfd); if (ret) { pr_err("unable to start overlay %d (%d)\n", mfd->index, ret); goto unlock_exit; } if (!mdss_mdp_ctl_is_power_on(ctl)) { pr_debug("ctl is not powerd on. skip kickoff\n"); goto unlock_exit; mutex_unlock(&mdp5_data->ov_lock); if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); return ret; } ret = mdss_iommu_ctrl(1); if (IS_ERR_VALUE(ret)) { pr_err("iommu attach failed rc=%d\n", ret); goto unlock_exit; mutex_unlock(&mdp5_data->ov_lock); if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); return ret; } mutex_lock(&mdp5_data->list_lock); Loading Loading @@ -1880,11 +1879,10 @@ commit_fail: if (!mdp5_data->kickoff_released) mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_CTX_DONE); mdss_iommu_ctrl(0); unlock_exit: mutex_unlock(&mdp5_data->ov_lock); if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); mdss_iommu_ctrl(0); ATRACE_END(__func__); return ret; Loading Loading @@ -2122,8 +2120,6 @@ static int mdss_mdp_overlay_play(struct msm_fb_data_type *mfd, goto done; } mdss_mdp_release_splash_pipe(mfd); if (req->id & MDSS_MDP_ROT_SESSION_MASK) { ret = mdss_mdp_rotator_play(mfd, req); } else if (req->id == BORDERFILL_NDX) { Loading