summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss.h20
-rw-r--r--drivers/video/fbdev/msm/mdss_hdmi_tx.c6
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp.c56
-rw-r--r--drivers/video/fbdev/msm/mdss_smmu.c6
-rw-r--r--drivers/video/fbdev/msm/msm_mdss_io_8974.c6
5 files changed, 48 insertions, 46 deletions
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);
}