Merge "msm: mdss: fix mdp vbif qos priorities"
This commit is contained in:
commit
74717404f7
2 changed files with 20 additions and 7 deletions
|
@ -4159,6 +4159,7 @@ static int mdss_mdp_parse_dt_prefill(struct platform_device *pdev)
|
||||||
static void mdss_mdp_parse_vbif_qos(struct platform_device *pdev)
|
static void mdss_mdp_parse_vbif_qos(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct mdss_data_type *mdata = platform_get_drvdata(pdev);
|
struct mdss_data_type *mdata = platform_get_drvdata(pdev);
|
||||||
|
u32 npriority_lvl_nrt;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
mdata->npriority_lvl = mdss_mdp_parse_dt_prop_len(pdev,
|
mdata->npriority_lvl = mdss_mdp_parse_dt_prop_len(pdev,
|
||||||
|
@ -4184,8 +4185,20 @@ static void mdss_mdp_parse_vbif_qos(struct platform_device *pdev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mdata->npriority_lvl = mdss_mdp_parse_dt_prop_len(pdev,
|
npriority_lvl_nrt = mdss_mdp_parse_dt_prop_len(pdev,
|
||||||
"qcom,mdss-vbif-qos-nrt-setting");
|
"qcom,mdss-vbif-qos-nrt-setting");
|
||||||
|
|
||||||
|
if (!npriority_lvl_nrt) {
|
||||||
|
pr_debug("no vbif nrt priorities found rt:%d\n",
|
||||||
|
mdata->npriority_lvl);
|
||||||
|
return;
|
||||||
|
} else if (npriority_lvl_nrt != mdata->npriority_lvl) {
|
||||||
|
/* driver expects same number for both nrt and rt */
|
||||||
|
pr_err("invalid nrt settings nrt(%d) != rt(%d)\n",
|
||||||
|
npriority_lvl_nrt, mdata->npriority_lvl);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (mdata->npriority_lvl == MDSS_VBIF_QOS_REMAP_ENTRIES) {
|
if (mdata->npriority_lvl == MDSS_VBIF_QOS_REMAP_ENTRIES) {
|
||||||
mdata->vbif_nrt_qos = kzalloc(sizeof(u32) *
|
mdata->vbif_nrt_qos = kzalloc(sizeof(u32) *
|
||||||
mdata->npriority_lvl, GFP_KERNEL);
|
mdata->npriority_lvl, GFP_KERNEL);
|
||||||
|
@ -4203,7 +4216,7 @@ static void mdss_mdp_parse_vbif_qos(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mdata->npriority_lvl = 0;
|
mdata->npriority_lvl = 0;
|
||||||
pr_debug("Invalid or no vbif qos nrt seting\n");
|
pr_debug("Invalid or no vbif qos nrt setting\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1011,8 +1011,10 @@ static void mdss_mdp_qos_vbif_remapper_setup(struct mdss_data_type *mdata,
|
||||||
u32 mask, reg_val, reg_val_lvl, i, vbif_qos;
|
u32 mask, reg_val, reg_val_lvl, i, vbif_qos;
|
||||||
u32 reg_high;
|
u32 reg_high;
|
||||||
bool is_nrt_vbif = mdss_mdp_is_nrt_vbif_client(mdata, pipe);
|
bool is_nrt_vbif = mdss_mdp_is_nrt_vbif_client(mdata, pipe);
|
||||||
|
u32 *vbif_qos_ptr = is_realtime ? mdata->vbif_rt_qos :
|
||||||
|
mdata->vbif_nrt_qos;
|
||||||
|
|
||||||
if (mdata->npriority_lvl == 0)
|
if ((mdata->npriority_lvl == 0) || !vbif_qos_ptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (test_bit(MDSS_QOS_REMAPPER, mdata->mdss_qos_map)) {
|
if (test_bit(MDSS_QOS_REMAPPER, mdata->mdss_qos_map)) {
|
||||||
|
@ -1028,8 +1030,7 @@ static void mdss_mdp_qos_vbif_remapper_setup(struct mdss_data_type *mdata,
|
||||||
is_nrt_vbif);
|
is_nrt_vbif);
|
||||||
|
|
||||||
mask = 0x3 << (pipe->xin_id * 4);
|
mask = 0x3 << (pipe->xin_id * 4);
|
||||||
vbif_qos = is_realtime ?
|
vbif_qos = vbif_qos_ptr[i];
|
||||||
mdata->vbif_rt_qos[i] : mdata->vbif_nrt_qos[i];
|
|
||||||
|
|
||||||
reg_val &= ~(mask);
|
reg_val &= ~(mask);
|
||||||
reg_val |= vbif_qos << (pipe->xin_id * 4);
|
reg_val |= vbif_qos << (pipe->xin_id * 4);
|
||||||
|
@ -1053,8 +1054,7 @@ static void mdss_mdp_qos_vbif_remapper_setup(struct mdss_data_type *mdata,
|
||||||
|
|
||||||
mask = 0x3 << (pipe->xin_id * 2);
|
mask = 0x3 << (pipe->xin_id * 2);
|
||||||
reg_val &= ~(mask);
|
reg_val &= ~(mask);
|
||||||
vbif_qos = is_realtime ?
|
vbif_qos = vbif_qos_ptr[i];
|
||||||
mdata->vbif_rt_qos[i] : mdata->vbif_nrt_qos[i];
|
|
||||||
reg_val |= vbif_qos << (pipe->xin_id * 2);
|
reg_val |= vbif_qos << (pipe->xin_id * 2);
|
||||||
MDSS_VBIF_WRITE(mdata, MDSS_VBIF_QOS_REMAP_BASE + i*4,
|
MDSS_VBIF_WRITE(mdata, MDSS_VBIF_QOS_REMAP_BASE + i*4,
|
||||||
reg_val, is_nrt_vbif);
|
reg_val, is_nrt_vbif);
|
||||||
|
|
Loading…
Add table
Reference in a new issue