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)
|
||||
{
|
||||
struct mdss_data_type *mdata = platform_get_drvdata(pdev);
|
||||
u32 npriority_lvl_nrt;
|
||||
int rc;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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");
|
||||
|
||||
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) {
|
||||
mdata->vbif_nrt_qos = kzalloc(sizeof(u32) *
|
||||
mdata->npriority_lvl, GFP_KERNEL);
|
||||
|
@ -4203,7 +4216,7 @@ static void mdss_mdp_parse_vbif_qos(struct platform_device *pdev)
|
|||
}
|
||||
} else {
|
||||
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 reg_high;
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
mask = 0x3 << (pipe->xin_id * 4);
|
||||
vbif_qos = is_realtime ?
|
||||
mdata->vbif_rt_qos[i] : mdata->vbif_nrt_qos[i];
|
||||
vbif_qos = vbif_qos_ptr[i];
|
||||
|
||||
reg_val &= ~(mask);
|
||||
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);
|
||||
reg_val &= ~(mask);
|
||||
vbif_qos = is_realtime ?
|
||||
mdata->vbif_rt_qos[i] : mdata->vbif_nrt_qos[i];
|
||||
vbif_qos = vbif_qos_ptr[i];
|
||||
reg_val |= vbif_qos << (pipe->xin_id * 2);
|
||||
MDSS_VBIF_WRITE(mdata, MDSS_VBIF_QOS_REMAP_BASE + i*4,
|
||||
reg_val, is_nrt_vbif);
|
||||
|
|
Loading…
Add table
Reference in a new issue