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

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

Merge "mdss: calculating length based on offsets from dts"

parents 51f18552 c7a0520b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -148,6 +148,9 @@ struct mdss_data_type {
	u32 nrgb_pipes;
	u32 ndma_pipes;
	u32 size_sspp;
	u32 size_sspp_vig;
	u32 size_sspp_rgb;
	u32 size_sspp_dma;

	DECLARE_BITMAP(mmb_alloc_map, MAX_DRV_SUP_MMB_BLKS);

+52 −11
Original line number Diff line number Diff line
@@ -1681,11 +1681,6 @@ static int mdss_mdp_parse_dt_pipe(struct platform_device *pdev)
		goto dma_alloc_fail;
	}

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-sspp-len",
		&mdata->size_sspp, 1);
	if (rc)
		goto parse_fail;

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-pipe-vig-fetch-id",
		ftch_id, mdata->nvig_pipes);
	if (rc)
@@ -1759,6 +1754,39 @@ static int mdss_mdp_parse_dt_pipe(struct platform_device *pdev)

	setup_cnt += len;

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-sspp-len",
	     &mdata->size_sspp, 1);
	if (rc) {
		if (mdata->nvig_pipes == 1 || mdata->nrgb_pipes == 1 ||
				mdata->ndma_pipes == 1) {
			pr_err("Cannot calculate length w/ only one offset\n");
			goto parse_fail;
		}

		if (mdata->nvig_pipes >= 2) {
			u32 *vigOff = offsets;
			mdata->size_sspp_vig = vigOff[1] - vigOff[0];
		} else
			mdata->size_sspp_vig = 0;

		if (mdata->nrgb_pipes >= 2) {
			u32 *rgbOff = offsets + mdata->nvig_pipes;
			mdata->size_sspp_rgb = rgbOff[1] - rgbOff[0];
		} else
			mdata->size_sspp_rgb = 0;

		if (mdata->ndma_pipes >= 2) {
			u32 *dmaOff = offsets + mdata->nvig_pipes +
				mdata->nrgb_pipes;
			mdata->size_sspp_dma = dmaOff[1] - dmaOff[0];
		} else
			mdata->size_sspp_dma = 0;
	} else {
		mdata->size_sspp_vig = mdata->size_sspp;
		mdata->size_sspp_rgb = mdata->size_sspp;
		mdata->size_sspp_dma = mdata->size_sspp;
	}

	if (mdata->nvig_pipes > DEFAULT_TOTAL_VIG_PIPES) {
		rc = mdss_mdp_pipe_addr_setup(mdata,
			mdata->vig_pipes + DEFAULT_TOTAL_VIG_PIPES,
@@ -1861,8 +1889,13 @@ static int mdss_mdp_parse_dt_mixer(struct platform_device *pdev)

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-mixer-intf-len",
		&mdata->size_mixer_intf, 1);
	if (rc)
	if (rc) {
		if (mdata->nmixers_intf >= 2)
			mdata->size_mixer_intf = mixer_offsets[1] -
				mixer_offsets[0];
		else
			goto parse_done;
	}

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-mixer-wb-off",
		mixer_offsets + mdata->nmixers_intf, mdata->nmixers_wb);
@@ -1876,8 +1909,12 @@ static int mdss_mdp_parse_dt_mixer(struct platform_device *pdev)

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-dspp-len",
		&mdata->size_dspp, 1);
	if (rc)
	if (rc) {
		if (ndspp >= 2)
			mdata->size_dspp = dspp_offsets[1] - dspp_offsets[0];
		else
			goto parse_done;
	}

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-pingpong-off",
		pingpong_offsets, npingpong);
@@ -1945,8 +1982,12 @@ static int mdss_mdp_parse_dt_ctl(struct platform_device *pdev)

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-ctl-len",
		&mdata->size_ctl, 1);
	if (rc)
	if (rc) {
		if (mdata->nctl >= 2)
			mdata->size_ctl = ctl_offsets[1] - ctl_offsets[0];
		else
			goto parse_done;
	}

	rc = mdss_mdp_parse_dt_handler(pdev, "qcom,mdss-wb-off",
		wb_offsets, nwb);
+3 −3
Original line number Diff line number Diff line
@@ -4869,13 +4869,13 @@ static int is_valid_calib_addr(void *addr, u32 operation)
					* mdss_res->size_ctl))) {
		ret = is_valid_calib_ctrl_addr(ptr);
	} else if (ptr >= vig_base && ptr < (vig_base + (mdss_res->nvig_pipes
					* mdss_res->size_sspp))) {
					* mdss_res->size_sspp_vig))) {
		ret = is_valid_calib_vig_addr(ptr);
	} else if (ptr >= rgb_base && ptr < (rgb_base + (mdss_res->nrgb_pipes
					* mdss_res->size_sspp))) {
					* mdss_res->size_sspp_rgb))) {
		ret = is_valid_calib_rgb_addr(ptr);
	} else if (ptr >= dma_base && ptr < (dma_base + (mdss_res->ndma_pipes
					* mdss_res->size_sspp))) {
					* mdss_res->size_sspp_dma))) {
		ret = is_valid_calib_dma_addr(ptr);
	} else if (ptr >= mixer_base && ptr < (mixer_base +
		(mdss_res->nmixers_intf * mdss_res->size_mixer_intf))) {