Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74717404 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: fix mdp vbif qos priorities"

parents c08dbd71 70500866
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -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");
	}
}

+5 −5
Original line number Diff line number Diff line
@@ -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);