diff --git a/drivers/video/fbdev/msm/mdss.h b/drivers/video/fbdev/msm/mdss.h index 52459920ebf5..4fa2fad2b02f 100644 --- a/drivers/video/fbdev/msm/mdss.h +++ b/drivers/video/fbdev/msm/mdss.h @@ -285,11 +285,20 @@ struct mdss_data_type { u32 rot_block_size; + /* data bus (AXI) */ + u32 bus_hdl; + u32 bus_ref_cnt; + struct mutex bus_lock; + + /* register bus (AHB) */ + u32 reg_bus_hdl; + u32 reg_bus_ref_cnt; + struct mutex reg_bus_lock; + u32 axi_port_cnt; u32 nrt_axi_port_cnt; u32 bus_channels; u32 curr_bw_uc_idx; - u32 bus_hdl; struct msm_bus_scale_pdata *bus_scale_table; u32 max_bw_low; u32 max_bw_high; @@ -297,10 +306,6 @@ struct mdss_data_type { u32 *vbif_rt_qos; u32 *vbif_nrt_qos; u32 npriority_lvl; - u32 bus_bw_cnt; - struct mutex bus_bw_lock; - - u32 reg_bus_hdl; struct mdss_fudge_factor ab_factor; struct mdss_fudge_factor ib_factor; @@ -398,9 +403,6 @@ struct mdss_data_type { struct mdss_mdp_dsc *dsc_off; u32 ndsc; - struct mutex mdp_bus_lock; - u32 bus_ref_cnt; - struct mdss_max_bw_settings *max_bw_settings; u32 bw_mode_bitmap; u32 max_bw_settings_cnt; @@ -425,7 +427,7 @@ struct irq_info *mdss_intr_line(void); void mdss_bus_bandwidth_ctrl(int enable); int mdss_iommu_ctrl(int enable); int mdss_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota); -int mdss_enable_bus_vote(int usecase_ndx); +int mdss_update_reg_bus_vote(int usecase_ndx); struct mdss_util_intf { bool mdp_probe_done; diff --git a/drivers/video/fbdev/msm/mdss_hdmi_tx.c b/drivers/video/fbdev/msm/mdss_hdmi_tx.c index 34d04b805fd1..39e63e8a3edd 100644 --- a/drivers/video/fbdev/msm/mdss_hdmi_tx.c +++ b/drivers/video/fbdev/msm/mdss_hdmi_tx.c @@ -2199,7 +2199,7 @@ static int hdmi_tx_enable_power(struct hdmi_tx_ctrl *hdmi_ctrl, __func__, hdmi_tx_pm_name(module), rc); goto disable_vreg; } - mdss_enable_bus_vote(VOTE_INDEX_19_MHZ); + mdss_update_reg_bus_vote(VOTE_INDEX_19_MHZ); rc = msm_dss_clk_set_rate(power_data->clk_config, power_data->num_clk); @@ -2219,7 +2219,7 @@ static int hdmi_tx_enable_power(struct hdmi_tx_ctrl *hdmi_ctrl, } else { msm_dss_enable_clk(power_data->clk_config, power_data->num_clk, 0); - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); msm_dss_enable_gpio(power_data->gpio_config, power_data->num_gpio, 0); hdmi_tx_pinctrl_set_state(hdmi_ctrl, module, 0); @@ -2230,7 +2230,7 @@ static int hdmi_tx_enable_power(struct hdmi_tx_ctrl *hdmi_ctrl, return rc; disable_gpio: - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); msm_dss_enable_gpio(power_data->gpio_config, power_data->num_gpio, 0); disable_vreg: msm_dss_enable_vreg(power_data->vreg_config, power_data->num_vreg, 0); diff --git a/drivers/video/fbdev/msm/mdss_mdp.c b/drivers/video/fbdev/msm/mdss_mdp.c index 8fcb39513290..08a80ae5ab8b 100644 --- a/drivers/video/fbdev/msm/mdss_mdp.c +++ b/drivers/video/fbdev/msm/mdss_mdp.c @@ -303,7 +303,7 @@ static void mdss_mdp_bus_scale_unregister(struct mdss_data_type *mdata) } /* - * Caller needs to hold mdata->bus_bw_lock lock before calling this function. + * Caller needs to hold mdata->bus_lock lock before calling this function. */ static int mdss_mdp_bus_scale_set_quota(u64 ab_quota_rt, u64 ab_quota_nrt, u64 ib_quota_rt, u64 ib_quota_nrt) @@ -398,7 +398,7 @@ static int mdss_mdp_bus_scale_set_quota(u64 ab_quota_rt, u64 ab_quota_nrt, } mdss_res->curr_bw_uc_idx = new_uc_idx; - if ((mdss_res->bus_bw_cnt == 0) && mdss_res->curr_bw_uc_idx) { + if ((mdss_res->bus_ref_cnt == 0) && mdss_res->curr_bw_uc_idx) { rc = 0; } else { /* vote BW if bus_bw_cnt > 0 or uc_idx is zero */ ATRACE_BEGIN("msm_bus_scale_req"); @@ -409,35 +409,35 @@ static int mdss_mdp_bus_scale_set_quota(u64 ab_quota_rt, u64 ab_quota_nrt, return rc; } -int mdss_enable_bus_vote(int usecase_ndx) +int mdss_update_reg_bus_vote(int usecase_ndx) { int changed = 0, ret = 0; if (!mdss_res || !mdss_res->reg_bus_hdl) return 0; - mutex_lock(&mdss_res->mdp_bus_lock); + mutex_lock(&mdss_res->reg_bus_lock); if (usecase_ndx) { - if (mdss_res->bus_ref_cnt == 0) + if (mdss_res->reg_bus_ref_cnt == 0) changed++; - mdss_res->bus_ref_cnt++; + mdss_res->reg_bus_ref_cnt++; } else { - if (mdss_res->bus_ref_cnt) { - mdss_res->bus_ref_cnt--; - if (mdss_res->bus_ref_cnt == 0) + if (mdss_res->reg_bus_ref_cnt) { + mdss_res->reg_bus_ref_cnt--; + if (mdss_res->reg_bus_ref_cnt == 0) changed++; } else { pr_err("Can not be turned off\n"); } } - pr_debug("%s: clk_cnt=%d changed=%d usecase_index=%d\n", - __func__, mdss_res->bus_ref_cnt, changed, usecase_ndx); + pr_debug("clk_cnt=%d changed=%d usecase_index=%d\n", + mdss_res->reg_bus_ref_cnt, changed, usecase_ndx); if (changed) ret = msm_bus_scale_client_update_request(mdss_res->reg_bus_hdl, usecase_ndx); - mutex_unlock(&mdss_res->mdp_bus_lock); + mutex_unlock(&mdss_res->reg_bus_lock); return ret; } @@ -449,7 +449,7 @@ int mdss_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota) u64 total_ab_rt = 0, total_ib_rt = 0; u64 total_ab_nrt = 0, total_ib_nrt = 0; - mutex_lock(&mdss_res->bus_bw_lock); + mutex_lock(&mdss_res->bus_lock); mdss_res->ab[client] = ab_quota; mdss_res->ib[client] = ib_quota; @@ -468,7 +468,7 @@ int mdss_bus_scale_set_quota(int client, u64 ab_quota, u64 ib_quota) rc = mdss_mdp_bus_scale_set_quota(total_ab_rt, total_ab_nrt, total_ib_rt, total_ib_nrt); - mutex_unlock(&mdss_res->bus_bw_lock); + mutex_unlock(&mdss_res->bus_lock); return rc; } @@ -780,15 +780,15 @@ void mdss_bus_bandwidth_ctrl(int enable) struct mdss_data_type *mdata = mdss_mdp_get_mdata(); int changed = 0; - mutex_lock(&mdata->bus_bw_lock); + mutex_lock(&mdata->bus_lock); if (enable) { - if (mdata->bus_bw_cnt == 0) + if (mdata->bus_ref_cnt == 0) changed++; - mdata->bus_bw_cnt++; + mdata->bus_ref_cnt++; } else { - if (mdata->bus_bw_cnt) { - mdata->bus_bw_cnt--; - if (mdata->bus_bw_cnt == 0) + if (mdata->bus_ref_cnt) { + mdata->bus_ref_cnt--; + if (mdata->bus_ref_cnt == 0) changed++; } else { pr_err("Can not be turned off\n"); @@ -796,7 +796,7 @@ void mdss_bus_bandwidth_ctrl(int enable) } pr_debug("bw_cnt=%d changed=%d enable=%d\n", - mdata->bus_bw_cnt, changed, enable); + mdata->bus_ref_cnt, changed, enable); if (changed) { if (!enable) { @@ -812,7 +812,7 @@ void mdss_bus_bandwidth_ctrl(int enable) } } - mutex_unlock(&mdata->bus_bw_lock); + mutex_unlock(&mdata->bus_lock); } EXPORT_SYMBOL(mdss_bus_bandwidth_ctrl); @@ -846,7 +846,7 @@ void mdss_mdp_clk_ctrl(int enable) if (changed) { if (enable) { pm_runtime_get_sync(&mdata->pdev->dev); - mdss_enable_bus_vote(VOTE_INDEX_19_MHZ); + mdss_update_reg_bus_vote(VOTE_INDEX_19_MHZ); } mdata->clk_ena = enable; @@ -859,7 +859,7 @@ void mdss_mdp_clk_ctrl(int enable) mdss_mdp_clk_update(MDSS_CLK_MDP_VSYNC, enable); if (!enable) { - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); pm_runtime_mark_last_busy(&mdata->pdev->dev); pm_runtime_put_autosuspend(&mdata->pdev->dev); } @@ -901,7 +901,7 @@ static void __mdss_restore_sec_cfg(struct mdss_data_type *mdata) pr_debug("restoring mdss secure config\n"); - mdss_enable_bus_vote(VOTE_INDEX_19_MHZ); + mdss_update_reg_bus_vote(VOTE_INDEX_19_MHZ); mdss_mdp_clk_update(MDSS_CLK_AHB, 1); mdss_mdp_clk_update(MDSS_CLK_AXI, 1); mdss_mdp_clk_update(MDSS_CLK_MDP_CORE, 1); @@ -912,7 +912,7 @@ static void __mdss_restore_sec_cfg(struct mdss_data_type *mdata) ret, scm_ret); mdss_mdp_clk_update(MDSS_CLK_AHB, 0); - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); mdss_mdp_clk_update(MDSS_CLK_AXI, 0); mdss_mdp_clk_update(MDSS_CLK_MDP_CORE, 0); } @@ -1501,8 +1501,8 @@ static int mdss_mdp_probe(struct platform_device *pdev) platform_set_drvdata(pdev, mdata); mdss_res = mdata; mutex_init(&mdata->reg_lock); - mutex_init(&mdata->mdp_bus_lock); - mutex_init(&mdata->bus_bw_lock); + mutex_init(&mdata->reg_bus_lock); + mutex_init(&mdata->bus_lock); atomic_set(&mdata->sd_client_count, 0); atomic_set(&mdata->active_intf_cnt, 0); diff --git a/drivers/video/fbdev/msm/mdss_smmu.c b/drivers/video/fbdev/msm/mdss_smmu.c index 035b8eb6e080..6f2d34aff5cb 100644 --- a/drivers/video/fbdev/msm/mdss_smmu.c +++ b/drivers/video/fbdev/msm/mdss_smmu.c @@ -113,18 +113,18 @@ static int mdss_smmu_enable_power(struct dss_module_power *mp, bool enable) pr_err("vreg enable failed - rc:%d\n", rc); goto end; } - mdss_enable_bus_vote(VOTE_INDEX_19_MHZ); + mdss_update_reg_bus_vote(VOTE_INDEX_19_MHZ); rc = msm_dss_enable_clk(mp->clk_config, mp->num_clk, true); if (rc) { pr_err("clock enable failed - rc:%d\n", rc); - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); msm_dss_enable_vreg(mp->vreg_config, mp->num_vreg, false); goto end; } } else { msm_dss_enable_clk(mp->clk_config, mp->num_clk, false); - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); msm_dss_enable_vreg(mp->vreg_config, mp->num_vreg, false); } end: diff --git a/drivers/video/fbdev/msm/msm_mdss_io_8974.c b/drivers/video/fbdev/msm/msm_mdss_io_8974.c index 79599a2800bf..267d5d171e97 100644 --- a/drivers/video/fbdev/msm/msm_mdss_io_8974.c +++ b/drivers/video/fbdev/msm/msm_mdss_io_8974.c @@ -945,7 +945,7 @@ static int mdss_dsi_bus_clk_start(struct mdss_dsi_ctrl_pdata *ctrl_pdata) __func__, rc); goto error; } - mdss_enable_bus_vote(VOTE_INDEX_19_MHZ); + mdss_update_reg_bus_vote(VOTE_INDEX_19_MHZ); rc = clk_prepare_enable(ctrl_pdata->ahb_clk); if (rc) { @@ -974,7 +974,7 @@ disable_axi_clk: disable_ahb_clk: clk_disable_unprepare(ctrl_pdata->ahb_clk); disable_core_clk: - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); clk_disable_unprepare(ctrl_pdata->mdp_core_clk); error: return rc; @@ -986,7 +986,7 @@ static void mdss_dsi_bus_clk_stop(struct mdss_dsi_ctrl_pdata *ctrl_pdata) clk_disable_unprepare(ctrl_pdata->mmss_misc_ahb_clk); clk_disable_unprepare(ctrl_pdata->axi_clk); clk_disable_unprepare(ctrl_pdata->ahb_clk); - mdss_enable_bus_vote(VOTE_INDEX_DISABLE); + mdss_update_reg_bus_vote(VOTE_INDEX_DISABLE); clk_disable_unprepare(ctrl_pdata->mdp_core_clk); }