Loading drivers/video/fbdev/msm/mdss_mdp.c +15 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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); Loading @@ -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"); } } Loading drivers/video/fbdev/msm/mdss_mdp_pipe.c +5 −5 Original line number Diff line number Diff line Loading @@ -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)) { Loading @@ -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); Loading @@ -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 Loading
drivers/video/fbdev/msm/mdss_mdp.c +15 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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); Loading @@ -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"); } } Loading
drivers/video/fbdev/msm/mdss_mdp_pipe.c +5 −5 Original line number Diff line number Diff line Loading @@ -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)) { Loading @@ -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); Loading @@ -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