Loading drivers/video/msm/mdss/mdp3.c +23 −4 Original line number Diff line number Diff line Loading @@ -346,7 +346,8 @@ static void mdp3_bus_scale_unregister(void) } } int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota) int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ab_quota_nrt, u64 ib_quota) { struct mdp3_bus_handle_map *bus_handle; int cur_bus_idx; Loading @@ -365,6 +366,9 @@ int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota) return -EINVAL; } if (ab_quota_nrt != 0) pr_err("Ignoring non zero NRT bus voting on mdp3\n"); bus_handle->ab[client] = ab_quota; bus_handle->ib[client] = ib_quota; Loading Loading @@ -620,9 +624,9 @@ void mdp3_bus_bw_iommu_enable(int enable, int client) ab += bus_handle->restore_ab[i]; ib += bus_handle->restore_ib[i]; } mdp3_bus_scale_set_quota(client, ab, ib); mdp3_bus_scale_set_quota(client, ab, 0, ib); } else if (!enable && ref_cnt == 0) { mdp3_bus_scale_set_quota(client, 0, 0); mdp3_bus_scale_set_quota(client, 0, 0, 0); mdp3_iommu_disable(); } else if (ref_cnt < 0) { pr_err("Ref count < 0, bus client=%d, ref_cnt=%d", Loading Loading @@ -1370,6 +1374,17 @@ int mdp3_iommu_disable() return rc; } int mdp3_iommu_ctrl(int enable) { int rc; if (enable) rc = mdp3_iommu_enable(); else rc = mdp3_iommu_disable(); return rc; } int mdp3_iommu_is_attached() { struct mdp3_iommu_ctx_map *context_map; Loading Loading @@ -1616,7 +1631,7 @@ static int mdp3_continuous_splash_on(struct mdss_panel_data *pdata) ab = panel_info->xres * panel_info->yres * 4; ab *= panel_info->mipi.frame_rate; ib = (ab * 3) / 2; rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, 0, ib); bus_handle->restore_ab[MDP3_CLIENT_DMA_P] = ab; bus_handle->restore_ib[MDP3_CLIENT_DMA_P] = ib; Loading Loading @@ -1938,6 +1953,9 @@ static int mdp3_probe(struct platform_device *pdev) rc = -ENODEV; goto get_util_fail; } mdp3_res->mdss_util->iommu_attached = mdp3_iommu_is_attached; mdp3_res->mdss_util->iommu_ctrl = mdp3_iommu_ctrl; mdp3_res->mdss_util->bus_scale_set_quota = mdp3_bus_scale_set_quota; rc = mdp3_parse_dt(pdev); if (rc) Loading Loading @@ -1973,6 +1991,7 @@ static int mdp3_probe(struct platform_device *pdev) &underrun_cb); if (rc) pr_err("unable to configure interrupt callback\n"); mdp3_res->mdss_util->mdp_probe_done = true; probe_done: if (IS_ERR_VALUE(rc)) Loading drivers/video/msm/mdss/mdp3.h +2 −1 Original line number Diff line number Diff line Loading @@ -173,7 +173,8 @@ void mdp3_irq_deregister(void); int mdp3_clk_set_rate(int clk_type, unsigned long clk_rate, int client); int mdp3_clk_enable(int enable, int dsi_clk); int mdp3_res_update(int enable, int dsi_clk, int client); int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota); int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ab_quota_nrt, u64 ib_quota); int mdp3_put_img(struct mdp3_img_data *data); int mdp3_get_img(struct msmfb_data *img, struct mdp3_img_data *data); int mdp3_iommu_enable(void); Loading drivers/video/msm/mdss/mdp3_ctrl.c +2 −2 Original line number Diff line number Diff line Loading @@ -354,9 +354,9 @@ static int mdp3_ctrl_res_req_bus(struct msm_fb_data_type *mfd, int status) ab = panel_info->xres * panel_info->yres * 4; ab *= panel_info->mipi.frame_rate; ib = (ab * 3) / 2; rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, 0, ib); } else { rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, 0, 0); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, 0, 0, 0); } return rc; } Loading drivers/video/msm/mdss/mdp3_ppp.c +2 −2 Original line number Diff line number Diff line Loading @@ -347,7 +347,7 @@ int mdp3_ppp_vote_update(struct msm_fb_data_type *mfd) ab = ib / 2; else ab = req_bw; rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, 0, ib); if (rc < 0) { pr_err("%s: scale_set_quota failed\n", __func__); return rc; Loading Loading @@ -381,7 +381,7 @@ int mdp3_ppp_turnon(struct msm_fb_data_type *mfd, int on_off) pr_err("%s: mdp3_clk_enable failed\n", __func__); return rc; } rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, 0, ib); if (rc < 0) { mdp3_res_update(!on_off, 0, MDP3_CLIENT_PPP); pr_err("%s: scale_set_quota failed\n", __func__); Loading drivers/video/msm/mdss/mdss.h +6 −7 Original line number Diff line number Diff line Loading @@ -272,11 +272,17 @@ int mdss_bus_scale_set_quota(int client, u64 ab_quota_rt, u64 ab_quota_nrt, u64 ib_quota); struct mdss_util_intf { bool mdp_probe_done; int (*register_irq)(struct mdss_hw *hw); void (*enable_irq)(struct mdss_hw *hw); void (*disable_irq)(struct mdss_hw *hw); void (*disable_irq_nosync)(struct mdss_hw *hw); int (*irq_dispatch)(u32 hw_ndx, int irq, void *ptr); int (*iommu_attached)(void); int (*iommu_ctrl)(int enable); void (*bus_bandwidth_ctrl)(int enable); int (*bus_scale_set_quota)(int client, u64 ab_quota, u64 ab_quote_nrt, u64 ib_quota); }; struct mdss_util_intf *mdss_get_util_intf(void); Loading @@ -288,13 +294,6 @@ static inline struct ion_client *mdss_get_ionclient(void) return mdss_res->iclient; } static inline int is_mdss_iommu_attached(void) { if (!mdss_res) return false; return mdss_res->iommu_attached; } static inline int mdss_get_iommu_domain(u32 type) { if (type >= MDSS_IOMMU_MAX_DOMAIN) Loading Loading
drivers/video/msm/mdss/mdp3.c +23 −4 Original line number Diff line number Diff line Loading @@ -346,7 +346,8 @@ static void mdp3_bus_scale_unregister(void) } } int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota) int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ab_quota_nrt, u64 ib_quota) { struct mdp3_bus_handle_map *bus_handle; int cur_bus_idx; Loading @@ -365,6 +366,9 @@ int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota) return -EINVAL; } if (ab_quota_nrt != 0) pr_err("Ignoring non zero NRT bus voting on mdp3\n"); bus_handle->ab[client] = ab_quota; bus_handle->ib[client] = ib_quota; Loading Loading @@ -620,9 +624,9 @@ void mdp3_bus_bw_iommu_enable(int enable, int client) ab += bus_handle->restore_ab[i]; ib += bus_handle->restore_ib[i]; } mdp3_bus_scale_set_quota(client, ab, ib); mdp3_bus_scale_set_quota(client, ab, 0, ib); } else if (!enable && ref_cnt == 0) { mdp3_bus_scale_set_quota(client, 0, 0); mdp3_bus_scale_set_quota(client, 0, 0, 0); mdp3_iommu_disable(); } else if (ref_cnt < 0) { pr_err("Ref count < 0, bus client=%d, ref_cnt=%d", Loading Loading @@ -1370,6 +1374,17 @@ int mdp3_iommu_disable() return rc; } int mdp3_iommu_ctrl(int enable) { int rc; if (enable) rc = mdp3_iommu_enable(); else rc = mdp3_iommu_disable(); return rc; } int mdp3_iommu_is_attached() { struct mdp3_iommu_ctx_map *context_map; Loading Loading @@ -1616,7 +1631,7 @@ static int mdp3_continuous_splash_on(struct mdss_panel_data *pdata) ab = panel_info->xres * panel_info->yres * 4; ab *= panel_info->mipi.frame_rate; ib = (ab * 3) / 2; rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, 0, ib); bus_handle->restore_ab[MDP3_CLIENT_DMA_P] = ab; bus_handle->restore_ib[MDP3_CLIENT_DMA_P] = ib; Loading Loading @@ -1938,6 +1953,9 @@ static int mdp3_probe(struct platform_device *pdev) rc = -ENODEV; goto get_util_fail; } mdp3_res->mdss_util->iommu_attached = mdp3_iommu_is_attached; mdp3_res->mdss_util->iommu_ctrl = mdp3_iommu_ctrl; mdp3_res->mdss_util->bus_scale_set_quota = mdp3_bus_scale_set_quota; rc = mdp3_parse_dt(pdev); if (rc) Loading Loading @@ -1973,6 +1991,7 @@ static int mdp3_probe(struct platform_device *pdev) &underrun_cb); if (rc) pr_err("unable to configure interrupt callback\n"); mdp3_res->mdss_util->mdp_probe_done = true; probe_done: if (IS_ERR_VALUE(rc)) Loading
drivers/video/msm/mdss/mdp3.h +2 −1 Original line number Diff line number Diff line Loading @@ -173,7 +173,8 @@ void mdp3_irq_deregister(void); int mdp3_clk_set_rate(int clk_type, unsigned long clk_rate, int client); int mdp3_clk_enable(int enable, int dsi_clk); int mdp3_res_update(int enable, int dsi_clk, int client); int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota); int mdp3_bus_scale_set_quota(int client, u64 ab_quota, u64 ab_quota_nrt, u64 ib_quota); int mdp3_put_img(struct mdp3_img_data *data); int mdp3_get_img(struct msmfb_data *img, struct mdp3_img_data *data); int mdp3_iommu_enable(void); Loading
drivers/video/msm/mdss/mdp3_ctrl.c +2 −2 Original line number Diff line number Diff line Loading @@ -354,9 +354,9 @@ static int mdp3_ctrl_res_req_bus(struct msm_fb_data_type *mfd, int status) ab = panel_info->xres * panel_info->yres * 4; ab *= panel_info->mipi.frame_rate; ib = (ab * 3) / 2; rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, ab, 0, ib); } else { rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, 0, 0); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_DMA_P, 0, 0, 0); } return rc; } Loading
drivers/video/msm/mdss/mdp3_ppp.c +2 −2 Original line number Diff line number Diff line Loading @@ -347,7 +347,7 @@ int mdp3_ppp_vote_update(struct msm_fb_data_type *mfd) ab = ib / 2; else ab = req_bw; rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, 0, ib); if (rc < 0) { pr_err("%s: scale_set_quota failed\n", __func__); return rc; Loading Loading @@ -381,7 +381,7 @@ int mdp3_ppp_turnon(struct msm_fb_data_type *mfd, int on_off) pr_err("%s: mdp3_clk_enable failed\n", __func__); return rc; } rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, ib); rc = mdp3_bus_scale_set_quota(MDP3_CLIENT_PPP, ab, 0, ib); if (rc < 0) { mdp3_res_update(!on_off, 0, MDP3_CLIENT_PPP); pr_err("%s: scale_set_quota failed\n", __func__); Loading
drivers/video/msm/mdss/mdss.h +6 −7 Original line number Diff line number Diff line Loading @@ -272,11 +272,17 @@ int mdss_bus_scale_set_quota(int client, u64 ab_quota_rt, u64 ab_quota_nrt, u64 ib_quota); struct mdss_util_intf { bool mdp_probe_done; int (*register_irq)(struct mdss_hw *hw); void (*enable_irq)(struct mdss_hw *hw); void (*disable_irq)(struct mdss_hw *hw); void (*disable_irq_nosync)(struct mdss_hw *hw); int (*irq_dispatch)(u32 hw_ndx, int irq, void *ptr); int (*iommu_attached)(void); int (*iommu_ctrl)(int enable); void (*bus_bandwidth_ctrl)(int enable); int (*bus_scale_set_quota)(int client, u64 ab_quota, u64 ab_quote_nrt, u64 ib_quota); }; struct mdss_util_intf *mdss_get_util_intf(void); Loading @@ -288,13 +294,6 @@ static inline struct ion_client *mdss_get_ionclient(void) return mdss_res->iclient; } static inline int is_mdss_iommu_attached(void) { if (!mdss_res) return false; return mdss_res->iommu_attached; } static inline int mdss_get_iommu_domain(u32 type) { if (type >= MDSS_IOMMU_MAX_DOMAIN) Loading