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

Commit eb21ca87 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "disp: msm: sde: add scaler3_cfg and pixel_ext to sde plane"

parents 35d1cdaf 1661be90
Loading
Loading
Loading
Loading
+25 −17
Original line number Diff line number Diff line
@@ -123,6 +123,9 @@ struct sde_plane {
	struct sde_csc_cfg *csc_usr_ptr;
	struct sde_csc_cfg *csc_ptr;

	struct sde_hw_scaler3_cfg scaler3_cfg;
	struct sde_hw_pixel_ext pixel_ext;

	const struct sde_sspp_sub_blks *pipe_sblk;

	char pipe_name[SDE_NAME_SIZE];
@@ -297,11 +300,11 @@ void _sde_plane_set_qos_lut(struct drm_plane *plane,
				fb->modifier);

		if (fmt && SDE_FORMAT_IS_LINEAR(fmt) &&
		    pstate->scaler3_cfg.enable)
		    psde->scaler3_cfg.enable)
			lut_index = SDE_QOS_LUT_USAGE_LINEAR_QSEED;
		else if (fmt && SDE_FORMAT_IS_LINEAR(fmt))
			lut_index = SDE_QOS_LUT_USAGE_LINEAR;
		else if (pstate->scaler3_cfg.enable)
		else if (psde->scaler3_cfg.enable)
			lut_index = SDE_QOS_LUT_USAGE_MACROTILE_QSEED;
		else
			lut_index = SDE_QOS_LUT_USAGE_MACROTILE;
@@ -794,7 +797,7 @@ static int _sde_plane_setup_scaler3_lut(struct sde_plane *psde,
		return -EINVAL;
	}

	cfg = &pstate->scaler3_cfg;
	cfg = &psde->scaler3_cfg;

	cfg->dir_lut = msm_property_get_blob(
			&psde->property_info,
@@ -818,7 +821,7 @@ static int _sde_plane_setup_scaler3lite_lut(struct sde_plane *psde,
{
	struct sde_hw_scaler3_cfg *cfg;

	cfg = &pstate->scaler3_cfg;
	cfg = &psde->scaler3_cfg;

	cfg->sep_lut = msm_property_get_blob(
			&psde->property_info,
@@ -843,14 +846,14 @@ static void _sde_plane_setup_scaler3(struct sde_plane *psde,
		return;
	}

	scale_cfg = &pstate->scaler3_cfg;
	scale_cfg = &psde->scaler3_cfg;
	src_w = psde->pipe_cfg.src_rect.w;
	src_h = psde->pipe_cfg.src_rect.h;
	dst_w = psde->pipe_cfg.dst_rect.w;
	dst_h = psde->pipe_cfg.dst_rect.h;

	memset(scale_cfg, 0, sizeof(*scale_cfg));
	memset(&pstate->pixel_ext, 0, sizeof(struct sde_hw_pixel_ext));
	memset(&psde->pixel_ext, 0, sizeof(struct sde_hw_pixel_ext));

	/*
	 * For inline rotation cases, scaler config is post-rotation,
@@ -912,14 +915,14 @@ static void _sde_plane_setup_scaler3(struct sde_plane *psde,

		/* For pixel extension we need the pre-rotated orientation */
		if (inline_rotation) {
			pstate->pixel_ext.num_ext_pxls_top[i] =
			psde->pixel_ext.num_ext_pxls_top[i] =
				scale_cfg->src_width[i];
			pstate->pixel_ext.num_ext_pxls_left[i] =
			psde->pixel_ext.num_ext_pxls_left[i] =
				scale_cfg->src_height[i];
		} else {
			pstate->pixel_ext.num_ext_pxls_top[i] =
			psde->pixel_ext.num_ext_pxls_top[i] =
				scale_cfg->src_height[i];
			pstate->pixel_ext.num_ext_pxls_left[i] =
			psde->pixel_ext.num_ext_pxls_left[i] =
				scale_cfg->src_width[i];
		}
	}
@@ -1271,8 +1274,13 @@ static void _sde_plane_setup_scaler(struct sde_plane *psde,
		return;
	}

	memcpy(&psde->scaler3_cfg, &pstate->scaler3_cfg,
			sizeof(psde->scaler3_cfg));
	memcpy(&psde->pixel_ext, &pstate->pixel_ext,
			sizeof(psde->pixel_ext));

	info = drm_format_info(fmt->base.pixel_format);
	pe = &pstate->pixel_ext;
	pe = &psde->pixel_ext;

	psde->pipe_cfg.horz_decimation =
		sde_plane_get_property(pstate, PLANE_PROP_H_DECIMATE);
@@ -1441,13 +1449,13 @@ static int _sde_plane_color_fill(struct sde_plane *psde,

		if (psde->pipe_hw->ops.setup_pe)
			psde->pipe_hw->ops.setup_pe(psde->pipe_hw,
					&pstate->pixel_ext);
					&psde->pixel_ext);
		if (psde->pipe_hw->ops.setup_scaler &&
				pstate->multirect_index != SDE_SSPP_RECT_1) {
			psde->pipe_hw->ctl = _sde_plane_get_hw_ctl(plane);
			psde->pipe_hw->ops.setup_scaler(psde->pipe_hw,
					&psde->pipe_cfg, &pstate->pixel_ext,
					&pstate->scaler3_cfg);
					&psde->pipe_cfg, &psde->pixel_ext,
					&psde->scaler3_cfg);
		}
	}

@@ -3002,7 +3010,7 @@ static void _sde_plane_update_roi_config(struct drm_plane *plane,
	if (psde->pipe_hw->ops.setup_pe &&
			(pstate->multirect_index != SDE_SSPP_RECT_1))
		psde->pipe_hw->ops.setup_pe(psde->pipe_hw,
				&pstate->pixel_ext);
				&psde->pixel_ext);

	/**
	 * when programmed in multirect mode, scalar block will be
@@ -3013,8 +3021,8 @@ static void _sde_plane_update_roi_config(struct drm_plane *plane,
			pstate->multirect_index != SDE_SSPP_RECT_1) {
		psde->pipe_hw->ctl = _sde_plane_get_hw_ctl(plane);
		psde->pipe_hw->ops.setup_scaler(psde->pipe_hw,
				&psde->pipe_cfg, &pstate->pixel_ext,
				&pstate->scaler3_cfg);
				&psde->pipe_cfg, &psde->pixel_ext,
				&psde->scaler3_cfg);
	}

	/* update excl rect */