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

Commit 41b099ef authored by Alan Kwong's avatar Alan Kwong Committed by Narendra Muppalla
Browse files

drm/msm/sde: add plane QoS parsing to hardware catalog



Add plane QoS parser to retrieve and parse LUTs for
danger, safe and creq QoS settings.

Change-Id: I42dd045c46966a66f43fd9517a16270c83f89aa1
Signed-off-by: default avatarAlan Kwong <akwong@codeaurora.org>
parent b9d2f6fd
Loading
Loading
Loading
Loading
+7 −16
Original line number Diff line number Diff line
@@ -130,14 +130,10 @@ Optional properties:
				control register. Number of offsets defined should
				match the number of offsets defined in
				property: qcom,sde-sspp-off.
- qcom,sde-sspp-danger-lut:	Array of u32 values indicating the danger luts on each
				sspp. Number of offsets defined should
				match the number of offsets defined in
				property: qcom,sde-sspp-off.
- qcom,sde-sspp-safe-lut:	Array of u32 values indicating the safe luts on each
				sspp. Number of offsets defined should
				match the number of offsets defined in
				property: qcom,sde-sspp-off.
- qcom,sde-sspp-danger-lut:	A 3 cell property, with a format of <linear, tile, nrt>,
				indicating the danger luts on sspp.
- qcom,sde-sspp-safe-lut:	A 3 cell property, with a format of <linear, tile, nrt>,
				indicating the safe luts on sspp.
- qcom,sde-sspp-qseed-off:	A u32 offset value indicates the qseed block offset
				from sspp base. It will install qseed property on
				vig and rgb sspp pipes.
@@ -314,14 +310,6 @@ Example:
    qcom,sde-qseed-type = "qseedv2";
    qcom,sde-highest-bank-bit = <15>;
    qcom,sde-has-mixer-gc;
    qcom,sde-sspp-danger-lut = <0x55 0x55 0x55 0x55
				0x55 0x55 0x55 0x55
				0xaa 0xaa
				0xbb 0xbb>;
    qcom,sde-sspp-safe-lut = <0x11 0x11 0x11 0x11
				0x11 0x11 0x11 0x11
				0xaa 0xaa
				0xbb 0xbb>;
    qcom,sde-sspp-max-rects = <1 1 1 1
				1 1 1 1
				1 1
@@ -343,6 +331,9 @@ Example:

    qcom,sde-wb-id = <2>;

    qcom,sde-sspp-danger-lut = <0x000f 0xffff 0x0000>;
    qcom,sde-sspp-safe-lut = <0xfffc 0xff00 0xffff>;

    qcom,sde-vbif-off = <0 0>;
    qcom,sde-vbif-id = <0 1>;
    qcom,sde-vbif-default-ot-rd-limit = <32>;
+37 −2
Original line number Diff line number Diff line
@@ -71,6 +71,9 @@
/* maximum XIN halt timeout in usec */
#define VBIF_XIN_HALT_TIMEOUT		0x4000

#define DEFAULT_CREQ_LUT_NRT		0x0
#define DEFAULT_PIXEL_RAM_SIZE		(50 * 1024)

/*************************************************************
 *  DTSI PROPERTY INDEX
 *************************************************************/
@@ -506,6 +509,7 @@ static void _sde_sspp_setup_vig(struct sde_mdss_cfg *sde_cfg,
	sspp->id = SSPP_VIG0 + *vig_count;
	sspp->clk_ctrl = SDE_CLK_CTRL_NONE;
	sblk->format_list = plane_formats_yuv;
	set_bit(SDE_SSPP_QOS, &sspp->features);
	(*vig_count)++;
}

@@ -528,6 +532,7 @@ static void _sde_sspp_setup_rgb(struct sde_mdss_cfg *sde_cfg,
	sspp->id = SSPP_RGB0 + *rgb_count;
	sspp->clk_ctrl = SDE_CLK_CTRL_NONE;
	sblk->format_list = plane_formats;
	set_bit(SDE_SSPP_QOS, &sspp->features);
	(*rgb_count)++;
}

@@ -553,6 +558,7 @@ static void _sde_sspp_setup_dma(struct sde_mdss_cfg *sde_cfg,
	sspp->id = SSPP_DMA0 + *dma_count;
	sspp->clk_ctrl = SDE_CLK_CTRL_NONE;
	sblk->format_list = plane_formats;
	set_bit(SDE_SSPP_QOS, &sspp->features);
	(*dma_count)++;
}

@@ -566,12 +572,23 @@ static int sde_sspp_parse_dt(struct device_node *np,
	struct sde_sspp_cfg *sspp;
	struct sde_sspp_sub_blks *sblk;
	u32 vig_count = 0, dma_count = 0, rgb_count = 0, cursor_count = 0;
	u32 danger_count = 0, safe_count = 0;

	rc = _validate_dt_entry(np, sspp_prop, ARRAY_SIZE(sspp_prop),
		prop_count, &off_count);
	if (rc)
		goto end;

	rc = _validate_dt_entry(np, &sspp_prop[SSPP_DANGER], 1,
			&prop_count[SSPP_DANGER], &danger_count);
	if (rc)
		goto end;

	rc = _validate_dt_entry(np, &sspp_prop[SSPP_SAFE], 1,
			&prop_count[SSPP_SAFE], &safe_count);
	if (rc)
		goto end;

	rc = _read_dt_entry(np, sspp_prop, ARRAY_SIZE(sspp_prop), prop_count,
							prop_value, bit_value);
	if (rc)
@@ -619,9 +636,27 @@ static int sde_sspp_parse_dt(struct device_node *np,
		sblk->maxvdeciexp = MAX_VERT_DECIMATION;

		sspp->xin_id = prop_value[SSPP_XIN][i];
		sblk->danger_lut_linear = prop_value[SSPP_DANGER][i];
		sblk->safe_lut_linear = prop_value[SSPP_SAFE][i];
		sblk->danger_lut_linear = prop_value[SSPP_DANGER][0];
		sblk->danger_lut_tile = prop_value[SSPP_DANGER][1];
		sblk->danger_lut_nrt = prop_value[SSPP_DANGER][2];
		sblk->safe_lut_linear = prop_value[SSPP_SAFE][0];
		sblk->safe_lut_tile = prop_value[SSPP_SAFE][1];
		sblk->safe_lut_nrt = prop_value[SSPP_SAFE][2];
		sblk->creq_lut_nrt = DEFAULT_CREQ_LUT_NRT;
		sblk->pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE;
		sblk->src_blk.len = prop_value[SSPP_SIZE][0];

		SDE_DEBUG(
			"xin:%d danger:%x/%x/%x safe:%x/%x/%x creq:%x ram:%d\n",
			sspp->xin_id,
			sblk->danger_lut_linear,
			sblk->danger_lut_tile,
			sblk->danger_lut_nrt,
			sblk->safe_lut_linear,
			sblk->safe_lut_tile,
			sblk->safe_lut_nrt,
			sblk->creq_lut_nrt,
			sblk->pixel_ram_size);
	}

end: