diff mbox

[DPU,5/7] drm/msm/dpu: clean up dpu crtc custom properties

Message ID 1527103862-13934-6-git-send-email-jsanka@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jeykumar Sankaran May 23, 2018, 7:31 p.m. UTC
Remove dpu crtc custom properties and its handlers.

Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
---
 drivers/gpu/drm/msm/Makefile                  |   1 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c |  28 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c      | 856 +-------------------------
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h      |  27 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c   |  12 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c     | 149 -----
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h     | 111 ----
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c     |  67 --
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h     |  14 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h   |  16 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c        |  71 +--
 drivers/gpu/drm/msm/msm_drv.h                 |  15 -
 12 files changed, 11 insertions(+), 1356 deletions(-)
 delete mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c
 delete mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h

Comments

Sean Paul June 4, 2018, 7:58 p.m. UTC | #1
On Wed, May 23, 2018 at 12:31:00PM -0700, Jeykumar Sankaran wrote:
> Remove dpu crtc custom properties and its handlers.
> 
> Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>

Reviewed-by: Sean Paul <seanpaul@chromium.org>

> ---
>  drivers/gpu/drm/msm/Makefile                  |   1 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c |  28 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c      | 856 +-------------------------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h      |  27 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c   |  12 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c     | 149 -----
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h     | 111 ----
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c     |  67 --
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h     |  14 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h   |  16 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c        |  71 +--
>  drivers/gpu/drm/msm/msm_drv.h                 |  15 -
>  12 files changed, 11 insertions(+), 1356 deletions(-)
>  delete mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c
>  delete mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h
> 
> diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
> index 7bc3921..d289503 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -57,7 +57,6 @@ msm-y := \
>  	disp/dpu1/dpu_hw_catalog.o \
>  	disp/dpu1/dpu_hw_cdm.o \
>  	disp/dpu1/dpu_hw_ctl.o \
> -	disp/dpu1/dpu_hw_ds.o \
>  	disp/dpu1/dpu_hw_interrupts.o \
>  	disp/dpu1/dpu_hw_intf.o \
>  	disp/dpu1/dpu_hw_lm.o \
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> index 981f77f..c4820de 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> @@ -102,34 +102,6 @@ static void _dpu_core_perf_calc_crtc(struct dpu_kms *kms,
>  	dpu_cstate = to_dpu_crtc_state(state);
>  	memset(perf, 0, sizeof(struct dpu_core_perf_params));
>  
> -	perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_MNOC] =
> -		dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_AB);
> -	perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_MNOC] =
> -		dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_IB);
> -
> -	if (dpu_cstate->bw_split_vote) {
> -		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_LLCC_AB);
> -		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_LLCC_IB);
> -		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_EBI] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_DRAM_AB);
> -		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_EBI] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_DRAM_IB);
> -	} else {
> -		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_AB);
> -		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_IB);
> -		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_EBI] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_AB);
> -		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_EBI] =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_IB);
> -	}
> -
> -	perf->core_clk_rate =
> -			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_CLK);
> -
>  	if (!dpu_cstate->bw_control) {
>  		for (i = 0; i < DPU_POWER_HANDLE_DBUS_ID_MAX; i++) {
>  			perf->bw_ctl[i] = kms->catalog->perf.max_bw_high *
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index a0b702f..b0a3a30 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -570,18 +570,6 @@ static void _dpu_crtc_deinit_events(struct dpu_crtc *dpu_crtc)
>  		return;
>  }
>  
> -/**
> - * dpu_crtc_destroy_dest_scaler - free memory allocated for scaler lut
> - * @dpu_crtc: Pointer to dpu crtc
> - */
> -static void _dpu_crtc_destroy_dest_scaler(struct dpu_crtc *dpu_crtc)
> -{
> -	if (!dpu_crtc)
> -		return;
> -
> -	kfree(dpu_crtc->scl3_lut_cfg);
> -}
> -
>  static void dpu_crtc_destroy(struct drm_crtc *crtc)
>  {
>  	struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
> @@ -594,7 +582,6 @@ static void dpu_crtc_destroy(struct drm_crtc *crtc)
>  	if (dpu_crtc->blob_info)
>  		drm_property_blob_put(dpu_crtc->blob_info);
>  	msm_property_destroy(&dpu_crtc->property_info);
> -	_dpu_crtc_destroy_dest_scaler(dpu_crtc);
>  
>  	_dpu_crtc_deinit_events(dpu_crtc);
>  
> @@ -679,71 +666,6 @@ static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer,
>  		format->alpha_enable, fg_alpha, bg_alpha, blend_op);
>  }
>  
> -static void _dpu_crtc_setup_dim_layer_cfg(struct drm_crtc *crtc,
> -		struct dpu_crtc *dpu_crtc, struct dpu_crtc_mixer *mixer,
> -		struct dpu_hw_dim_layer *dim_layer)
> -{
> -	struct dpu_crtc_state *cstate;
> -	struct dpu_hw_mixer *lm;
> -	struct dpu_hw_dim_layer split_dim_layer;
> -	int i;
> -
> -	if (!dim_layer->rect.w || !dim_layer->rect.h) {
> -		DPU_DEBUG("empty dim_layer\n");
> -		return;
> -	}
> -
> -	cstate = to_dpu_crtc_state(crtc->state);
> -
> -	DPU_DEBUG("dim_layer - flags:%d, stage:%d\n",
> -			dim_layer->flags, dim_layer->stage);
> -
> -	split_dim_layer.stage = dim_layer->stage;
> -	split_dim_layer.color_fill = dim_layer->color_fill;
> -
> -	/*
> -	 * traverse through the layer mixers attached to crtc and find the
> -	 * intersecting dim layer rect in each LM and program accordingly.
> -	 */
> -	for (i = 0; i < dpu_crtc->num_mixers; i++) {
> -		split_dim_layer.flags = dim_layer->flags;
> -
> -		dpu_kms_rect_intersect(&cstate->lm_bounds[i], &dim_layer->rect,
> -					&split_dim_layer.rect);
> -		if (dpu_kms_rect_is_null(&split_dim_layer.rect)) {
> -			/*
> -			 * no extra programming required for non-intersecting
> -			 * layer mixers with INCLUSIVE dim layer
> -			 */
> -			if (split_dim_layer.flags & DPU_DRM_DIM_LAYER_INCLUSIVE)
> -				continue;
> -
> -			/*
> -			 * program the other non-intersecting layer mixers with
> -			 * INCLUSIVE dim layer of full size for uniformity
> -			 * with EXCLUSIVE dim layer config.
> -			 */
> -			split_dim_layer.flags &= ~DPU_DRM_DIM_LAYER_EXCLUSIVE;
> -			split_dim_layer.flags |= DPU_DRM_DIM_LAYER_INCLUSIVE;
> -			memcpy(&split_dim_layer.rect, &cstate->lm_bounds[i],
> -					sizeof(split_dim_layer.rect));
> -
> -		} else {
> -			split_dim_layer.rect.x =
> -					split_dim_layer.rect.x -
> -						cstate->lm_bounds[i].x;
> -		}
> -
> -		DPU_DEBUG("split_dim_layer - LM:%d, rect:{%d,%d,%d,%d}}\n",
> -			i, split_dim_layer.rect.x, split_dim_layer.rect.y,
> -			split_dim_layer.rect.w, split_dim_layer.rect.h);
> -
> -		lm = mixer[i].hw_lm;
> -		mixer[i].mixer_op_mode |= 1 << split_dim_layer.stage;
> -		lm->ops.setup_dim_layer(lm, &split_dim_layer);
> -	}
> -}
> -
>  static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc)
>  {
>  	struct dpu_crtc *dpu_crtc;
> @@ -787,7 +709,6 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
>  	u32 flush_mask;
>  	uint32_t stage_idx, lm_idx;
>  	int zpos_cnt[DPU_STAGE_MAX + 1] = { 0 };
> -	int i;
>  	bool bg_alpha_enable = false;
>  
>  	if (!dpu_crtc || !mixer) {
> @@ -863,13 +784,6 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
>  		}
>  	}
>  
> -	if (lm && lm->ops.setup_dim_layer) {
> -		cstate = to_dpu_crtc_state(crtc->state);
> -		for (i = 0; i < cstate->num_dim_layers; i++)
> -			_dpu_crtc_setup_dim_layer_cfg(crtc, dpu_crtc,
> -					mixer, &cstate->dim_layer[i]);
> -	}
> -
>  	 _dpu_crtc_program_lm_output_roi(crtc);
>  }
>  
> @@ -911,11 +825,6 @@ static void _dpu_crtc_blend_setup(struct drm_crtc *crtc)
>  		if (mixer[i].hw_ctl->ops.clear_all_blendstages)
>  			mixer[i].hw_ctl->ops.clear_all_blendstages(
>  					mixer[i].hw_ctl);
> -
> -		/* clear dim_layer settings */
> -		lm = mixer[i].hw_lm;
> -		if (lm->ops.clear_dim_layer)
> -			lm->ops.clear_dim_layer(lm);
>  	}
>  
>  	/* initialize stage cfg */
> @@ -947,163 +856,6 @@ static void _dpu_crtc_blend_setup(struct drm_crtc *crtc)
>  }
>  
>  /**
> - * _dpu_crtc_setup_scaler3_lut - Set up scaler lut
> - * LUTs are configured only once during boot
> - * @dpu_crtc: Pointer to dpu crtc
> - * @cstate: Pointer to dpu crtc state
> - */
> -static int _dpu_crtc_set_dest_scaler_lut(struct dpu_crtc *dpu_crtc,
> -		struct dpu_crtc_state *cstate, uint32_t lut_idx)
> -{
> -	struct dpu_hw_scaler3_lut_cfg *cfg;
> -	u32 *lut_data = NULL;
> -	size_t len = 0;
> -	int ret = 0;
> -
> -	if (!dpu_crtc || !cstate || !dpu_crtc->scl3_lut_cfg) {
> -		DPU_ERROR("invalid args\n");
> -		return -EINVAL;
> -	}
> -
> -	if (dpu_crtc->scl3_lut_cfg->is_configured) {
> -		DPU_DEBUG("lut already configured\n");
> -		return 0;
> -	}
> -
> -	lut_data = msm_property_get_blob(&dpu_crtc->property_info,
> -			&cstate->property_state, &len, lut_idx);
> -	if (!lut_data || !len) {
> -		DPU_ERROR("lut(%d): no data, len(%zu)\n", lut_idx, len);
> -		return -ENODATA;
> -	}
> -
> -	cfg = dpu_crtc->scl3_lut_cfg;
> -
> -	switch (lut_idx) {
> -	case CRTC_PROP_DEST_SCALER_LUT_ED:
> -		cfg->dir_lut = lut_data;
> -		cfg->dir_len = len;
> -		break;
> -	case CRTC_PROP_DEST_SCALER_LUT_CIR:
> -		cfg->cir_lut = lut_data;
> -		cfg->cir_len = len;
> -		break;
> -	case CRTC_PROP_DEST_SCALER_LUT_SEP:
> -		cfg->sep_lut = lut_data;
> -		cfg->sep_len = len;
> -		break;
> -	default:
> -		ret = -EINVAL;
> -		DPU_ERROR("invalid LUT index = %d", lut_idx);
> -		break;
> -	}
> -
> -	if (cfg->dir_lut && cfg->cir_lut && cfg->sep_lut)
> -		cfg->is_configured = true;
> -
> -	return ret;
> -}
> -
> -/**
> - * _dpu_crtc_dest_scaler_setup - Set up dest scaler block
> - * @crtc: Pointer to drm crtc
> - */
> -static void _dpu_crtc_dest_scaler_setup(struct drm_crtc *crtc)
> -{
> -	struct dpu_crtc *dpu_crtc;
> -	struct dpu_crtc_state *cstate;
> -	struct dpu_hw_mixer *hw_lm;
> -	struct dpu_hw_ctl *hw_ctl;
> -	struct dpu_hw_ds *hw_ds;
> -	struct dpu_hw_ds_cfg *cfg;
> -	struct dpu_kms *kms;
> -	u32 flush_mask = 0, op_mode = 0;
> -	u32 lm_idx = 0, num_mixers = 0;
> -	int i, count = 0;
> -
> -	if (!crtc)
> -		return;
> -
> -	dpu_crtc   = to_dpu_crtc(crtc);
> -	cstate = to_dpu_crtc_state(crtc->state);
> -	kms    = _dpu_crtc_get_kms(crtc);
> -	num_mixers = dpu_crtc->num_mixers;
> -
> -	DPU_DEBUG("crtc%d\n", crtc->base.id);
> -
> -	if (!cstate->ds_dirty) {
> -		DPU_DEBUG("no change in settings, skip commit\n");
> -	} else if (!kms || !kms->catalog) {
> -		DPU_ERROR("invalid parameters\n");
> -	} else if (!kms->catalog->mdp[0].has_dest_scaler) {
> -		DPU_DEBUG("dest scaler feature not supported\n");
> -	} else if (num_mixers > CRTC_DUAL_MIXERS) {
> -		DPU_ERROR("invalid number mixers: %d\n", num_mixers);
> -	} else if (!dpu_crtc->scl3_lut_cfg->is_configured) {
> -		DPU_DEBUG("no LUT data available\n");
> -	} else {
> -		count = cstate->num_ds_enabled ? cstate->num_ds : num_mixers;
> -
> -		for (i = 0; i < count; i++) {
> -			cfg = &cstate->ds_cfg[i];
> -
> -			if (!cfg->flags)
> -				continue;
> -
> -			lm_idx = cfg->ndx;
> -			hw_lm  = dpu_crtc->mixers[lm_idx].hw_lm;
> -			hw_ctl = dpu_crtc->mixers[lm_idx].hw_ctl;
> -			hw_ds  = dpu_crtc->mixers[lm_idx].hw_ds;
> -
> -			/* Setup op mode - Dual/single */
> -			if (cfg->flags & DPU_DRM_DESTSCALER_ENABLE)
> -				op_mode |= BIT(hw_ds->idx - DS_0);
> -
> -			if ((i == count-1) && hw_ds->ops.setup_opmode) {
> -				op_mode |= (cstate->num_ds_enabled ==
> -					CRTC_DUAL_MIXERS) ?
> -					DPU_DS_OP_MODE_DUAL : 0;
> -				hw_ds->ops.setup_opmode(hw_ds, op_mode);
> -				DPU_EVT32(DRMID(crtc), op_mode);
> -			}
> -
> -			/* Setup scaler */
> -			if ((cfg->flags & DPU_DRM_DESTSCALER_SCALE_UPDATE) ||
> -				(cfg->flags &
> -					DPU_DRM_DESTSCALER_ENHANCER_UPDATE)) {
> -				if (hw_ds->ops.setup_scaler)
> -					hw_ds->ops.setup_scaler(hw_ds,
> -							cfg->scl3_cfg,
> -							dpu_crtc->scl3_lut_cfg);
> -
> -				/**
> -				 * Clear the flags as the block doesn't have to
> -				 * be programmed in each commit if no updates
> -				 */
> -				cfg->flags &= ~DPU_DRM_DESTSCALER_SCALE_UPDATE;
> -				cfg->flags &=
> -					~DPU_DRM_DESTSCALER_ENHANCER_UPDATE;
> -			}
> -
> -			/*
> -			 * Dest scaler shares the flush bit of the LM in control
> -			 */
> -			if (cfg->set_lm_flush && hw_lm && hw_ctl &&
> -				hw_ctl->ops.get_bitmask_mixer) {
> -				flush_mask = hw_ctl->ops.get_bitmask_mixer(
> -						hw_ctl, hw_lm->idx);
> -				DPU_DEBUG("Set lm[%d] flush = %d",
> -					hw_lm->idx, flush_mask);
> -				hw_ctl->ops.update_pending_flush(hw_ctl,
> -								flush_mask);
> -			}
> -			cfg->set_lm_flush = false;
> -		}
> -		cstate->ds_dirty = false;
> -	}
> -}
> -
> -/**
>   *  _dpu_crtc_complete_flip - signal pending page_flip events
>   * Any pending vblank events are added to the vblank_event_list
>   * so that the next vblank interrupt shall signal them.
> @@ -1361,448 +1113,6 @@ void dpu_crtc_complete_commit(struct drm_crtc *crtc,
>  	DPU_EVT32_VERBOSE(DRMID(crtc));
>  }
>  
> -/* _dpu_crtc_set_idle_timeout - update idle timeout wait duration */
> -static void _dpu_crtc_set_idle_timeout(struct drm_crtc *crtc, u64 val)
> -{
> -	struct drm_encoder *encoder;
> -
> -	if (!crtc) {
> -		DPU_ERROR("invalid crtc\n");
> -		return;
> -	}
> -
> -	drm_for_each_encoder(encoder, crtc->dev) {
> -		if (encoder->crtc != crtc)
> -			continue;
> -
> -		dpu_encoder_set_idle_timeout(encoder, (u32) val);
> -	}
> -}
> -
> -/**
> - * _dpu_crtc_set_dim_layer_v1 - copy dim layer settings from userspace
> - * @cstate:      Pointer to dpu crtc state
> - * @user_ptr:    User ptr for dpu_drm_dim_layer_v1 struct
> - */
> -static void _dpu_crtc_set_dim_layer_v1(struct dpu_crtc_state *cstate,
> -		void __user *usr_ptr)
> -{
> -	struct dpu_drm_dim_layer_v1 dim_layer_v1;
> -	struct dpu_drm_dim_layer_cfg *user_cfg;
> -	struct dpu_hw_dim_layer *dim_layer;
> -	u32 count, i;
> -
> -	if (!cstate) {
> -		DPU_ERROR("invalid cstate\n");
> -		return;
> -	}
> -	dim_layer = cstate->dim_layer;
> -
> -	if (!usr_ptr) {
> -		DPU_DEBUG("dim_layer data removed\n");
> -		return;
> -	}
> -
> -	if (copy_from_user(&dim_layer_v1, usr_ptr, sizeof(dim_layer_v1))) {
> -		DPU_ERROR("failed to copy dim_layer data\n");
> -		return;
> -	}
> -
> -	count = dim_layer_v1.num_layers;
> -	if (count > DPU_MAX_DIM_LAYERS) {
> -		DPU_ERROR("invalid number of dim_layers:%d", count);
> -		return;
> -	}
> -
> -	/* populate from user space */
> -	cstate->num_dim_layers = count;
> -	for (i = 0; i < count; i++) {
> -		user_cfg = &dim_layer_v1.layer_cfg[i];
> -
> -		dim_layer[i].flags = user_cfg->flags;
> -		dim_layer[i].stage = user_cfg->stage + DPU_STAGE_0;
> -
> -		dim_layer[i].rect.x = user_cfg->rect.x1;
> -		dim_layer[i].rect.y = user_cfg->rect.y1;
> -		dim_layer[i].rect.w = user_cfg->rect.x2 - user_cfg->rect.x1;
> -		dim_layer[i].rect.h = user_cfg->rect.y2 - user_cfg->rect.y1;
> -
> -		dim_layer[i].color_fill = (struct dpu_mdss_color) {
> -				user_cfg->color_fill.color_0,
> -				user_cfg->color_fill.color_1,
> -				user_cfg->color_fill.color_2,
> -				user_cfg->color_fill.color_3,
> -		};
> -
> -		DPU_DEBUG("dim_layer[%d] - flags:%d, stage:%d\n",
> -				i, dim_layer[i].flags, dim_layer[i].stage);
> -		DPU_DEBUG(" rect:{%d,%d,%d,%d}, color:{%d,%d,%d,%d}\n",
> -				dim_layer[i].rect.x, dim_layer[i].rect.y,
> -				dim_layer[i].rect.w, dim_layer[i].rect.h,
> -				dim_layer[i].color_fill.color_0,
> -				dim_layer[i].color_fill.color_1,
> -				dim_layer[i].color_fill.color_2,
> -				dim_layer[i].color_fill.color_3);
> -	}
> -}
> -
> -/**
> - * _dpu_crtc_dest_scaler_init - allocate memory for scaler lut
> - * @dpu_crtc    :  Pointer to dpu crtc
> - * @catalog :  Pointer to mdss catalog info
> - */
> -static void _dpu_crtc_dest_scaler_init(struct dpu_crtc *dpu_crtc,
> -				struct dpu_mdss_cfg *catalog)
> -{
> -	if (!dpu_crtc || !catalog)
> -		return;
> -
> -	if (!catalog->mdp[0].has_dest_scaler) {
> -		DPU_DEBUG("dest scaler feature not supported\n");
> -		return;
> -	}
> -
> -	dpu_crtc->scl3_lut_cfg = kzalloc(sizeof(struct dpu_hw_scaler3_lut_cfg),
> -				GFP_KERNEL);
> -	if (!dpu_crtc->scl3_lut_cfg)
> -		DPU_ERROR("failed to create scale LUT for dest scaler");
> -}
> -
> -/**
> - * _dpu_crtc_set_dest_scaler - copy dest scaler settings from userspace
> - * @dpu_crtc   :  Pointer to dpu crtc
> - * @cstate :  Pointer to dpu crtc state
> - * @usr_ptr:  User ptr for dpu_drm_dest_scaler_data struct
> - */
> -static int _dpu_crtc_set_dest_scaler(struct dpu_crtc *dpu_crtc,
> -				struct dpu_crtc_state *cstate,
> -				void __user *usr_ptr)
> -{
> -	struct dpu_drm_dest_scaler_data ds_data;
> -	struct dpu_drm_dest_scaler_cfg *ds_cfg_usr;
> -	struct dpu_drm_scaler_v2 scaler_v2;
> -	void __user *scaler_v2_usr;
> -	int i, count, ret = 0;
> -
> -	if (!dpu_crtc || !cstate) {
> -		DPU_ERROR("invalid dpu_crtc/state\n");
> -		return -EINVAL;
> -	}
> -
> -	DPU_DEBUG("crtc %s\n", dpu_crtc->name);
> -
> -	cstate->num_ds = 0;
> -	cstate->ds_dirty = false;
> -	if (!usr_ptr) {
> -		DPU_DEBUG("ds data removed\n");
> -		return 0;
> -	}
> -
> -	if (copy_from_user(&ds_data, usr_ptr, sizeof(ds_data))) {
> -		DPU_ERROR("failed to copy dest scaler data from user\n");
> -		return -EINVAL;
> -	}
> -
> -	count = ds_data.num_dest_scaler;
> -	if (!dpu_crtc->num_mixers || count > dpu_crtc->num_mixers ||
> -		(count && (count != dpu_crtc->num_mixers) &&
> -		!(ds_data.ds_cfg[0].flags & DPU_DRM_DESTSCALER_PU_ENABLE))) {
> -		DPU_ERROR("invalid config:num ds(%d), mixers(%d),flags(%d)\n",
> -			count, dpu_crtc->num_mixers, ds_data.ds_cfg[0].flags);
> -		return -EINVAL;
> -	}
> -
> -	/* Populate from user space */
> -	for (i = 0; i < count; i++) {
> -		ds_cfg_usr = &ds_data.ds_cfg[i];
> -
> -		cstate->ds_cfg[i].ndx = ds_cfg_usr->index;
> -		cstate->ds_cfg[i].flags = ds_cfg_usr->flags;
> -		cstate->ds_cfg[i].lm_width = ds_cfg_usr->lm_width;
> -		cstate->ds_cfg[i].lm_height = ds_cfg_usr->lm_height;
> -		cstate->ds_cfg[i].scl3_cfg = NULL;
> -
> -		if (ds_cfg_usr->scaler_cfg) {
> -			scaler_v2_usr =
> -			(void __user *)((uintptr_t)ds_cfg_usr->scaler_cfg);
> -
> -			memset(&scaler_v2, 0, sizeof(scaler_v2));
> -
> -			cstate->ds_cfg[i].scl3_cfg =
> -				kzalloc(sizeof(struct dpu_hw_scaler3_cfg),
> -					GFP_KERNEL);
> -
> -			if (!cstate->ds_cfg[i].scl3_cfg) {
> -				ret = -ENOMEM;
> -				goto err;
> -			}
> -
> -			if (copy_from_user(&scaler_v2, scaler_v2_usr,
> -					sizeof(scaler_v2))) {
> -				DPU_ERROR("scale data:copy from user failed\n");
> -				ret = -EINVAL;
> -				goto err;
> -			}
> -
> -			dpu_set_scaler_v2(cstate->ds_cfg[i].scl3_cfg,
> -					&scaler_v2);
> -
> -			DPU_DEBUG("en(%d)dir(%d)de(%d) src(%dx%d) dst(%dx%d)\n",
> -				scaler_v2.enable, scaler_v2.dir_en,
> -				scaler_v2.de.enable, scaler_v2.src_width[0],
> -				scaler_v2.src_height[0], scaler_v2.dst_width,
> -				scaler_v2.dst_height);
> -			DPU_EVT32_VERBOSE(DRMID(&dpu_crtc->base),
> -				scaler_v2.enable, scaler_v2.dir_en,
> -				scaler_v2.de.enable, scaler_v2.src_width[0],
> -				scaler_v2.src_height[0], scaler_v2.dst_width,
> -				scaler_v2.dst_height);
> -		}
> -
> -		DPU_DEBUG("ds cfg[%d]-ndx(%d) flags(%d) lm(%dx%d)\n",
> -			i, ds_cfg_usr->index, ds_cfg_usr->flags,
> -			ds_cfg_usr->lm_width, ds_cfg_usr->lm_height);
> -		DPU_EVT32_VERBOSE(DRMID(&dpu_crtc->base), i, ds_cfg_usr->index,
> -			ds_cfg_usr->flags, ds_cfg_usr->lm_width,
> -			ds_cfg_usr->lm_height);
> -	}
> -
> -	cstate->num_ds = count;
> -	cstate->ds_dirty = true;
> -	return 0;
> -
> -err:
> -	for (; i >= 0; i--)
> -		kfree(cstate->ds_cfg[i].scl3_cfg);
> -
> -	return ret;
> -}
> -
> -/**
> - * _dpu_crtc_check_dest_scaler_data - validate the dest scaler data
> - * @crtc  :  Pointer to drm crtc
> - * @state :  Pointer to drm crtc state
> - */
> -static int _dpu_crtc_check_dest_scaler_data(struct drm_crtc *crtc,
> -				struct drm_crtc_state *state)
> -{
> -	struct dpu_crtc *dpu_crtc;
> -	struct dpu_crtc_state *cstate;
> -	struct drm_display_mode *mode;
> -	struct dpu_kms *kms;
> -	struct dpu_hw_ds *hw_ds;
> -	struct dpu_hw_ds_cfg *cfg;
> -	u32 i, ret = 0, lm_idx;
> -	u32 num_ds_enable = 0;
> -	u32 max_in_width = 0, max_out_width = 0;
> -	u32 prev_lm_width = 0, prev_lm_height = 0;
> -
> -	if (!crtc || !state)
> -		return -EINVAL;
> -
> -	dpu_crtc = to_dpu_crtc(crtc);
> -	cstate = to_dpu_crtc_state(state);
> -	kms = _dpu_crtc_get_kms(crtc);
> -	mode = &state->adjusted_mode;
> -
> -	DPU_DEBUG("crtc%d\n", crtc->base.id);
> -
> -	if (!cstate->ds_dirty && !cstate->num_ds_enabled) {
> -		DPU_DEBUG("dest scaler property not set, skip validation\n");
> -		return 0;
> -	}
> -
> -	if (!kms || !kms->catalog) {
> -		DPU_ERROR("invalid parameters\n");
> -		return -EINVAL;
> -	}
> -
> -	if (!kms->catalog->mdp[0].has_dest_scaler) {
> -		DPU_DEBUG("dest scaler feature not supported\n");
> -		return 0;
> -	}
> -
> -	if (!dpu_crtc->num_mixers) {
> -		DPU_ERROR("mixers not allocated\n");
> -		return -EINVAL;
> -	}
> -
> -	/**
> -	 * Check if sufficient hw resources are
> -	 * available as per target caps & topology
> -	 */
> -	if (dpu_crtc->num_mixers > CRTC_DUAL_MIXERS) {
> -		DPU_ERROR("invalid config: mixers(%d) max(%d)\n",
> -			dpu_crtc->num_mixers, CRTC_DUAL_MIXERS);
> -		ret = -EINVAL;
> -		goto err;
> -	}
> -
> -	for (i = 0; i < dpu_crtc->num_mixers; i++) {
> -		if (!dpu_crtc->mixers[i].hw_lm || !dpu_crtc->mixers[i].hw_ds) {
> -			DPU_ERROR("insufficient HW resources allocated\n");
> -			ret = -EINVAL;
> -			goto err;
> -		}
> -	}
> -
> -	/**
> -	 * Check if DS needs to be enabled or disabled
> -	 * In case of enable, validate the data
> -	 */
> -	if (!cstate->ds_dirty || !cstate->num_ds ||
> -		!(cstate->ds_cfg[0].flags & DPU_DRM_DESTSCALER_ENABLE)) {
> -		DPU_DEBUG("disable dest scaler,dirty(%d)num(%d)flags(%d)\n",
> -			cstate->ds_dirty, cstate->num_ds,
> -			cstate->ds_cfg[0].flags);
> -		goto disable;
> -	}
> -
> -	/**
> -	 * No of dest scalers shouldn't exceed hw ds block count and
> -	 * also, match the num of mixers unless it is partial update
> -	 * left only/right only use case - currently PU + DS is not supported
> -	 */
> -	if (cstate->num_ds > kms->catalog->ds_count ||
> -		((cstate->num_ds != dpu_crtc->num_mixers) &&
> -		!(cstate->ds_cfg[0].flags & DPU_DRM_DESTSCALER_PU_ENABLE))) {
> -		DPU_ERROR("invalid cfg: num_ds(%d), hw_ds_cnt(%d) flags(%d)\n",
> -			cstate->num_ds, kms->catalog->ds_count,
> -			cstate->ds_cfg[0].flags);
> -		ret = -EINVAL;
> -		goto err;
> -	}
> -
> -	/* Validate the DS data */
> -	for (i = 0; i < cstate->num_ds; i++) {
> -		cfg = &cstate->ds_cfg[i];
> -		lm_idx = cfg->ndx;
> -
> -		/**
> -		 * Validate against topology
> -		 * No of dest scalers should match the num of mixers
> -		 * unless it is partial update left only/right only use case
> -		 */
> -		if (lm_idx >= dpu_crtc->num_mixers || (i != lm_idx &&
> -			!(cfg->flags & DPU_DRM_DESTSCALER_PU_ENABLE))) {
> -			DPU_ERROR("invalid user data(%d):idx(%d), flags(%d)\n",
> -				i, lm_idx, cfg->flags);
> -			ret = -EINVAL;
> -			goto err;
> -		}
> -
> -		hw_ds = dpu_crtc->mixers[lm_idx].hw_ds;
> -
> -		if (!max_in_width && !max_out_width) {
> -			max_in_width = hw_ds->scl->top->maxinputwidth;
> -			max_out_width = hw_ds->scl->top->maxoutputwidth;
> -
> -			if (cstate->num_ds == CRTC_DUAL_MIXERS)
> -				max_in_width -= DPU_DS_OVERFETCH_SIZE;
> -
> -			DPU_DEBUG("max DS width [%d,%d] for num_ds = %d\n",
> -				max_in_width, max_out_width, cstate->num_ds);
> -		}
> -
> -		/* Check LM width and height */
> -		if (cfg->lm_width > (mode->hdisplay/dpu_crtc->num_mixers) ||
> -			cfg->lm_height > mode->vdisplay ||
> -			!cfg->lm_width || !cfg->lm_height) {
> -			DPU_ERROR("invalid lm size[%d,%d] display [%d,%d]\n",
> -				cfg->lm_width,
> -				cfg->lm_height,
> -				mode->hdisplay/dpu_crtc->num_mixers,
> -				mode->vdisplay);
> -			ret = -E2BIG;
> -			goto err;
> -		}
> -
> -		if (!prev_lm_width && !prev_lm_height) {
> -			prev_lm_width = cfg->lm_width;
> -			prev_lm_height = cfg->lm_height;
> -		} else {
> -			if (cfg->lm_width != prev_lm_width ||
> -				cfg->lm_height != prev_lm_height) {
> -				DPU_ERROR("lm size:left[%d,%d], right[%d %d]\n",
> -					cfg->lm_width, cfg->lm_height,
> -					prev_lm_width, prev_lm_height);
> -				ret = -EINVAL;
> -				goto err;
> -			}
> -		}
> -
> -		/* Check scaler data */
> -		if (cfg->flags & DPU_DRM_DESTSCALER_SCALE_UPDATE ||
> -			cfg->flags & DPU_DRM_DESTSCALER_ENHANCER_UPDATE) {
> -			if (!cfg->scl3_cfg) {
> -				ret = -EINVAL;
> -				DPU_ERROR("null scale data\n");
> -				goto err;
> -			}
> -			if (cfg->scl3_cfg->src_width[0] > max_in_width ||
> -				cfg->scl3_cfg->dst_width > max_out_width ||
> -				!cfg->scl3_cfg->src_width[0] ||
> -				!cfg->scl3_cfg->dst_width) {
> -				DPU_ERROR("scale width(%d %d) for ds-%d:\n",
> -					cfg->scl3_cfg->src_width[0],
> -					cfg->scl3_cfg->dst_width,
> -					hw_ds->idx - DS_0);
> -				DPU_ERROR("scale_en = %d, DE_en =%d\n",
> -					cfg->scl3_cfg->enable,
> -					cfg->scl3_cfg->de.enable);
> -
> -				cfg->flags &=
> -					~DPU_DRM_DESTSCALER_SCALE_UPDATE;
> -				cfg->flags &=
> -					~DPU_DRM_DESTSCALER_ENHANCER_UPDATE;
> -
> -				ret = -EINVAL;
> -				goto err;
> -			}
> -		}
> -
> -		if (cfg->flags & DPU_DRM_DESTSCALER_ENABLE)
> -			num_ds_enable++;
> -
> -		/**
> -		 * Validation successful, indicator for flush to be issued
> -		 */
> -		cfg->set_lm_flush = true;
> -
> -		DPU_DEBUG("ds[%d]: flags = 0x%X\n",
> -			hw_ds->idx - DS_0, cfg->flags);
> -	}
> -
> -disable:
> -	DPU_DEBUG("dest scaler enable status, old = %d, new = %d",
> -		cstate->num_ds_enabled, num_ds_enable);
> -	DPU_EVT32(DRMID(crtc), cstate->num_ds_enabled, num_ds_enable,
> -		cstate->ds_dirty);
> -
> -	if (cstate->num_ds_enabled != num_ds_enable) {
> -		/* Disabling destination scaler */
> -		if (!num_ds_enable) {
> -			for (i = 0; i < dpu_crtc->num_mixers; i++) {
> -				cfg = &cstate->ds_cfg[i];
> -				cfg->ndx = i;
> -				/* Update scaler settings in disable case */
> -				cfg->flags = DPU_DRM_DESTSCALER_SCALE_UPDATE;
> -				cfg->scl3_cfg->enable = 0;
> -				cfg->scl3_cfg->de.enable = 0;
> -				cfg->set_lm_flush = true;
> -			}
> -		}
> -		cstate->num_ds_enabled = num_ds_enable;
> -		cstate->ds_dirty = true;
> -	}
> -
> -	return 0;
> -
> -err:
> -	cstate->ds_dirty = false;
> -	return ret;
> -}
> -
>  static void _dpu_crtc_setup_mixer_for_encoder(
>  		struct drm_crtc *crtc,
>  		struct drm_encoder *enc)
> @@ -1813,11 +1123,10 @@ static void _dpu_crtc_setup_mixer_for_encoder(
>  	struct dpu_crtc_mixer *mixer;
>  	struct dpu_hw_ctl *last_valid_ctl = NULL;
>  	int i;
> -	struct dpu_rm_hw_iter lm_iter, ctl_iter, ds_iter;
> +	struct dpu_rm_hw_iter lm_iter, ctl_iter;
>  
>  	dpu_rm_init_hw_iter(&lm_iter, enc->base.id, DPU_HW_BLK_LM);
>  	dpu_rm_init_hw_iter(&ctl_iter, enc->base.id, DPU_HW_BLK_CTL);
> -	dpu_rm_init_hw_iter(&ds_iter, enc->base.id, DPU_HW_BLK_DS);
>  
>  	/* Set up all the mixers and ctls reserved by this encoder */
>  	for (i = dpu_crtc->num_mixers; i < ARRAY_SIZE(dpu_crtc->mixers); i++) {
> @@ -1844,10 +1153,6 @@ static void _dpu_crtc_setup_mixer_for_encoder(
>  			return;
>  		}
>  
> -		/* DS may be null */
> -		(void) dpu_rm_get_hw(rm, &ds_iter);
> -		mixer->hw_ds = (struct dpu_hw_ds *)ds_iter.hw;
> -
>  		mixer->encoder = enc;
>  
>  		dpu_crtc->num_mixers++;
> @@ -1855,9 +1160,6 @@ static void _dpu_crtc_setup_mixer_for_encoder(
>  				i, mixer->hw_lm->idx - LM_0);
>  		DPU_DEBUG("setup mixer %d: ctl %d\n",
>  				i, mixer->hw_ctl->idx - CTL_0);
> -		if (mixer->hw_ds)
> -			DPU_DEBUG("setup mixer %d: ds %d\n",
> -				i, mixer->hw_ds->idx - DS_0);
>  	}
>  }
>  
> @@ -1973,7 +1275,6 @@ static void dpu_crtc_atomic_begin(struct drm_crtc *crtc,
>  		return;
>  
>  	_dpu_crtc_blend_setup(crtc);
> -	_dpu_crtc_dest_scaler_setup(crtc);
>  
>  	/*
>  	 * PP_DONE irq is only used by command mode for now.
> @@ -2672,13 +1973,6 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
>  
>  	memset(pipe_staged, 0, sizeof(pipe_staged));
>  
> -	rc = _dpu_crtc_check_dest_scaler_data(crtc, state);
> -	if (rc) {
> -		DPU_ERROR("crtc%d failed dest scaler check %d\n",
> -			crtc->base.id, rc);
> -		goto end;
> -	}
> -
>  	mixer_width = dpu_crtc_get_mixer_width(dpu_crtc, cstate, mode);
>  
>  	_dpu_crtc_setup_lm_bounds(crtc, state);
> @@ -2699,19 +1993,6 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
>  		pstates[cnt].stage = pstate->normalized_zpos;
>  		pstates[cnt].pipe_id = dpu_plane_pipe(plane);
>  
> -		/* check dim layer stage with every plane */
> -		for (i = 0; i < cstate->num_dim_layers; i++) {
> -			if (cstate->dim_layer[i].stage
> -					== (pstates[cnt].stage + DPU_STAGE_0)) {
> -				DPU_ERROR(
> -					"plane:%d/dim_layer:%i-same stage:%d\n",
> -					plane->base.id, i,
> -					cstate->dim_layer[i].stage);
> -				rc = -EINVAL;
> -				goto end;
> -			}
> -		}
> -
>  		if (pipe_staged[pstates[cnt].pipe_id]) {
>  			multirect_plane[multirect_count].r0 =
>  				pipe_staged[pstates[cnt].pipe_id];
> @@ -2947,52 +2228,11 @@ static void dpu_crtc_install_properties(struct drm_crtc *crtc,
>  		return;
>  	}
>  
> -	/* range properties */
> -	msm_property_install_range(&dpu_crtc->property_info,
> -			"core_clk", 0x0, 0, U64_MAX,
> -			dpu_kms->perf.max_core_clk_rate,
> -			CRTC_PROP_CORE_CLK);
> -	msm_property_install_range(&dpu_crtc->property_info,
> -			"core_ab", 0x0, 0, U64_MAX,
> -			catalog->perf.max_bw_high * 1000ULL,
> -			CRTC_PROP_CORE_AB);
> -	msm_property_install_range(&dpu_crtc->property_info,
> -			"core_ib", 0x0, 0, U64_MAX,
> -			catalog->perf.max_bw_high * 1000ULL,
> -			CRTC_PROP_CORE_IB);
> -	msm_property_install_range(&dpu_crtc->property_info,
> -			"llcc_ab", 0x0, 0, U64_MAX,
> -			catalog->perf.max_bw_high * 1000ULL,
> -			CRTC_PROP_LLCC_AB);
> -	msm_property_install_range(&dpu_crtc->property_info,
> -			"llcc_ib", 0x0, 0, U64_MAX,
> -			catalog->perf.max_bw_high * 1000ULL,
> -			CRTC_PROP_LLCC_IB);
> -	msm_property_install_range(&dpu_crtc->property_info,
> -			"dram_ab", 0x0, 0, U64_MAX,
> -			catalog->perf.max_bw_high * 1000ULL,
> -			CRTC_PROP_DRAM_AB);
> -	msm_property_install_range(&dpu_crtc->property_info,
> -			"dram_ib", 0x0, 0, U64_MAX,
> -			catalog->perf.max_bw_high * 1000ULL,
> -			CRTC_PROP_DRAM_IB);
> -
> -	msm_property_install_range(&dpu_crtc->property_info,
> -		"idle_timeout", IDLE_TIMEOUT, 0, U64_MAX, 0,
> -		CRTC_PROP_IDLE_TIMEOUT);
> -
>  	msm_property_install_blob(&dpu_crtc->property_info, "capabilities",
>  		DRM_MODE_PROP_IMMUTABLE, CRTC_PROP_INFO);
>  
>  	dpu_kms_info_reset(info);
>  
> -	if (catalog->caps->has_dim_layer) {
> -		msm_property_install_volatile_range(&dpu_crtc->property_info,
> -			"dim_layer_v1", 0x0, 0, ~0, 0, CRTC_PROP_DIM_LAYER_V1);
> -		dpu_kms_info_add_keyint(info, "dim_layer_v1_max_layers",
> -				DPU_MAX_DIM_LAYERS);
> -	}
> -
>  	dpu_kms_info_add_keyint(info, "hw_version", catalog->hwversion);
>  	dpu_kms_info_add_keyint(info, "max_linewidth",
>  			catalog->caps->max_mixer_width);
> @@ -3012,39 +2252,6 @@ static void dpu_crtc_install_properties(struct drm_crtc *crtc,
>  					"smart_dma_rev", "smart_dma_v2");
>  	}
>  
> -	if (catalog->mdp[0].has_dest_scaler) {
> -		dpu_kms_info_add_keyint(info, "has_dest_scaler",
> -				catalog->mdp[0].has_dest_scaler);
> -		dpu_kms_info_add_keyint(info, "dest_scaler_count",
> -					catalog->ds_count);
> -
> -		if (catalog->ds[0].top) {
> -			dpu_kms_info_add_keyint(info,
> -					"max_dest_scaler_input_width",
> -					catalog->ds[0].top->maxinputwidth);
> -			dpu_kms_info_add_keyint(info,
> -					"max_dest_scaler_output_width",
> -					catalog->ds[0].top->maxinputwidth);
> -			dpu_kms_info_add_keyint(info, "max_dest_scale_up",
> -					catalog->ds[0].top->maxupscale);
> -		}
> -
> -		if (catalog->ds[0].features & BIT(DPU_SSPP_SCALER_QSEED3)) {
> -			msm_property_install_volatile_range(
> -					&dpu_crtc->property_info, "dest_scaler",
> -					0x0, 0, ~0, 0, CRTC_PROP_DEST_SCALER);
> -			msm_property_install_blob(&dpu_crtc->property_info,
> -					"ds_lut_ed", 0,
> -					CRTC_PROP_DEST_SCALER_LUT_ED);
> -			msm_property_install_blob(&dpu_crtc->property_info,
> -					"ds_lut_cir", 0,
> -					CRTC_PROP_DEST_SCALER_LUT_CIR);
> -			msm_property_install_blob(&dpu_crtc->property_info,
> -					"ds_lut_sep", 0,
> -					CRTC_PROP_DEST_SCALER_LUT_SEP);
> -		}
> -	}
> -
>  	dpu_kms_info_add_keyint(info, "has_src_split",
>  				catalog->caps->has_src_split);
>  	if (catalog->perf.max_bw_low)
> @@ -3113,7 +2320,7 @@ static int dpu_crtc_atomic_set_property(struct drm_crtc *crtc,
>  {
>  	struct dpu_crtc *dpu_crtc;
>  	struct dpu_crtc_state *cstate;
> -	int idx, ret = -EINVAL;
> +	int ret = -EINVAL;
>  
>  	if (!crtc || !state || !property) {
>  		DPU_ERROR("invalid argument(s)\n");
> @@ -3122,45 +2329,8 @@ static int dpu_crtc_atomic_set_property(struct drm_crtc *crtc,
>  		cstate = to_dpu_crtc_state(state);
>  		ret = msm_property_atomic_set(&dpu_crtc->property_info,
>  				&cstate->property_state, property, val);
> -		if (!ret) {
> -			idx = msm_property_index(&dpu_crtc->property_info,
> -					property);
> -			switch (idx) {
> -			case CRTC_PROP_DIM_LAYER_V1:
> -				_dpu_crtc_set_dim_layer_v1(cstate,
> -							u64_to_user_ptr(val));
> -				break;
> -			case CRTC_PROP_DEST_SCALER:
> -				ret = _dpu_crtc_set_dest_scaler(dpu_crtc,
> -						cstate, u64_to_user_ptr(val));
> -				break;
> -			case CRTC_PROP_DEST_SCALER_LUT_ED:
> -			case CRTC_PROP_DEST_SCALER_LUT_CIR:
> -			case CRTC_PROP_DEST_SCALER_LUT_SEP:
> -				ret = _dpu_crtc_set_dest_scaler_lut(dpu_crtc,
> -								cstate, idx);
> -				break;
> -			case CRTC_PROP_CORE_CLK:
> -			case CRTC_PROP_CORE_AB:
> -			case CRTC_PROP_CORE_IB:
> -				cstate->bw_control = true;
> -				break;
> -			case CRTC_PROP_LLCC_AB:
> -			case CRTC_PROP_LLCC_IB:
> -			case CRTC_PROP_DRAM_AB:
> -			case CRTC_PROP_DRAM_IB:
> -				cstate->bw_control = true;
> -				cstate->bw_split_vote = true;
> -				break;
> -			case CRTC_PROP_IDLE_TIMEOUT:
> -				_dpu_crtc_set_idle_timeout(crtc, val);
> -			default:
> -				/* nothing to do */
> -				break;
> -			}
> -		} else {
> +		if (ret)
>  			DRM_ERROR("failed to set the property\n");
> -		}
>  
>  		DPU_DEBUG("crtc%d %s[%d] <= 0x%llx ret=%d\n", crtc->base.id,
>  				property->name, property->base.id, val, ret);
> @@ -3276,23 +2446,6 @@ static int _dpu_debugfs_status_show(struct seq_file *s, void *data)
>  
>  	seq_puts(s, "\n");
>  
> -	for (i = 0; i < cstate->num_dim_layers; i++) {
> -		struct dpu_hw_dim_layer *dim_layer = &cstate->dim_layer[i];
> -
> -		seq_printf(s, "\tdim_layer:%d] stage:%d flags:%d\n",
> -				i, dim_layer->stage, dim_layer->flags);
> -		seq_printf(s, "\tdst_x:%d dst_y:%d dst_w:%d dst_h:%d\n",
> -				dim_layer->rect.x, dim_layer->rect.y,
> -				dim_layer->rect.w, dim_layer->rect.h);
> -		seq_printf(s,
> -			"\tcolor_0:%d color_1:%d color_2:%d color_3:%d\n",
> -				dim_layer->color_fill.color_0,
> -				dim_layer->color_fill.color_1,
> -				dim_layer->color_fill.color_2,
> -				dim_layer->color_fill.color_3);
> -		seq_puts(s, "\n");
> -	}
> -
>  	drm_atomic_crtc_for_each_plane(plane, crtc) {
>  		pstate = to_dpu_plane_state(plane->state);
>  		state = plane->state;
> @@ -3779,9 +2932,6 @@ struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct drm_plane *plane)
>  
>  	dpu_crtc_install_properties(crtc, kms->catalog);
>  
> -	/* Init dest scaler */
> -	_dpu_crtc_dest_scaler_init(dpu_crtc, kms->catalog);
> -
>  	DPU_DEBUG("%s: successfully initialized crtc\n", dpu_crtc->name);
>  	return crtc;
>  }
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> index 5f380b8..6628eb3 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> @@ -26,7 +26,6 @@
>  #include "dpu_kms.h"
>  #include "dpu_core_perf.h"
>  #include "dpu_hw_blk.h"
> -#include "dpu_hw_ds.h"
>  
>  #define DPU_CRTC_NAME_SIZE	12
>  
> @@ -87,7 +86,6 @@ struct dpu_crtc_smmu_state_data {
>   * struct dpu_crtc_mixer: stores the map for each virtual pipeline in the CRTC
>   * @hw_lm:	LM HW Driver context
>   * @hw_ctl:	CTL Path HW driver context
> - * @hw_ds:	DS HW driver context
>   * @encoder:	Encoder attached to this lm & ctl
>   * @mixer_op_mode:	mixer blending operation mode
>   * @flush_mask:	mixer flush mask for ctl, mixer and pipe
> @@ -95,7 +93,6 @@ struct dpu_crtc_smmu_state_data {
>  struct dpu_crtc_mixer {
>  	struct dpu_hw_mixer *hw_lm;
>  	struct dpu_hw_ctl *hw_ctl;
> -	struct dpu_hw_ds *hw_ds;
>  	struct drm_encoder *encoder;
>  	u32 mixer_op_mode;
>  	u32 flush_mask;
> @@ -314,12 +311,6 @@ struct dpu_crtc_respool {
>   * @property_state: Local storage for msm_prop properties
>   * @property_values: Current crtc property values
>   * @input_fence_timeout_ns : Cached input fence timeout, in ns
> - * @num_dim_layers: Number of dim layers
> - * @dim_layer: Dim layer configs
> - * @num_ds: Number of destination scalers to be configured
> - * @num_ds_enabled: Number of destination scalers enabled
> - * @ds_dirty: Boolean to indicate if dirty or not
> - * @ds_cfg: Destination scaler config
>   * @new_perf: new performance state being requested
>   */
>  struct dpu_crtc_state {
> @@ -336,12 +327,6 @@ struct dpu_crtc_state {
>  	struct msm_property_state property_state;
>  	struct msm_property_value property_values[CRTC_PROP_COUNT];
>  	uint64_t input_fence_timeout_ns;
> -	uint32_t num_dim_layers;
> -	struct dpu_hw_dim_layer dim_layer[DPU_MAX_DIM_LAYERS];
> -	uint32_t num_ds;
> -	uint32_t num_ds_enabled;
> -	bool ds_dirty;
> -	struct dpu_hw_ds_cfg ds_cfg[DPU_MAX_DS_COUNT];
>  
>  	struct dpu_core_perf_params new_perf;
>  	struct dpu_crtc_respool rp;
> @@ -362,7 +347,6 @@ struct dpu_crtc_state {
>  /**
>   * dpu_crtc_get_mixer_width - get the mixer width
>   * Mixer width will be same as panel width(/2 for split)
> - * unless destination scaler feature is enabled
>   */
>  static inline int dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
>  	struct dpu_crtc_state *cstate, struct drm_display_mode *mode)
> @@ -372,10 +356,7 @@ static inline int dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
>  	if (!dpu_crtc || !cstate || !mode)
>  		return 0;
>  
> -	if (cstate->num_ds_enabled)
> -		mixer_width = cstate->ds_cfg[0].lm_width;
> -	else
> -		mixer_width = (dpu_crtc->num_mixers == CRTC_DUAL_MIXERS ?
> +	mixer_width = (dpu_crtc->num_mixers == CRTC_DUAL_MIXERS ?
>  			mode->hdisplay / CRTC_DUAL_MIXERS : mode->hdisplay);
>  
>  	return mixer_width;
> @@ -383,8 +364,7 @@ static inline int dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
>  
>  /**
>   * dpu_crtc_get_mixer_height - get the mixer height
> - * Mixer height will be same as panel height unless
> - * destination scaler feature is enabled
> + * Mixer height will be same as panel height
>   */
>  static inline int dpu_crtc_get_mixer_height(struct dpu_crtc *dpu_crtc,
>  		struct dpu_crtc_state *cstate, struct drm_display_mode *mode)
> @@ -392,8 +372,7 @@ static inline int dpu_crtc_get_mixer_height(struct dpu_crtc *dpu_crtc,
>  	if (!dpu_crtc || !cstate || !mode)
>  		return 0;
>  
> -	return (cstate->num_ds_enabled ?
> -			cstate->ds_cfg[0].lm_height : mode->vdisplay);
> +	return mode->vdisplay;
>  }
>  
>  /**
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> index 77d3571..62660e0 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> @@ -230,18 +230,6 @@ struct dpu_encoder_virt {
>  };
>  
>  #define to_dpu_encoder_virt(x) container_of(x, struct dpu_encoder_virt, base)
> -
> -void dpu_encoder_set_idle_timeout(struct drm_encoder *drm_enc, u32 idle_timeout)
> -{
> -	struct dpu_encoder_virt *dpu_enc;
> -
> -	if (!drm_enc)
> -		return;
> -
> -	dpu_enc = to_dpu_encoder_virt(drm_enc);
> -	dpu_enc->idle_timeout = idle_timeout;
> -}
> -
>  static inline int _dpu_encoder_power_enable(struct dpu_encoder_virt *dpu_enc,
>  								bool enable)
>  {
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c
> deleted file mode 100644
> index fad19fb..0000000
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c
> +++ /dev/null
> @@ -1,149 +0,0 @@
> -/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 and
> - * only version 2 as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - */
> -
> -#include "dpu_hw_ds.h"
> -#include "dpu_formats.h"
> -#include "dpu_dbg.h"
> -#include "dpu_kms.h"
> -
> -/* Destination scaler TOP registers */
> -#define DEST_SCALER_OP_MODE     0x00
> -#define DEST_SCALER_HW_VERSION  0x10
> -
> -static void dpu_hw_ds_setup_opmode(struct dpu_hw_ds *hw_ds,
> -				u32 op_mode)
> -{
> -	struct dpu_hw_blk_reg_map *hw = &hw_ds->hw;
> -
> -	DPU_REG_WRITE(hw, DEST_SCALER_OP_MODE, op_mode);
> -}
> -
> -static void dpu_hw_ds_setup_scaler3(struct dpu_hw_ds *hw_ds,
> -			void *scaler_cfg, void *scaler_lut_cfg)
> -{
> -	struct dpu_hw_scaler3_cfg *scl3_cfg = scaler_cfg;
> -	struct dpu_hw_scaler3_lut_cfg *scl3_lut_cfg = scaler_lut_cfg;
> -
> -	if (!hw_ds || !hw_ds->scl || !scl3_cfg || !scl3_lut_cfg)
> -		return;
> -
> -	/*
> -	 * copy LUT values to scaler structure
> -	 */
> -	if (scl3_lut_cfg->is_configured) {
> -		scl3_cfg->dir_lut = scl3_lut_cfg->dir_lut;
> -		scl3_cfg->dir_len = scl3_lut_cfg->dir_len;
> -		scl3_cfg->cir_lut = scl3_lut_cfg->cir_lut;
> -		scl3_cfg->cir_len = scl3_lut_cfg->cir_len;
> -		scl3_cfg->sep_lut = scl3_lut_cfg->sep_lut;
> -		scl3_cfg->sep_len = scl3_lut_cfg->sep_len;
> -	}
> -
> -	dpu_hw_setup_scaler3(&hw_ds->hw, scl3_cfg,
> -			 hw_ds->scl->base,
> -			 hw_ds->scl->version,
> -			 dpu_get_dpu_format(DRM_FORMAT_XBGR2101010));
> -}
> -
> -static void _setup_ds_ops(struct dpu_hw_ds_ops *ops, unsigned long features)
> -{
> -	ops->setup_opmode = dpu_hw_ds_setup_opmode;
> -
> -	if (test_bit(DPU_SSPP_SCALER_QSEED3, &features))
> -		ops->setup_scaler = dpu_hw_ds_setup_scaler3;
> -}
> -
> -static struct dpu_ds_cfg *_ds_offset(enum dpu_ds ds,
> -		struct dpu_mdss_cfg *m,
> -		void __iomem *addr,
> -		struct dpu_hw_blk_reg_map *b)
> -{
> -	int i;
> -
> -	if (!m || !addr || !b)
> -		return ERR_PTR(-EINVAL);
> -
> -	for (i = 0; i < m->ds_count; i++) {
> -		if ((ds == m->ds[i].id) &&
> -			 (m->ds[i].top)) {
> -			b->base_off = addr;
> -			b->blk_off = m->ds[i].top->base;
> -			b->length = m->ds[i].top->len;
> -			b->hwversion = m->hwversion;
> -			b->log_mask = DPU_DBG_MASK_DS;
> -			return &m->ds[i];
> -		}
> -	}
> -
> -	return ERR_PTR(-EINVAL);
> -}
> -
> -static struct dpu_hw_blk_ops dpu_hw_ops = {
> -	.start = NULL,
> -	.stop = NULL,
> -};
> -
> -struct dpu_hw_ds *dpu_hw_ds_init(enum dpu_ds idx,
> -			void __iomem *addr,
> -			struct dpu_mdss_cfg *m)
> -{
> -	struct dpu_hw_ds *hw_ds;
> -	struct dpu_ds_cfg *cfg;
> -	int rc;
> -
> -	if (!addr || !m)
> -		return ERR_PTR(-EINVAL);
> -
> -	hw_ds = kzalloc(sizeof(*hw_ds), GFP_KERNEL);
> -	if (!hw_ds)
> -		return ERR_PTR(-ENOMEM);
> -
> -	cfg = _ds_offset(idx, m, addr, &hw_ds->hw);
> -	if (IS_ERR_OR_NULL(cfg)) {
> -		DPU_ERROR("failed to get ds cfg\n");
> -		kfree(hw_ds);
> -		return ERR_PTR(-EINVAL);
> -	}
> -
> -	/* Assign ops */
> -	hw_ds->idx = idx;
> -	hw_ds->scl = cfg;
> -	_setup_ds_ops(&hw_ds->ops, hw_ds->scl->features);
> -
> -	rc = dpu_hw_blk_init(&hw_ds->base, DPU_HW_BLK_DS, idx, &dpu_hw_ops);
> -	if (rc) {
> -		DPU_ERROR("failed to init hw blk %d\n", rc);
> -		goto blk_init_error;
> -	}
> -
> -	if (cfg->len) {
> -		dpu_dbg_reg_register_dump_range(DPU_DBG_NAME, cfg->name,
> -				hw_ds->hw.blk_off + cfg->base,
> -				hw_ds->hw.blk_off + cfg->base + cfg->len,
> -				hw_ds->hw.xin_id);
> -	}
> -
> -	return hw_ds;
> -
> -blk_init_error:
> -	kzfree(hw_ds);
> -
> -	return ERR_PTR(rc);
> -
> -}
> -
> -void dpu_hw_ds_destroy(struct dpu_hw_ds *hw_ds)
> -{
> -	if (hw_ds)
> -		dpu_hw_blk_destroy(&hw_ds->base);
> -	kfree(hw_ds);
> -}
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h
> deleted file mode 100644
> index 2455920..0000000
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h
> +++ /dev/null
> @@ -1,111 +0,0 @@
> -/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 and
> - * only version 2 as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - */
> -
> -#ifndef _DPU_HW_DS_H
> -#define _DPU_HW_DS_H
> -
> -#include "dpu_hw_mdss.h"
> -#include "dpu_hw_util.h"
> -#include "dpu_hw_catalog.h"
> -#include "dpu_hw_blk.h"
> -
> -struct dpu_hw_ds;
> -
> -/* Destination Scaler DUAL mode overfetch pixel count */
> -#define DPU_DS_OVERFETCH_SIZE 5
> -
> -/* Destination scaler DUAL mode operation bit */
> -#define DPU_DS_OP_MODE_DUAL BIT(16)
> -
> -/* struct dpu_hw_ds_cfg - destination scaler config
> - * @ndx          : DS selection index
> - * @flags        : Flag to switch between mode for DS
> - * @lm_width     : Layer mixer width configuration
> - * @lm_heigh     : Layer mixer height configuration
> - * @set_lm_flush : LM flush bit
> - * @scl3_cfg     : Pointer to dpu_hw_scaler3_cfg.
> - */
> -struct dpu_hw_ds_cfg {
> -	u32 ndx;
> -	int flags;
> -	u32 lm_width;
> -	u32 lm_height;
> -	bool set_lm_flush;
> -	struct dpu_hw_scaler3_cfg *scl3_cfg;
> -};
> -
> -/**
> - * struct dpu_hw_ds_ops - interface to the destination scaler
> - * hardware driver functions
> - * Caller must call the init function to get the ds context for each ds
> - * Assumption is these functions will be called after clocks are enabled
> - */
> -struct dpu_hw_ds_ops {
> -	/**
> -	 * setup_opmode - destination scaler op mode setup
> -	 * @hw_ds   : Pointer to ds context
> -	 * @op_mode : Op mode configuration
> -	 */
> -	void (*setup_opmode)(struct dpu_hw_ds *hw_ds,
> -				u32 op_mode);
> -
> -	/**
> -	 * setup_scaler - destination scaler block setup
> -	 * @hw_ds          : Pointer to ds context
> -	 * @scaler_cfg     : Pointer to scaler data
> -	 * @scaler_lut_cfg : Pointer to scaler lut
> -	 */
> -	void (*setup_scaler)(struct dpu_hw_ds *hw_ds,
> -				void *scaler_cfg,
> -				void *scaler_lut_cfg);
> -
> -};
> -
> -/**
> - * struct dpu_hw_ds - destination scaler description
> - * @base : Hardware block base structure
> - * @hw   : Block hardware details
> - * @idx  : Destination scaler index
> - * @scl  : Pointer to
> - *          - scaler offset relative to top offset
> - *          - capabilities
> - * @ops  : Pointer to operations for this DS
> - */
> -struct dpu_hw_ds {
> -	struct dpu_hw_blk base;
> -	struct dpu_hw_blk_reg_map hw;
> -	enum dpu_ds idx;
> -	const struct dpu_ds_cfg *scl;
> -	struct dpu_hw_ds_ops ops;
> -};
> -
> -/**
> - * dpu_hw_ds_init - initializes the destination scaler
> - * hw driver object and should be called once before
> - * accessing every destination scaler
> - * @idx : DS index for which driver object is required
> - * @addr: Mapped register io address of MDP
> - * @m   : MDSS catalog information
> - * @Return: pointer to structure or ERR_PTR
> - */
> -struct dpu_hw_ds *dpu_hw_ds_init(enum dpu_ds idx,
> -			void __iomem *addr,
> -			struct dpu_mdss_cfg *m);
> -
> -/**
> - * dpu_hw_ds_destroy - destroys destination scaler
> - * driver context
> - * @hw_ds:   Pointer to DS context
> - */
> -void dpu_hw_ds_destroy(struct dpu_hw_ds *hw_ds);
> -
> -#endif /*_DPU_HW_DS_H */
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
> index 75a30db..830b69e 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
> @@ -172,68 +172,6 @@ static void dpu_hw_lm_gc(struct dpu_hw_mixer *mixer,
>  {
>  }
>  
> -static void dpu_hw_lm_clear_dim_layer(struct dpu_hw_mixer *ctx)
> -{
> -	struct dpu_hw_blk_reg_map *c = &ctx->hw;
> -	const struct dpu_lm_sub_blks *sblk = ctx->cap->sblk;
> -	int stage_off, i;
> -	u32 reset = BIT(16), val;
> -
> -	reset = ~reset;
> -	for (i = DPU_STAGE_0; i < sblk->maxblendstages; i++) {
> -		stage_off = _stage_offset(ctx, i);
> -		if (WARN_ON(stage_off < 0))
> -			return;
> -
> -		/*
> -		 * read the existing blendn_op register and clear only DIM layer
> -		 * bit (color_fill bit)
> -		 */
> -		val = DPU_REG_READ(c, LM_BLEND0_OP + stage_off);
> -		val &= reset;
> -		DPU_REG_WRITE(c, LM_BLEND0_OP + stage_off, val);
> -	}
> -}
> -
> -static void dpu_hw_lm_setup_dim_layer(struct dpu_hw_mixer *ctx,
> -		struct dpu_hw_dim_layer *dim_layer)
> -{
> -	struct dpu_hw_blk_reg_map *c = &ctx->hw;
> -	int stage_off;
> -	u32 val = 0, alpha = 0;
> -
> -	stage_off = _stage_offset(ctx, dim_layer->stage);
> -	if (stage_off < 0) {
> -		DPU_ERROR("invalid stage_off:%d for dim layer\n", stage_off);
> -		return;
> -	}
> -
> -	alpha = dim_layer->color_fill.color_3 & 0xFF;
> -	val = ((dim_layer->color_fill.color_1 << 2) & 0xFFF) << 16 |
> -			((dim_layer->color_fill.color_0 << 2) & 0xFFF);
> -	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_COLOR_0 + stage_off, val);
> -
> -	val = (alpha << 4) << 16 |
> -			((dim_layer->color_fill.color_2 << 2) & 0xFFF);
> -	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_COLOR_1 + stage_off, val);
> -
> -	val = dim_layer->rect.h << 16 | dim_layer->rect.w;
> -	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_SIZE + stage_off, val);
> -
> -	val = dim_layer->rect.y << 16 | dim_layer->rect.x;
> -	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_XY + stage_off, val);
> -
> -	val = BIT(16); /* enable dim layer */
> -	val |= DPU_BLEND_FG_ALPHA_FG_CONST | DPU_BLEND_BG_ALPHA_BG_CONST;
> -	if (dim_layer->flags & DPU_DRM_DIM_LAYER_EXCLUSIVE)
> -		val |= BIT(17);
> -	else
> -		val &= ~BIT(17);
> -	DPU_REG_WRITE(c, LM_BLEND0_OP + stage_off, val);
> -	val = (alpha << 16) | (0xff - alpha);
> -	DPU_REG_WRITE(c, LM_BLEND0_CONST_ALPHA + stage_off, val);
> -}
> -
>  static void dpu_hw_lm_setup_misr(struct dpu_hw_mixer *ctx,
>  				bool enable, u32 frame_count)
>  {
> @@ -272,11 +210,6 @@ static void _setup_mixer_ops(struct dpu_mdss_cfg *m,
>  	ops->setup_gc = dpu_hw_lm_gc;
>  	ops->setup_misr = dpu_hw_lm_setup_misr;
>  	ops->collect_misr = dpu_hw_lm_collect_misr;
> -
> -	if (test_bit(DPU_DIM_LAYER, &features)) {
> -		ops->setup_dim_layer = dpu_hw_lm_setup_dim_layer;
> -		ops->clear_dim_layer = dpu_hw_lm_clear_dim_layer;
> -	}
>  };
>  
>  static struct dpu_hw_blk_ops dpu_hw_ops = {
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
> index ef22c86..e29e5da 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
> @@ -67,20 +67,6 @@ struct dpu_hw_lm_ops {
>  	void (*setup_gc)(struct dpu_hw_mixer *mixer,
>  			void *cfg);
>  
> -	/**
> -	 * setup_dim_layer: configure dim layer settings
> -	 * @ctx: Pointer to layer mixer context
> -	 * @dim_layer: dim layer configs
> -	 */
> -	void (*setup_dim_layer)(struct dpu_hw_mixer *ctx,
> -			struct dpu_hw_dim_layer *dim_layer);
> -
> -	/**
> -	 * clear_dim_layer: clear dim layer settings
> -	 * @ctx: Pointer to layer mixer context
> -	 */
> -	void (*clear_dim_layer)(struct dpu_hw_mixer *ctx);
> -
>  	/* setup_misr: enables/disables MISR in HW register */
>  	void (*setup_misr)(struct dpu_hw_mixer *ctx,
>  			bool enable, u32 frame_count);
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
> index fcd164f..836ff9e 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
> @@ -99,7 +99,6 @@ enum dpu_hw_blk_type {
>  	DPU_HW_BLK_TOP = 0,
>  	DPU_HW_BLK_SSPP,
>  	DPU_HW_BLK_LM,
> -	DPU_HW_BLK_DS,
>  	DPU_HW_BLK_CTL,
>  	DPU_HW_BLK_CDM,
>  	DPU_HW_BLK_PINGPONG,
> @@ -469,20 +468,5 @@ struct dpu_mdss_color {
>  #define DPU_DBG_MASK_TOP      (1 << 8)
>  #define DPU_DBG_MASK_VBIF     (1 << 9)
>  #define DPU_DBG_MASK_ROT      (1 << 10)
> -#define DPU_DBG_MASK_DS       (1 << 11)
> -
> -/**
> - * struct dpu_hw_dim_layer: dim layer configs
> - * @flags: Flag to represent INCLUSIVE/EXCLUSIVE
> - * @stage: Blending stage of dim layer
> - * @color_fill: Color fill to be used for the layer
> - * @rect: Dim layer coordinates
> - */
> -struct dpu_hw_dim_layer {
> -	uint32_t flags;
> -	uint32_t stage;
> -	struct dpu_mdss_color color_fill;
> -	struct dpu_rect rect;
> -};
>  
>  #endif  /* _DPU_HW_MDSS_H */
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
> index f467bf1..0af2996 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
> @@ -17,7 +17,6 @@
>  #include "dpu_hw_lm.h"
>  #include "dpu_hw_ctl.h"
>  #include "dpu_hw_cdm.h"
> -#include "dpu_hw_ds.h"
>  #include "dpu_hw_pingpong.h"
>  #include "dpu_hw_intf.h"
>  #include "dpu_hw_wb.h"
> @@ -235,9 +234,6 @@ static void _dpu_rm_hw_destroy(enum dpu_hw_blk_type type, void *hw)
>  	case DPU_HW_BLK_LM:
>  		dpu_hw_lm_destroy(hw);
>  		break;
> -	case DPU_HW_BLK_DS:
> -		dpu_hw_ds_destroy(hw);
> -		break;
>  	case DPU_HW_BLK_CTL:
>  		dpu_hw_ctl_destroy(hw);
>  		break;
> @@ -317,9 +313,6 @@ static int _dpu_rm_hw_blk_create(
>  	case DPU_HW_BLK_LM:
>  		hw = dpu_hw_lm_init(id, mmio, cat);
>  		break;
> -	case DPU_HW_BLK_DS:
> -		hw = dpu_hw_ds_init(id, mmio, cat);
> -		break;
>  	case DPU_HW_BLK_CTL:
>  		hw = dpu_hw_ctl_init(id, mmio, cat);
>  		break;
> @@ -427,17 +420,6 @@ int dpu_rm_init(struct dpu_rm *rm,
>  		}
>  	}
>  
> -	if (cat->mdp[0].has_dest_scaler) {
> -		for (i = 0; i < cat->ds_count; i++) {
> -			rc = _dpu_rm_hw_blk_create(rm, cat, mmio, DPU_HW_BLK_DS,
> -					cat->ds[i].id, &cat->ds[i]);
> -			if (rc) {
> -				DPU_ERROR("failed: ds hw not available\n");
> -				goto fail;
> -			}
> -		}
> -	}
> -
>  	for (i = 0; i < cat->pingpong_count; i++) {
>  		rc = _dpu_rm_hw_blk_create(rm, cat, mmio, DPU_HW_BLK_PINGPONG,
>  				cat->pingpong[i].id, &cat->pingpong[i]);
> @@ -516,20 +498,16 @@ static bool _dpu_rm_check_lm_and_get_connected_blks(
>  		struct dpu_rm_rsvp *rsvp,
>  		struct dpu_rm_requirements *reqs,
>  		struct dpu_rm_hw_blk *lm,
> -		struct dpu_rm_hw_blk **ds,
>  		struct dpu_rm_hw_blk **pp,
>  		struct dpu_rm_hw_blk *primary_lm)
>  {
>  	const struct dpu_lm_cfg *lm_cfg = to_dpu_hw_mixer(lm->hw)->cap;
>  	struct dpu_rm_hw_iter iter;
> -	bool is_valid_ds;
>  
> -	*ds = NULL;
>  	*pp = NULL;
>  
> -	DPU_DEBUG("check lm %d ds %d pp %d\n",
> -			   lm_cfg->id,
> -			   lm_cfg->ds, lm_cfg->pingpong);
> +	DPU_DEBUG("check lm %d pp %d\n",
> +			   lm_cfg->id, lm_cfg->pingpong);
>  
>  	/* Check if this layer mixer is a peer of the proposed primary LM */
>  	if (primary_lm) {
> @@ -543,43 +521,12 @@ static bool _dpu_rm_check_lm_and_get_connected_blks(
>  		}
>  	}
>  
> -	is_valid_ds = (lm_cfg->ds != DS_MAX) ? true : false;
> -
> -	if (RM_RQ_DS(reqs) && !is_valid_ds) {
> -		DPU_DEBUG("fail:lm(%d)req_ds(%d)ds(%d)\n",
> -			lm_cfg->id, (bool)(RM_RQ_DS(reqs)), lm_cfg->ds);
> -
> -		return false;
> -	}
> -
>  	/* Already reserved? */
>  	if (RESERVED_BY_OTHER(lm, rsvp)) {
>  		DPU_DEBUG("lm %d already reserved\n", lm_cfg->id);
>  		return false;
>  	}
>  
> -	if (lm_cfg->ds != DS_MAX) {
> -		dpu_rm_init_hw_iter(&iter, 0, DPU_HW_BLK_DS);
> -		while (_dpu_rm_get_hw_locked(rm, &iter)) {
> -			if (iter.blk->id == lm_cfg->ds) {
> -				*ds = iter.blk;
> -				break;
> -			}
> -		}
> -
> -		if (!*ds) {
> -			DPU_DEBUG("lm %d failed to retrieve ds %d\n", lm->id,
> -					lm_cfg->ds);
> -			return false;
> -		}
> -
> -		if (RESERVED_BY_OTHER(*ds, rsvp)) {
> -			DPU_DEBUG("lm %d ds %d already reserved\n",
> -					lm->id, (*ds)->id);
> -			return false;
> -		}
> -	}
> -
>  	dpu_rm_init_hw_iter(&iter, 0, DPU_HW_BLK_PINGPONG);
>  	while (_dpu_rm_get_hw_locked(rm, &iter)) {
>  		if (iter.blk->id == lm_cfg->pingpong) {
> @@ -596,7 +543,6 @@ static bool _dpu_rm_check_lm_and_get_connected_blks(
>  	if (RESERVED_BY_OTHER(*pp, rsvp)) {
>  		DPU_DEBUG("lm %d pp %d already reserved\n", lm->id,
>  				(*pp)->id);
> -		*ds = NULL;
>  		return false;
>  	}
>  
> @@ -610,7 +556,6 @@ static int _dpu_rm_reserve_lms(
>  
>  {
>  	struct dpu_rm_hw_blk *lm[MAX_BLOCKS];
> -	struct dpu_rm_hw_blk *ds[MAX_BLOCKS];
>  	struct dpu_rm_hw_blk *pp[MAX_BLOCKS];
>  	struct dpu_rm_hw_iter iter_i, iter_j;
>  	int lm_count = 0;
> @@ -626,14 +571,13 @@ static int _dpu_rm_reserve_lms(
>  	while (lm_count != reqs->topology->num_lm &&
>  			_dpu_rm_get_hw_locked(rm, &iter_i)) {
>  		memset(&lm, 0, sizeof(lm));
> -		memset(&ds, 0, sizeof(ds));
>  		memset(&pp, 0, sizeof(pp));
>  
>  		lm_count = 0;
>  		lm[lm_count] = iter_i.blk;
>  
>  		if (!_dpu_rm_check_lm_and_get_connected_blks(
> -				rm, rsvp, reqs, lm[lm_count], &ds[lm_count],
> +				rm, rsvp, reqs, lm[lm_count],
>  				&pp[lm_count], NULL))
>  			continue;
>  
> @@ -649,8 +593,7 @@ static int _dpu_rm_reserve_lms(
>  
>  			if (!_dpu_rm_check_lm_and_get_connected_blks(
>  					rm, rsvp, reqs, iter_j.blk,
> -					&ds[lm_count], &pp[lm_count],
> -					iter_i.blk))
> +					&pp[lm_count], iter_i.blk))
>  				continue;
>  
>  			lm[lm_count] = iter_j.blk;
> @@ -670,11 +613,7 @@ static int _dpu_rm_reserve_lms(
>  		lm[i]->rsvp_nxt = rsvp;
>  		pp[i]->rsvp_nxt = rsvp;
>  
> -		if (ds[i])
> -			ds[i]->rsvp_nxt = rsvp;
> -
> -		DPU_EVT32(lm[i]->type, rsvp->enc_id, lm[i]->id, pp[i]->id,
> -				ds[i] ? ds[i]->id : 0);
> +		DPU_EVT32(lm[i]->type, rsvp->enc_id, lm[i]->id, pp[i]->id);
>  	}
>  
>  	return rc;
> diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
> index 5baff27..8e80b4b 100644
> --- a/drivers/gpu/drm/msm/msm_drv.h
> +++ b/drivers/gpu/drm/msm/msm_drv.h
> @@ -89,25 +89,10 @@ enum msm_mdp_plane_property {
>  
>  enum msm_mdp_crtc_property {
>  	CRTC_PROP_INFO,
> -	CRTC_PROP_DEST_SCALER_LUT_ED,
> -	CRTC_PROP_DEST_SCALER_LUT_CIR,
> -	CRTC_PROP_DEST_SCALER_LUT_SEP,
>  
>  	/* # of blob properties */
>  	CRTC_PROP_BLOBCOUNT,
>  
> -	/* range properties */
> -	CRTC_PROP_DIM_LAYER_V1 = CRTC_PROP_BLOBCOUNT,
> -	CRTC_PROP_CORE_CLK,
> -	CRTC_PROP_CORE_AB,
> -	CRTC_PROP_CORE_IB,
> -	CRTC_PROP_LLCC_AB,
> -	CRTC_PROP_LLCC_IB,
> -	CRTC_PROP_DRAM_AB,
> -	CRTC_PROP_DRAM_IB,
> -	CRTC_PROP_IDLE_TIMEOUT,
> -	CRTC_PROP_DEST_SCALER,
> -
>  	/* total # of properties */
>  	CRTC_PROP_COUNT
>  };
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index 7bc3921..d289503 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -57,7 +57,6 @@  msm-y := \
 	disp/dpu1/dpu_hw_catalog.o \
 	disp/dpu1/dpu_hw_cdm.o \
 	disp/dpu1/dpu_hw_ctl.o \
-	disp/dpu1/dpu_hw_ds.o \
 	disp/dpu1/dpu_hw_interrupts.o \
 	disp/dpu1/dpu_hw_intf.o \
 	disp/dpu1/dpu_hw_lm.o \
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
index 981f77f..c4820de 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
@@ -102,34 +102,6 @@  static void _dpu_core_perf_calc_crtc(struct dpu_kms *kms,
 	dpu_cstate = to_dpu_crtc_state(state);
 	memset(perf, 0, sizeof(struct dpu_core_perf_params));
 
-	perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_MNOC] =
-		dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_AB);
-	perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_MNOC] =
-		dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_IB);
-
-	if (dpu_cstate->bw_split_vote) {
-		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_LLCC_AB);
-		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_LLCC_IB);
-		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_EBI] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_DRAM_AB);
-		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_EBI] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_DRAM_IB);
-	} else {
-		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_AB);
-		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_LLCC] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_IB);
-		perf->bw_ctl[DPU_POWER_HANDLE_DBUS_ID_EBI] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_AB);
-		perf->max_per_pipe_ib[DPU_POWER_HANDLE_DBUS_ID_EBI] =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_IB);
-	}
-
-	perf->core_clk_rate =
-			dpu_crtc_get_property(dpu_cstate, CRTC_PROP_CORE_CLK);
-
 	if (!dpu_cstate->bw_control) {
 		for (i = 0; i < DPU_POWER_HANDLE_DBUS_ID_MAX; i++) {
 			perf->bw_ctl[i] = kms->catalog->perf.max_bw_high *
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index a0b702f..b0a3a30 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -570,18 +570,6 @@  static void _dpu_crtc_deinit_events(struct dpu_crtc *dpu_crtc)
 		return;
 }
 
-/**
- * dpu_crtc_destroy_dest_scaler - free memory allocated for scaler lut
- * @dpu_crtc: Pointer to dpu crtc
- */
-static void _dpu_crtc_destroy_dest_scaler(struct dpu_crtc *dpu_crtc)
-{
-	if (!dpu_crtc)
-		return;
-
-	kfree(dpu_crtc->scl3_lut_cfg);
-}
-
 static void dpu_crtc_destroy(struct drm_crtc *crtc)
 {
 	struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
@@ -594,7 +582,6 @@  static void dpu_crtc_destroy(struct drm_crtc *crtc)
 	if (dpu_crtc->blob_info)
 		drm_property_blob_put(dpu_crtc->blob_info);
 	msm_property_destroy(&dpu_crtc->property_info);
-	_dpu_crtc_destroy_dest_scaler(dpu_crtc);
 
 	_dpu_crtc_deinit_events(dpu_crtc);
 
@@ -679,71 +666,6 @@  static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer,
 		format->alpha_enable, fg_alpha, bg_alpha, blend_op);
 }
 
-static void _dpu_crtc_setup_dim_layer_cfg(struct drm_crtc *crtc,
-		struct dpu_crtc *dpu_crtc, struct dpu_crtc_mixer *mixer,
-		struct dpu_hw_dim_layer *dim_layer)
-{
-	struct dpu_crtc_state *cstate;
-	struct dpu_hw_mixer *lm;
-	struct dpu_hw_dim_layer split_dim_layer;
-	int i;
-
-	if (!dim_layer->rect.w || !dim_layer->rect.h) {
-		DPU_DEBUG("empty dim_layer\n");
-		return;
-	}
-
-	cstate = to_dpu_crtc_state(crtc->state);
-
-	DPU_DEBUG("dim_layer - flags:%d, stage:%d\n",
-			dim_layer->flags, dim_layer->stage);
-
-	split_dim_layer.stage = dim_layer->stage;
-	split_dim_layer.color_fill = dim_layer->color_fill;
-
-	/*
-	 * traverse through the layer mixers attached to crtc and find the
-	 * intersecting dim layer rect in each LM and program accordingly.
-	 */
-	for (i = 0; i < dpu_crtc->num_mixers; i++) {
-		split_dim_layer.flags = dim_layer->flags;
-
-		dpu_kms_rect_intersect(&cstate->lm_bounds[i], &dim_layer->rect,
-					&split_dim_layer.rect);
-		if (dpu_kms_rect_is_null(&split_dim_layer.rect)) {
-			/*
-			 * no extra programming required for non-intersecting
-			 * layer mixers with INCLUSIVE dim layer
-			 */
-			if (split_dim_layer.flags & DPU_DRM_DIM_LAYER_INCLUSIVE)
-				continue;
-
-			/*
-			 * program the other non-intersecting layer mixers with
-			 * INCLUSIVE dim layer of full size for uniformity
-			 * with EXCLUSIVE dim layer config.
-			 */
-			split_dim_layer.flags &= ~DPU_DRM_DIM_LAYER_EXCLUSIVE;
-			split_dim_layer.flags |= DPU_DRM_DIM_LAYER_INCLUSIVE;
-			memcpy(&split_dim_layer.rect, &cstate->lm_bounds[i],
-					sizeof(split_dim_layer.rect));
-
-		} else {
-			split_dim_layer.rect.x =
-					split_dim_layer.rect.x -
-						cstate->lm_bounds[i].x;
-		}
-
-		DPU_DEBUG("split_dim_layer - LM:%d, rect:{%d,%d,%d,%d}}\n",
-			i, split_dim_layer.rect.x, split_dim_layer.rect.y,
-			split_dim_layer.rect.w, split_dim_layer.rect.h);
-
-		lm = mixer[i].hw_lm;
-		mixer[i].mixer_op_mode |= 1 << split_dim_layer.stage;
-		lm->ops.setup_dim_layer(lm, &split_dim_layer);
-	}
-}
-
 static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc)
 {
 	struct dpu_crtc *dpu_crtc;
@@ -787,7 +709,6 @@  static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
 	u32 flush_mask;
 	uint32_t stage_idx, lm_idx;
 	int zpos_cnt[DPU_STAGE_MAX + 1] = { 0 };
-	int i;
 	bool bg_alpha_enable = false;
 
 	if (!dpu_crtc || !mixer) {
@@ -863,13 +784,6 @@  static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
 		}
 	}
 
-	if (lm && lm->ops.setup_dim_layer) {
-		cstate = to_dpu_crtc_state(crtc->state);
-		for (i = 0; i < cstate->num_dim_layers; i++)
-			_dpu_crtc_setup_dim_layer_cfg(crtc, dpu_crtc,
-					mixer, &cstate->dim_layer[i]);
-	}
-
 	 _dpu_crtc_program_lm_output_roi(crtc);
 }
 
@@ -911,11 +825,6 @@  static void _dpu_crtc_blend_setup(struct drm_crtc *crtc)
 		if (mixer[i].hw_ctl->ops.clear_all_blendstages)
 			mixer[i].hw_ctl->ops.clear_all_blendstages(
 					mixer[i].hw_ctl);
-
-		/* clear dim_layer settings */
-		lm = mixer[i].hw_lm;
-		if (lm->ops.clear_dim_layer)
-			lm->ops.clear_dim_layer(lm);
 	}
 
 	/* initialize stage cfg */
@@ -947,163 +856,6 @@  static void _dpu_crtc_blend_setup(struct drm_crtc *crtc)
 }
 
 /**
- * _dpu_crtc_setup_scaler3_lut - Set up scaler lut
- * LUTs are configured only once during boot
- * @dpu_crtc: Pointer to dpu crtc
- * @cstate: Pointer to dpu crtc state
- */
-static int _dpu_crtc_set_dest_scaler_lut(struct dpu_crtc *dpu_crtc,
-		struct dpu_crtc_state *cstate, uint32_t lut_idx)
-{
-	struct dpu_hw_scaler3_lut_cfg *cfg;
-	u32 *lut_data = NULL;
-	size_t len = 0;
-	int ret = 0;
-
-	if (!dpu_crtc || !cstate || !dpu_crtc->scl3_lut_cfg) {
-		DPU_ERROR("invalid args\n");
-		return -EINVAL;
-	}
-
-	if (dpu_crtc->scl3_lut_cfg->is_configured) {
-		DPU_DEBUG("lut already configured\n");
-		return 0;
-	}
-
-	lut_data = msm_property_get_blob(&dpu_crtc->property_info,
-			&cstate->property_state, &len, lut_idx);
-	if (!lut_data || !len) {
-		DPU_ERROR("lut(%d): no data, len(%zu)\n", lut_idx, len);
-		return -ENODATA;
-	}
-
-	cfg = dpu_crtc->scl3_lut_cfg;
-
-	switch (lut_idx) {
-	case CRTC_PROP_DEST_SCALER_LUT_ED:
-		cfg->dir_lut = lut_data;
-		cfg->dir_len = len;
-		break;
-	case CRTC_PROP_DEST_SCALER_LUT_CIR:
-		cfg->cir_lut = lut_data;
-		cfg->cir_len = len;
-		break;
-	case CRTC_PROP_DEST_SCALER_LUT_SEP:
-		cfg->sep_lut = lut_data;
-		cfg->sep_len = len;
-		break;
-	default:
-		ret = -EINVAL;
-		DPU_ERROR("invalid LUT index = %d", lut_idx);
-		break;
-	}
-
-	if (cfg->dir_lut && cfg->cir_lut && cfg->sep_lut)
-		cfg->is_configured = true;
-
-	return ret;
-}
-
-/**
- * _dpu_crtc_dest_scaler_setup - Set up dest scaler block
- * @crtc: Pointer to drm crtc
- */
-static void _dpu_crtc_dest_scaler_setup(struct drm_crtc *crtc)
-{
-	struct dpu_crtc *dpu_crtc;
-	struct dpu_crtc_state *cstate;
-	struct dpu_hw_mixer *hw_lm;
-	struct dpu_hw_ctl *hw_ctl;
-	struct dpu_hw_ds *hw_ds;
-	struct dpu_hw_ds_cfg *cfg;
-	struct dpu_kms *kms;
-	u32 flush_mask = 0, op_mode = 0;
-	u32 lm_idx = 0, num_mixers = 0;
-	int i, count = 0;
-
-	if (!crtc)
-		return;
-
-	dpu_crtc   = to_dpu_crtc(crtc);
-	cstate = to_dpu_crtc_state(crtc->state);
-	kms    = _dpu_crtc_get_kms(crtc);
-	num_mixers = dpu_crtc->num_mixers;
-
-	DPU_DEBUG("crtc%d\n", crtc->base.id);
-
-	if (!cstate->ds_dirty) {
-		DPU_DEBUG("no change in settings, skip commit\n");
-	} else if (!kms || !kms->catalog) {
-		DPU_ERROR("invalid parameters\n");
-	} else if (!kms->catalog->mdp[0].has_dest_scaler) {
-		DPU_DEBUG("dest scaler feature not supported\n");
-	} else if (num_mixers > CRTC_DUAL_MIXERS) {
-		DPU_ERROR("invalid number mixers: %d\n", num_mixers);
-	} else if (!dpu_crtc->scl3_lut_cfg->is_configured) {
-		DPU_DEBUG("no LUT data available\n");
-	} else {
-		count = cstate->num_ds_enabled ? cstate->num_ds : num_mixers;
-
-		for (i = 0; i < count; i++) {
-			cfg = &cstate->ds_cfg[i];
-
-			if (!cfg->flags)
-				continue;
-
-			lm_idx = cfg->ndx;
-			hw_lm  = dpu_crtc->mixers[lm_idx].hw_lm;
-			hw_ctl = dpu_crtc->mixers[lm_idx].hw_ctl;
-			hw_ds  = dpu_crtc->mixers[lm_idx].hw_ds;
-
-			/* Setup op mode - Dual/single */
-			if (cfg->flags & DPU_DRM_DESTSCALER_ENABLE)
-				op_mode |= BIT(hw_ds->idx - DS_0);
-
-			if ((i == count-1) && hw_ds->ops.setup_opmode) {
-				op_mode |= (cstate->num_ds_enabled ==
-					CRTC_DUAL_MIXERS) ?
-					DPU_DS_OP_MODE_DUAL : 0;
-				hw_ds->ops.setup_opmode(hw_ds, op_mode);
-				DPU_EVT32(DRMID(crtc), op_mode);
-			}
-
-			/* Setup scaler */
-			if ((cfg->flags & DPU_DRM_DESTSCALER_SCALE_UPDATE) ||
-				(cfg->flags &
-					DPU_DRM_DESTSCALER_ENHANCER_UPDATE)) {
-				if (hw_ds->ops.setup_scaler)
-					hw_ds->ops.setup_scaler(hw_ds,
-							cfg->scl3_cfg,
-							dpu_crtc->scl3_lut_cfg);
-
-				/**
-				 * Clear the flags as the block doesn't have to
-				 * be programmed in each commit if no updates
-				 */
-				cfg->flags &= ~DPU_DRM_DESTSCALER_SCALE_UPDATE;
-				cfg->flags &=
-					~DPU_DRM_DESTSCALER_ENHANCER_UPDATE;
-			}
-
-			/*
-			 * Dest scaler shares the flush bit of the LM in control
-			 */
-			if (cfg->set_lm_flush && hw_lm && hw_ctl &&
-				hw_ctl->ops.get_bitmask_mixer) {
-				flush_mask = hw_ctl->ops.get_bitmask_mixer(
-						hw_ctl, hw_lm->idx);
-				DPU_DEBUG("Set lm[%d] flush = %d",
-					hw_lm->idx, flush_mask);
-				hw_ctl->ops.update_pending_flush(hw_ctl,
-								flush_mask);
-			}
-			cfg->set_lm_flush = false;
-		}
-		cstate->ds_dirty = false;
-	}
-}
-
-/**
  *  _dpu_crtc_complete_flip - signal pending page_flip events
  * Any pending vblank events are added to the vblank_event_list
  * so that the next vblank interrupt shall signal them.
@@ -1361,448 +1113,6 @@  void dpu_crtc_complete_commit(struct drm_crtc *crtc,
 	DPU_EVT32_VERBOSE(DRMID(crtc));
 }
 
-/* _dpu_crtc_set_idle_timeout - update idle timeout wait duration */
-static void _dpu_crtc_set_idle_timeout(struct drm_crtc *crtc, u64 val)
-{
-	struct drm_encoder *encoder;
-
-	if (!crtc) {
-		DPU_ERROR("invalid crtc\n");
-		return;
-	}
-
-	drm_for_each_encoder(encoder, crtc->dev) {
-		if (encoder->crtc != crtc)
-			continue;
-
-		dpu_encoder_set_idle_timeout(encoder, (u32) val);
-	}
-}
-
-/**
- * _dpu_crtc_set_dim_layer_v1 - copy dim layer settings from userspace
- * @cstate:      Pointer to dpu crtc state
- * @user_ptr:    User ptr for dpu_drm_dim_layer_v1 struct
- */
-static void _dpu_crtc_set_dim_layer_v1(struct dpu_crtc_state *cstate,
-		void __user *usr_ptr)
-{
-	struct dpu_drm_dim_layer_v1 dim_layer_v1;
-	struct dpu_drm_dim_layer_cfg *user_cfg;
-	struct dpu_hw_dim_layer *dim_layer;
-	u32 count, i;
-
-	if (!cstate) {
-		DPU_ERROR("invalid cstate\n");
-		return;
-	}
-	dim_layer = cstate->dim_layer;
-
-	if (!usr_ptr) {
-		DPU_DEBUG("dim_layer data removed\n");
-		return;
-	}
-
-	if (copy_from_user(&dim_layer_v1, usr_ptr, sizeof(dim_layer_v1))) {
-		DPU_ERROR("failed to copy dim_layer data\n");
-		return;
-	}
-
-	count = dim_layer_v1.num_layers;
-	if (count > DPU_MAX_DIM_LAYERS) {
-		DPU_ERROR("invalid number of dim_layers:%d", count);
-		return;
-	}
-
-	/* populate from user space */
-	cstate->num_dim_layers = count;
-	for (i = 0; i < count; i++) {
-		user_cfg = &dim_layer_v1.layer_cfg[i];
-
-		dim_layer[i].flags = user_cfg->flags;
-		dim_layer[i].stage = user_cfg->stage + DPU_STAGE_0;
-
-		dim_layer[i].rect.x = user_cfg->rect.x1;
-		dim_layer[i].rect.y = user_cfg->rect.y1;
-		dim_layer[i].rect.w = user_cfg->rect.x2 - user_cfg->rect.x1;
-		dim_layer[i].rect.h = user_cfg->rect.y2 - user_cfg->rect.y1;
-
-		dim_layer[i].color_fill = (struct dpu_mdss_color) {
-				user_cfg->color_fill.color_0,
-				user_cfg->color_fill.color_1,
-				user_cfg->color_fill.color_2,
-				user_cfg->color_fill.color_3,
-		};
-
-		DPU_DEBUG("dim_layer[%d] - flags:%d, stage:%d\n",
-				i, dim_layer[i].flags, dim_layer[i].stage);
-		DPU_DEBUG(" rect:{%d,%d,%d,%d}, color:{%d,%d,%d,%d}\n",
-				dim_layer[i].rect.x, dim_layer[i].rect.y,
-				dim_layer[i].rect.w, dim_layer[i].rect.h,
-				dim_layer[i].color_fill.color_0,
-				dim_layer[i].color_fill.color_1,
-				dim_layer[i].color_fill.color_2,
-				dim_layer[i].color_fill.color_3);
-	}
-}
-
-/**
- * _dpu_crtc_dest_scaler_init - allocate memory for scaler lut
- * @dpu_crtc    :  Pointer to dpu crtc
- * @catalog :  Pointer to mdss catalog info
- */
-static void _dpu_crtc_dest_scaler_init(struct dpu_crtc *dpu_crtc,
-				struct dpu_mdss_cfg *catalog)
-{
-	if (!dpu_crtc || !catalog)
-		return;
-
-	if (!catalog->mdp[0].has_dest_scaler) {
-		DPU_DEBUG("dest scaler feature not supported\n");
-		return;
-	}
-
-	dpu_crtc->scl3_lut_cfg = kzalloc(sizeof(struct dpu_hw_scaler3_lut_cfg),
-				GFP_KERNEL);
-	if (!dpu_crtc->scl3_lut_cfg)
-		DPU_ERROR("failed to create scale LUT for dest scaler");
-}
-
-/**
- * _dpu_crtc_set_dest_scaler - copy dest scaler settings from userspace
- * @dpu_crtc   :  Pointer to dpu crtc
- * @cstate :  Pointer to dpu crtc state
- * @usr_ptr:  User ptr for dpu_drm_dest_scaler_data struct
- */
-static int _dpu_crtc_set_dest_scaler(struct dpu_crtc *dpu_crtc,
-				struct dpu_crtc_state *cstate,
-				void __user *usr_ptr)
-{
-	struct dpu_drm_dest_scaler_data ds_data;
-	struct dpu_drm_dest_scaler_cfg *ds_cfg_usr;
-	struct dpu_drm_scaler_v2 scaler_v2;
-	void __user *scaler_v2_usr;
-	int i, count, ret = 0;
-
-	if (!dpu_crtc || !cstate) {
-		DPU_ERROR("invalid dpu_crtc/state\n");
-		return -EINVAL;
-	}
-
-	DPU_DEBUG("crtc %s\n", dpu_crtc->name);
-
-	cstate->num_ds = 0;
-	cstate->ds_dirty = false;
-	if (!usr_ptr) {
-		DPU_DEBUG("ds data removed\n");
-		return 0;
-	}
-
-	if (copy_from_user(&ds_data, usr_ptr, sizeof(ds_data))) {
-		DPU_ERROR("failed to copy dest scaler data from user\n");
-		return -EINVAL;
-	}
-
-	count = ds_data.num_dest_scaler;
-	if (!dpu_crtc->num_mixers || count > dpu_crtc->num_mixers ||
-		(count && (count != dpu_crtc->num_mixers) &&
-		!(ds_data.ds_cfg[0].flags & DPU_DRM_DESTSCALER_PU_ENABLE))) {
-		DPU_ERROR("invalid config:num ds(%d), mixers(%d),flags(%d)\n",
-			count, dpu_crtc->num_mixers, ds_data.ds_cfg[0].flags);
-		return -EINVAL;
-	}
-
-	/* Populate from user space */
-	for (i = 0; i < count; i++) {
-		ds_cfg_usr = &ds_data.ds_cfg[i];
-
-		cstate->ds_cfg[i].ndx = ds_cfg_usr->index;
-		cstate->ds_cfg[i].flags = ds_cfg_usr->flags;
-		cstate->ds_cfg[i].lm_width = ds_cfg_usr->lm_width;
-		cstate->ds_cfg[i].lm_height = ds_cfg_usr->lm_height;
-		cstate->ds_cfg[i].scl3_cfg = NULL;
-
-		if (ds_cfg_usr->scaler_cfg) {
-			scaler_v2_usr =
-			(void __user *)((uintptr_t)ds_cfg_usr->scaler_cfg);
-
-			memset(&scaler_v2, 0, sizeof(scaler_v2));
-
-			cstate->ds_cfg[i].scl3_cfg =
-				kzalloc(sizeof(struct dpu_hw_scaler3_cfg),
-					GFP_KERNEL);
-
-			if (!cstate->ds_cfg[i].scl3_cfg) {
-				ret = -ENOMEM;
-				goto err;
-			}
-
-			if (copy_from_user(&scaler_v2, scaler_v2_usr,
-					sizeof(scaler_v2))) {
-				DPU_ERROR("scale data:copy from user failed\n");
-				ret = -EINVAL;
-				goto err;
-			}
-
-			dpu_set_scaler_v2(cstate->ds_cfg[i].scl3_cfg,
-					&scaler_v2);
-
-			DPU_DEBUG("en(%d)dir(%d)de(%d) src(%dx%d) dst(%dx%d)\n",
-				scaler_v2.enable, scaler_v2.dir_en,
-				scaler_v2.de.enable, scaler_v2.src_width[0],
-				scaler_v2.src_height[0], scaler_v2.dst_width,
-				scaler_v2.dst_height);
-			DPU_EVT32_VERBOSE(DRMID(&dpu_crtc->base),
-				scaler_v2.enable, scaler_v2.dir_en,
-				scaler_v2.de.enable, scaler_v2.src_width[0],
-				scaler_v2.src_height[0], scaler_v2.dst_width,
-				scaler_v2.dst_height);
-		}
-
-		DPU_DEBUG("ds cfg[%d]-ndx(%d) flags(%d) lm(%dx%d)\n",
-			i, ds_cfg_usr->index, ds_cfg_usr->flags,
-			ds_cfg_usr->lm_width, ds_cfg_usr->lm_height);
-		DPU_EVT32_VERBOSE(DRMID(&dpu_crtc->base), i, ds_cfg_usr->index,
-			ds_cfg_usr->flags, ds_cfg_usr->lm_width,
-			ds_cfg_usr->lm_height);
-	}
-
-	cstate->num_ds = count;
-	cstate->ds_dirty = true;
-	return 0;
-
-err:
-	for (; i >= 0; i--)
-		kfree(cstate->ds_cfg[i].scl3_cfg);
-
-	return ret;
-}
-
-/**
- * _dpu_crtc_check_dest_scaler_data - validate the dest scaler data
- * @crtc  :  Pointer to drm crtc
- * @state :  Pointer to drm crtc state
- */
-static int _dpu_crtc_check_dest_scaler_data(struct drm_crtc *crtc,
-				struct drm_crtc_state *state)
-{
-	struct dpu_crtc *dpu_crtc;
-	struct dpu_crtc_state *cstate;
-	struct drm_display_mode *mode;
-	struct dpu_kms *kms;
-	struct dpu_hw_ds *hw_ds;
-	struct dpu_hw_ds_cfg *cfg;
-	u32 i, ret = 0, lm_idx;
-	u32 num_ds_enable = 0;
-	u32 max_in_width = 0, max_out_width = 0;
-	u32 prev_lm_width = 0, prev_lm_height = 0;
-
-	if (!crtc || !state)
-		return -EINVAL;
-
-	dpu_crtc = to_dpu_crtc(crtc);
-	cstate = to_dpu_crtc_state(state);
-	kms = _dpu_crtc_get_kms(crtc);
-	mode = &state->adjusted_mode;
-
-	DPU_DEBUG("crtc%d\n", crtc->base.id);
-
-	if (!cstate->ds_dirty && !cstate->num_ds_enabled) {
-		DPU_DEBUG("dest scaler property not set, skip validation\n");
-		return 0;
-	}
-
-	if (!kms || !kms->catalog) {
-		DPU_ERROR("invalid parameters\n");
-		return -EINVAL;
-	}
-
-	if (!kms->catalog->mdp[0].has_dest_scaler) {
-		DPU_DEBUG("dest scaler feature not supported\n");
-		return 0;
-	}
-
-	if (!dpu_crtc->num_mixers) {
-		DPU_ERROR("mixers not allocated\n");
-		return -EINVAL;
-	}
-
-	/**
-	 * Check if sufficient hw resources are
-	 * available as per target caps & topology
-	 */
-	if (dpu_crtc->num_mixers > CRTC_DUAL_MIXERS) {
-		DPU_ERROR("invalid config: mixers(%d) max(%d)\n",
-			dpu_crtc->num_mixers, CRTC_DUAL_MIXERS);
-		ret = -EINVAL;
-		goto err;
-	}
-
-	for (i = 0; i < dpu_crtc->num_mixers; i++) {
-		if (!dpu_crtc->mixers[i].hw_lm || !dpu_crtc->mixers[i].hw_ds) {
-			DPU_ERROR("insufficient HW resources allocated\n");
-			ret = -EINVAL;
-			goto err;
-		}
-	}
-
-	/**
-	 * Check if DS needs to be enabled or disabled
-	 * In case of enable, validate the data
-	 */
-	if (!cstate->ds_dirty || !cstate->num_ds ||
-		!(cstate->ds_cfg[0].flags & DPU_DRM_DESTSCALER_ENABLE)) {
-		DPU_DEBUG("disable dest scaler,dirty(%d)num(%d)flags(%d)\n",
-			cstate->ds_dirty, cstate->num_ds,
-			cstate->ds_cfg[0].flags);
-		goto disable;
-	}
-
-	/**
-	 * No of dest scalers shouldn't exceed hw ds block count and
-	 * also, match the num of mixers unless it is partial update
-	 * left only/right only use case - currently PU + DS is not supported
-	 */
-	if (cstate->num_ds > kms->catalog->ds_count ||
-		((cstate->num_ds != dpu_crtc->num_mixers) &&
-		!(cstate->ds_cfg[0].flags & DPU_DRM_DESTSCALER_PU_ENABLE))) {
-		DPU_ERROR("invalid cfg: num_ds(%d), hw_ds_cnt(%d) flags(%d)\n",
-			cstate->num_ds, kms->catalog->ds_count,
-			cstate->ds_cfg[0].flags);
-		ret = -EINVAL;
-		goto err;
-	}
-
-	/* Validate the DS data */
-	for (i = 0; i < cstate->num_ds; i++) {
-		cfg = &cstate->ds_cfg[i];
-		lm_idx = cfg->ndx;
-
-		/**
-		 * Validate against topology
-		 * No of dest scalers should match the num of mixers
-		 * unless it is partial update left only/right only use case
-		 */
-		if (lm_idx >= dpu_crtc->num_mixers || (i != lm_idx &&
-			!(cfg->flags & DPU_DRM_DESTSCALER_PU_ENABLE))) {
-			DPU_ERROR("invalid user data(%d):idx(%d), flags(%d)\n",
-				i, lm_idx, cfg->flags);
-			ret = -EINVAL;
-			goto err;
-		}
-
-		hw_ds = dpu_crtc->mixers[lm_idx].hw_ds;
-
-		if (!max_in_width && !max_out_width) {
-			max_in_width = hw_ds->scl->top->maxinputwidth;
-			max_out_width = hw_ds->scl->top->maxoutputwidth;
-
-			if (cstate->num_ds == CRTC_DUAL_MIXERS)
-				max_in_width -= DPU_DS_OVERFETCH_SIZE;
-
-			DPU_DEBUG("max DS width [%d,%d] for num_ds = %d\n",
-				max_in_width, max_out_width, cstate->num_ds);
-		}
-
-		/* Check LM width and height */
-		if (cfg->lm_width > (mode->hdisplay/dpu_crtc->num_mixers) ||
-			cfg->lm_height > mode->vdisplay ||
-			!cfg->lm_width || !cfg->lm_height) {
-			DPU_ERROR("invalid lm size[%d,%d] display [%d,%d]\n",
-				cfg->lm_width,
-				cfg->lm_height,
-				mode->hdisplay/dpu_crtc->num_mixers,
-				mode->vdisplay);
-			ret = -E2BIG;
-			goto err;
-		}
-
-		if (!prev_lm_width && !prev_lm_height) {
-			prev_lm_width = cfg->lm_width;
-			prev_lm_height = cfg->lm_height;
-		} else {
-			if (cfg->lm_width != prev_lm_width ||
-				cfg->lm_height != prev_lm_height) {
-				DPU_ERROR("lm size:left[%d,%d], right[%d %d]\n",
-					cfg->lm_width, cfg->lm_height,
-					prev_lm_width, prev_lm_height);
-				ret = -EINVAL;
-				goto err;
-			}
-		}
-
-		/* Check scaler data */
-		if (cfg->flags & DPU_DRM_DESTSCALER_SCALE_UPDATE ||
-			cfg->flags & DPU_DRM_DESTSCALER_ENHANCER_UPDATE) {
-			if (!cfg->scl3_cfg) {
-				ret = -EINVAL;
-				DPU_ERROR("null scale data\n");
-				goto err;
-			}
-			if (cfg->scl3_cfg->src_width[0] > max_in_width ||
-				cfg->scl3_cfg->dst_width > max_out_width ||
-				!cfg->scl3_cfg->src_width[0] ||
-				!cfg->scl3_cfg->dst_width) {
-				DPU_ERROR("scale width(%d %d) for ds-%d:\n",
-					cfg->scl3_cfg->src_width[0],
-					cfg->scl3_cfg->dst_width,
-					hw_ds->idx - DS_0);
-				DPU_ERROR("scale_en = %d, DE_en =%d\n",
-					cfg->scl3_cfg->enable,
-					cfg->scl3_cfg->de.enable);
-
-				cfg->flags &=
-					~DPU_DRM_DESTSCALER_SCALE_UPDATE;
-				cfg->flags &=
-					~DPU_DRM_DESTSCALER_ENHANCER_UPDATE;
-
-				ret = -EINVAL;
-				goto err;
-			}
-		}
-
-		if (cfg->flags & DPU_DRM_DESTSCALER_ENABLE)
-			num_ds_enable++;
-
-		/**
-		 * Validation successful, indicator for flush to be issued
-		 */
-		cfg->set_lm_flush = true;
-
-		DPU_DEBUG("ds[%d]: flags = 0x%X\n",
-			hw_ds->idx - DS_0, cfg->flags);
-	}
-
-disable:
-	DPU_DEBUG("dest scaler enable status, old = %d, new = %d",
-		cstate->num_ds_enabled, num_ds_enable);
-	DPU_EVT32(DRMID(crtc), cstate->num_ds_enabled, num_ds_enable,
-		cstate->ds_dirty);
-
-	if (cstate->num_ds_enabled != num_ds_enable) {
-		/* Disabling destination scaler */
-		if (!num_ds_enable) {
-			for (i = 0; i < dpu_crtc->num_mixers; i++) {
-				cfg = &cstate->ds_cfg[i];
-				cfg->ndx = i;
-				/* Update scaler settings in disable case */
-				cfg->flags = DPU_DRM_DESTSCALER_SCALE_UPDATE;
-				cfg->scl3_cfg->enable = 0;
-				cfg->scl3_cfg->de.enable = 0;
-				cfg->set_lm_flush = true;
-			}
-		}
-		cstate->num_ds_enabled = num_ds_enable;
-		cstate->ds_dirty = true;
-	}
-
-	return 0;
-
-err:
-	cstate->ds_dirty = false;
-	return ret;
-}
-
 static void _dpu_crtc_setup_mixer_for_encoder(
 		struct drm_crtc *crtc,
 		struct drm_encoder *enc)
@@ -1813,11 +1123,10 @@  static void _dpu_crtc_setup_mixer_for_encoder(
 	struct dpu_crtc_mixer *mixer;
 	struct dpu_hw_ctl *last_valid_ctl = NULL;
 	int i;
-	struct dpu_rm_hw_iter lm_iter, ctl_iter, ds_iter;
+	struct dpu_rm_hw_iter lm_iter, ctl_iter;
 
 	dpu_rm_init_hw_iter(&lm_iter, enc->base.id, DPU_HW_BLK_LM);
 	dpu_rm_init_hw_iter(&ctl_iter, enc->base.id, DPU_HW_BLK_CTL);
-	dpu_rm_init_hw_iter(&ds_iter, enc->base.id, DPU_HW_BLK_DS);
 
 	/* Set up all the mixers and ctls reserved by this encoder */
 	for (i = dpu_crtc->num_mixers; i < ARRAY_SIZE(dpu_crtc->mixers); i++) {
@@ -1844,10 +1153,6 @@  static void _dpu_crtc_setup_mixer_for_encoder(
 			return;
 		}
 
-		/* DS may be null */
-		(void) dpu_rm_get_hw(rm, &ds_iter);
-		mixer->hw_ds = (struct dpu_hw_ds *)ds_iter.hw;
-
 		mixer->encoder = enc;
 
 		dpu_crtc->num_mixers++;
@@ -1855,9 +1160,6 @@  static void _dpu_crtc_setup_mixer_for_encoder(
 				i, mixer->hw_lm->idx - LM_0);
 		DPU_DEBUG("setup mixer %d: ctl %d\n",
 				i, mixer->hw_ctl->idx - CTL_0);
-		if (mixer->hw_ds)
-			DPU_DEBUG("setup mixer %d: ds %d\n",
-				i, mixer->hw_ds->idx - DS_0);
 	}
 }
 
@@ -1973,7 +1275,6 @@  static void dpu_crtc_atomic_begin(struct drm_crtc *crtc,
 		return;
 
 	_dpu_crtc_blend_setup(crtc);
-	_dpu_crtc_dest_scaler_setup(crtc);
 
 	/*
 	 * PP_DONE irq is only used by command mode for now.
@@ -2672,13 +1973,6 @@  static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
 
 	memset(pipe_staged, 0, sizeof(pipe_staged));
 
-	rc = _dpu_crtc_check_dest_scaler_data(crtc, state);
-	if (rc) {
-		DPU_ERROR("crtc%d failed dest scaler check %d\n",
-			crtc->base.id, rc);
-		goto end;
-	}
-
 	mixer_width = dpu_crtc_get_mixer_width(dpu_crtc, cstate, mode);
 
 	_dpu_crtc_setup_lm_bounds(crtc, state);
@@ -2699,19 +1993,6 @@  static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
 		pstates[cnt].stage = pstate->normalized_zpos;
 		pstates[cnt].pipe_id = dpu_plane_pipe(plane);
 
-		/* check dim layer stage with every plane */
-		for (i = 0; i < cstate->num_dim_layers; i++) {
-			if (cstate->dim_layer[i].stage
-					== (pstates[cnt].stage + DPU_STAGE_0)) {
-				DPU_ERROR(
-					"plane:%d/dim_layer:%i-same stage:%d\n",
-					plane->base.id, i,
-					cstate->dim_layer[i].stage);
-				rc = -EINVAL;
-				goto end;
-			}
-		}
-
 		if (pipe_staged[pstates[cnt].pipe_id]) {
 			multirect_plane[multirect_count].r0 =
 				pipe_staged[pstates[cnt].pipe_id];
@@ -2947,52 +2228,11 @@  static void dpu_crtc_install_properties(struct drm_crtc *crtc,
 		return;
 	}
 
-	/* range properties */
-	msm_property_install_range(&dpu_crtc->property_info,
-			"core_clk", 0x0, 0, U64_MAX,
-			dpu_kms->perf.max_core_clk_rate,
-			CRTC_PROP_CORE_CLK);
-	msm_property_install_range(&dpu_crtc->property_info,
-			"core_ab", 0x0, 0, U64_MAX,
-			catalog->perf.max_bw_high * 1000ULL,
-			CRTC_PROP_CORE_AB);
-	msm_property_install_range(&dpu_crtc->property_info,
-			"core_ib", 0x0, 0, U64_MAX,
-			catalog->perf.max_bw_high * 1000ULL,
-			CRTC_PROP_CORE_IB);
-	msm_property_install_range(&dpu_crtc->property_info,
-			"llcc_ab", 0x0, 0, U64_MAX,
-			catalog->perf.max_bw_high * 1000ULL,
-			CRTC_PROP_LLCC_AB);
-	msm_property_install_range(&dpu_crtc->property_info,
-			"llcc_ib", 0x0, 0, U64_MAX,
-			catalog->perf.max_bw_high * 1000ULL,
-			CRTC_PROP_LLCC_IB);
-	msm_property_install_range(&dpu_crtc->property_info,
-			"dram_ab", 0x0, 0, U64_MAX,
-			catalog->perf.max_bw_high * 1000ULL,
-			CRTC_PROP_DRAM_AB);
-	msm_property_install_range(&dpu_crtc->property_info,
-			"dram_ib", 0x0, 0, U64_MAX,
-			catalog->perf.max_bw_high * 1000ULL,
-			CRTC_PROP_DRAM_IB);
-
-	msm_property_install_range(&dpu_crtc->property_info,
-		"idle_timeout", IDLE_TIMEOUT, 0, U64_MAX, 0,
-		CRTC_PROP_IDLE_TIMEOUT);
-
 	msm_property_install_blob(&dpu_crtc->property_info, "capabilities",
 		DRM_MODE_PROP_IMMUTABLE, CRTC_PROP_INFO);
 
 	dpu_kms_info_reset(info);
 
-	if (catalog->caps->has_dim_layer) {
-		msm_property_install_volatile_range(&dpu_crtc->property_info,
-			"dim_layer_v1", 0x0, 0, ~0, 0, CRTC_PROP_DIM_LAYER_V1);
-		dpu_kms_info_add_keyint(info, "dim_layer_v1_max_layers",
-				DPU_MAX_DIM_LAYERS);
-	}
-
 	dpu_kms_info_add_keyint(info, "hw_version", catalog->hwversion);
 	dpu_kms_info_add_keyint(info, "max_linewidth",
 			catalog->caps->max_mixer_width);
@@ -3012,39 +2252,6 @@  static void dpu_crtc_install_properties(struct drm_crtc *crtc,
 					"smart_dma_rev", "smart_dma_v2");
 	}
 
-	if (catalog->mdp[0].has_dest_scaler) {
-		dpu_kms_info_add_keyint(info, "has_dest_scaler",
-				catalog->mdp[0].has_dest_scaler);
-		dpu_kms_info_add_keyint(info, "dest_scaler_count",
-					catalog->ds_count);
-
-		if (catalog->ds[0].top) {
-			dpu_kms_info_add_keyint(info,
-					"max_dest_scaler_input_width",
-					catalog->ds[0].top->maxinputwidth);
-			dpu_kms_info_add_keyint(info,
-					"max_dest_scaler_output_width",
-					catalog->ds[0].top->maxinputwidth);
-			dpu_kms_info_add_keyint(info, "max_dest_scale_up",
-					catalog->ds[0].top->maxupscale);
-		}
-
-		if (catalog->ds[0].features & BIT(DPU_SSPP_SCALER_QSEED3)) {
-			msm_property_install_volatile_range(
-					&dpu_crtc->property_info, "dest_scaler",
-					0x0, 0, ~0, 0, CRTC_PROP_DEST_SCALER);
-			msm_property_install_blob(&dpu_crtc->property_info,
-					"ds_lut_ed", 0,
-					CRTC_PROP_DEST_SCALER_LUT_ED);
-			msm_property_install_blob(&dpu_crtc->property_info,
-					"ds_lut_cir", 0,
-					CRTC_PROP_DEST_SCALER_LUT_CIR);
-			msm_property_install_blob(&dpu_crtc->property_info,
-					"ds_lut_sep", 0,
-					CRTC_PROP_DEST_SCALER_LUT_SEP);
-		}
-	}
-
 	dpu_kms_info_add_keyint(info, "has_src_split",
 				catalog->caps->has_src_split);
 	if (catalog->perf.max_bw_low)
@@ -3113,7 +2320,7 @@  static int dpu_crtc_atomic_set_property(struct drm_crtc *crtc,
 {
 	struct dpu_crtc *dpu_crtc;
 	struct dpu_crtc_state *cstate;
-	int idx, ret = -EINVAL;
+	int ret = -EINVAL;
 
 	if (!crtc || !state || !property) {
 		DPU_ERROR("invalid argument(s)\n");
@@ -3122,45 +2329,8 @@  static int dpu_crtc_atomic_set_property(struct drm_crtc *crtc,
 		cstate = to_dpu_crtc_state(state);
 		ret = msm_property_atomic_set(&dpu_crtc->property_info,
 				&cstate->property_state, property, val);
-		if (!ret) {
-			idx = msm_property_index(&dpu_crtc->property_info,
-					property);
-			switch (idx) {
-			case CRTC_PROP_DIM_LAYER_V1:
-				_dpu_crtc_set_dim_layer_v1(cstate,
-							u64_to_user_ptr(val));
-				break;
-			case CRTC_PROP_DEST_SCALER:
-				ret = _dpu_crtc_set_dest_scaler(dpu_crtc,
-						cstate, u64_to_user_ptr(val));
-				break;
-			case CRTC_PROP_DEST_SCALER_LUT_ED:
-			case CRTC_PROP_DEST_SCALER_LUT_CIR:
-			case CRTC_PROP_DEST_SCALER_LUT_SEP:
-				ret = _dpu_crtc_set_dest_scaler_lut(dpu_crtc,
-								cstate, idx);
-				break;
-			case CRTC_PROP_CORE_CLK:
-			case CRTC_PROP_CORE_AB:
-			case CRTC_PROP_CORE_IB:
-				cstate->bw_control = true;
-				break;
-			case CRTC_PROP_LLCC_AB:
-			case CRTC_PROP_LLCC_IB:
-			case CRTC_PROP_DRAM_AB:
-			case CRTC_PROP_DRAM_IB:
-				cstate->bw_control = true;
-				cstate->bw_split_vote = true;
-				break;
-			case CRTC_PROP_IDLE_TIMEOUT:
-				_dpu_crtc_set_idle_timeout(crtc, val);
-			default:
-				/* nothing to do */
-				break;
-			}
-		} else {
+		if (ret)
 			DRM_ERROR("failed to set the property\n");
-		}
 
 		DPU_DEBUG("crtc%d %s[%d] <= 0x%llx ret=%d\n", crtc->base.id,
 				property->name, property->base.id, val, ret);
@@ -3276,23 +2446,6 @@  static int _dpu_debugfs_status_show(struct seq_file *s, void *data)
 
 	seq_puts(s, "\n");
 
-	for (i = 0; i < cstate->num_dim_layers; i++) {
-		struct dpu_hw_dim_layer *dim_layer = &cstate->dim_layer[i];
-
-		seq_printf(s, "\tdim_layer:%d] stage:%d flags:%d\n",
-				i, dim_layer->stage, dim_layer->flags);
-		seq_printf(s, "\tdst_x:%d dst_y:%d dst_w:%d dst_h:%d\n",
-				dim_layer->rect.x, dim_layer->rect.y,
-				dim_layer->rect.w, dim_layer->rect.h);
-		seq_printf(s,
-			"\tcolor_0:%d color_1:%d color_2:%d color_3:%d\n",
-				dim_layer->color_fill.color_0,
-				dim_layer->color_fill.color_1,
-				dim_layer->color_fill.color_2,
-				dim_layer->color_fill.color_3);
-		seq_puts(s, "\n");
-	}
-
 	drm_atomic_crtc_for_each_plane(plane, crtc) {
 		pstate = to_dpu_plane_state(plane->state);
 		state = plane->state;
@@ -3779,9 +2932,6 @@  struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct drm_plane *plane)
 
 	dpu_crtc_install_properties(crtc, kms->catalog);
 
-	/* Init dest scaler */
-	_dpu_crtc_dest_scaler_init(dpu_crtc, kms->catalog);
-
 	DPU_DEBUG("%s: successfully initialized crtc\n", dpu_crtc->name);
 	return crtc;
 }
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
index 5f380b8..6628eb3 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
@@ -26,7 +26,6 @@ 
 #include "dpu_kms.h"
 #include "dpu_core_perf.h"
 #include "dpu_hw_blk.h"
-#include "dpu_hw_ds.h"
 
 #define DPU_CRTC_NAME_SIZE	12
 
@@ -87,7 +86,6 @@  struct dpu_crtc_smmu_state_data {
  * struct dpu_crtc_mixer: stores the map for each virtual pipeline in the CRTC
  * @hw_lm:	LM HW Driver context
  * @hw_ctl:	CTL Path HW driver context
- * @hw_ds:	DS HW driver context
  * @encoder:	Encoder attached to this lm & ctl
  * @mixer_op_mode:	mixer blending operation mode
  * @flush_mask:	mixer flush mask for ctl, mixer and pipe
@@ -95,7 +93,6 @@  struct dpu_crtc_smmu_state_data {
 struct dpu_crtc_mixer {
 	struct dpu_hw_mixer *hw_lm;
 	struct dpu_hw_ctl *hw_ctl;
-	struct dpu_hw_ds *hw_ds;
 	struct drm_encoder *encoder;
 	u32 mixer_op_mode;
 	u32 flush_mask;
@@ -314,12 +311,6 @@  struct dpu_crtc_respool {
  * @property_state: Local storage for msm_prop properties
  * @property_values: Current crtc property values
  * @input_fence_timeout_ns : Cached input fence timeout, in ns
- * @num_dim_layers: Number of dim layers
- * @dim_layer: Dim layer configs
- * @num_ds: Number of destination scalers to be configured
- * @num_ds_enabled: Number of destination scalers enabled
- * @ds_dirty: Boolean to indicate if dirty or not
- * @ds_cfg: Destination scaler config
  * @new_perf: new performance state being requested
  */
 struct dpu_crtc_state {
@@ -336,12 +327,6 @@  struct dpu_crtc_state {
 	struct msm_property_state property_state;
 	struct msm_property_value property_values[CRTC_PROP_COUNT];
 	uint64_t input_fence_timeout_ns;
-	uint32_t num_dim_layers;
-	struct dpu_hw_dim_layer dim_layer[DPU_MAX_DIM_LAYERS];
-	uint32_t num_ds;
-	uint32_t num_ds_enabled;
-	bool ds_dirty;
-	struct dpu_hw_ds_cfg ds_cfg[DPU_MAX_DS_COUNT];
 
 	struct dpu_core_perf_params new_perf;
 	struct dpu_crtc_respool rp;
@@ -362,7 +347,6 @@  struct dpu_crtc_state {
 /**
  * dpu_crtc_get_mixer_width - get the mixer width
  * Mixer width will be same as panel width(/2 for split)
- * unless destination scaler feature is enabled
  */
 static inline int dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
 	struct dpu_crtc_state *cstate, struct drm_display_mode *mode)
@@ -372,10 +356,7 @@  static inline int dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
 	if (!dpu_crtc || !cstate || !mode)
 		return 0;
 
-	if (cstate->num_ds_enabled)
-		mixer_width = cstate->ds_cfg[0].lm_width;
-	else
-		mixer_width = (dpu_crtc->num_mixers == CRTC_DUAL_MIXERS ?
+	mixer_width = (dpu_crtc->num_mixers == CRTC_DUAL_MIXERS ?
 			mode->hdisplay / CRTC_DUAL_MIXERS : mode->hdisplay);
 
 	return mixer_width;
@@ -383,8 +364,7 @@  static inline int dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
 
 /**
  * dpu_crtc_get_mixer_height - get the mixer height
- * Mixer height will be same as panel height unless
- * destination scaler feature is enabled
+ * Mixer height will be same as panel height
  */
 static inline int dpu_crtc_get_mixer_height(struct dpu_crtc *dpu_crtc,
 		struct dpu_crtc_state *cstate, struct drm_display_mode *mode)
@@ -392,8 +372,7 @@  static inline int dpu_crtc_get_mixer_height(struct dpu_crtc *dpu_crtc,
 	if (!dpu_crtc || !cstate || !mode)
 		return 0;
 
-	return (cstate->num_ds_enabled ?
-			cstate->ds_cfg[0].lm_height : mode->vdisplay);
+	return mode->vdisplay;
 }
 
 /**
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 77d3571..62660e0 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -230,18 +230,6 @@  struct dpu_encoder_virt {
 };
 
 #define to_dpu_encoder_virt(x) container_of(x, struct dpu_encoder_virt, base)
-
-void dpu_encoder_set_idle_timeout(struct drm_encoder *drm_enc, u32 idle_timeout)
-{
-	struct dpu_encoder_virt *dpu_enc;
-
-	if (!drm_enc)
-		return;
-
-	dpu_enc = to_dpu_encoder_virt(drm_enc);
-	dpu_enc->idle_timeout = idle_timeout;
-}
-
 static inline int _dpu_encoder_power_enable(struct dpu_encoder_virt *dpu_enc,
 								bool enable)
 {
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c
deleted file mode 100644
index fad19fb..0000000
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.c
+++ /dev/null
@@ -1,149 +0,0 @@ 
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#include "dpu_hw_ds.h"
-#include "dpu_formats.h"
-#include "dpu_dbg.h"
-#include "dpu_kms.h"
-
-/* Destination scaler TOP registers */
-#define DEST_SCALER_OP_MODE     0x00
-#define DEST_SCALER_HW_VERSION  0x10
-
-static void dpu_hw_ds_setup_opmode(struct dpu_hw_ds *hw_ds,
-				u32 op_mode)
-{
-	struct dpu_hw_blk_reg_map *hw = &hw_ds->hw;
-
-	DPU_REG_WRITE(hw, DEST_SCALER_OP_MODE, op_mode);
-}
-
-static void dpu_hw_ds_setup_scaler3(struct dpu_hw_ds *hw_ds,
-			void *scaler_cfg, void *scaler_lut_cfg)
-{
-	struct dpu_hw_scaler3_cfg *scl3_cfg = scaler_cfg;
-	struct dpu_hw_scaler3_lut_cfg *scl3_lut_cfg = scaler_lut_cfg;
-
-	if (!hw_ds || !hw_ds->scl || !scl3_cfg || !scl3_lut_cfg)
-		return;
-
-	/*
-	 * copy LUT values to scaler structure
-	 */
-	if (scl3_lut_cfg->is_configured) {
-		scl3_cfg->dir_lut = scl3_lut_cfg->dir_lut;
-		scl3_cfg->dir_len = scl3_lut_cfg->dir_len;
-		scl3_cfg->cir_lut = scl3_lut_cfg->cir_lut;
-		scl3_cfg->cir_len = scl3_lut_cfg->cir_len;
-		scl3_cfg->sep_lut = scl3_lut_cfg->sep_lut;
-		scl3_cfg->sep_len = scl3_lut_cfg->sep_len;
-	}
-
-	dpu_hw_setup_scaler3(&hw_ds->hw, scl3_cfg,
-			 hw_ds->scl->base,
-			 hw_ds->scl->version,
-			 dpu_get_dpu_format(DRM_FORMAT_XBGR2101010));
-}
-
-static void _setup_ds_ops(struct dpu_hw_ds_ops *ops, unsigned long features)
-{
-	ops->setup_opmode = dpu_hw_ds_setup_opmode;
-
-	if (test_bit(DPU_SSPP_SCALER_QSEED3, &features))
-		ops->setup_scaler = dpu_hw_ds_setup_scaler3;
-}
-
-static struct dpu_ds_cfg *_ds_offset(enum dpu_ds ds,
-		struct dpu_mdss_cfg *m,
-		void __iomem *addr,
-		struct dpu_hw_blk_reg_map *b)
-{
-	int i;
-
-	if (!m || !addr || !b)
-		return ERR_PTR(-EINVAL);
-
-	for (i = 0; i < m->ds_count; i++) {
-		if ((ds == m->ds[i].id) &&
-			 (m->ds[i].top)) {
-			b->base_off = addr;
-			b->blk_off = m->ds[i].top->base;
-			b->length = m->ds[i].top->len;
-			b->hwversion = m->hwversion;
-			b->log_mask = DPU_DBG_MASK_DS;
-			return &m->ds[i];
-		}
-	}
-
-	return ERR_PTR(-EINVAL);
-}
-
-static struct dpu_hw_blk_ops dpu_hw_ops = {
-	.start = NULL,
-	.stop = NULL,
-};
-
-struct dpu_hw_ds *dpu_hw_ds_init(enum dpu_ds idx,
-			void __iomem *addr,
-			struct dpu_mdss_cfg *m)
-{
-	struct dpu_hw_ds *hw_ds;
-	struct dpu_ds_cfg *cfg;
-	int rc;
-
-	if (!addr || !m)
-		return ERR_PTR(-EINVAL);
-
-	hw_ds = kzalloc(sizeof(*hw_ds), GFP_KERNEL);
-	if (!hw_ds)
-		return ERR_PTR(-ENOMEM);
-
-	cfg = _ds_offset(idx, m, addr, &hw_ds->hw);
-	if (IS_ERR_OR_NULL(cfg)) {
-		DPU_ERROR("failed to get ds cfg\n");
-		kfree(hw_ds);
-		return ERR_PTR(-EINVAL);
-	}
-
-	/* Assign ops */
-	hw_ds->idx = idx;
-	hw_ds->scl = cfg;
-	_setup_ds_ops(&hw_ds->ops, hw_ds->scl->features);
-
-	rc = dpu_hw_blk_init(&hw_ds->base, DPU_HW_BLK_DS, idx, &dpu_hw_ops);
-	if (rc) {
-		DPU_ERROR("failed to init hw blk %d\n", rc);
-		goto blk_init_error;
-	}
-
-	if (cfg->len) {
-		dpu_dbg_reg_register_dump_range(DPU_DBG_NAME, cfg->name,
-				hw_ds->hw.blk_off + cfg->base,
-				hw_ds->hw.blk_off + cfg->base + cfg->len,
-				hw_ds->hw.xin_id);
-	}
-
-	return hw_ds;
-
-blk_init_error:
-	kzfree(hw_ds);
-
-	return ERR_PTR(rc);
-
-}
-
-void dpu_hw_ds_destroy(struct dpu_hw_ds *hw_ds)
-{
-	if (hw_ds)
-		dpu_hw_blk_destroy(&hw_ds->base);
-	kfree(hw_ds);
-}
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h
deleted file mode 100644
index 2455920..0000000
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ds.h
+++ /dev/null
@@ -1,111 +0,0 @@ 
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#ifndef _DPU_HW_DS_H
-#define _DPU_HW_DS_H
-
-#include "dpu_hw_mdss.h"
-#include "dpu_hw_util.h"
-#include "dpu_hw_catalog.h"
-#include "dpu_hw_blk.h"
-
-struct dpu_hw_ds;
-
-/* Destination Scaler DUAL mode overfetch pixel count */
-#define DPU_DS_OVERFETCH_SIZE 5
-
-/* Destination scaler DUAL mode operation bit */
-#define DPU_DS_OP_MODE_DUAL BIT(16)
-
-/* struct dpu_hw_ds_cfg - destination scaler config
- * @ndx          : DS selection index
- * @flags        : Flag to switch between mode for DS
- * @lm_width     : Layer mixer width configuration
- * @lm_heigh     : Layer mixer height configuration
- * @set_lm_flush : LM flush bit
- * @scl3_cfg     : Pointer to dpu_hw_scaler3_cfg.
- */
-struct dpu_hw_ds_cfg {
-	u32 ndx;
-	int flags;
-	u32 lm_width;
-	u32 lm_height;
-	bool set_lm_flush;
-	struct dpu_hw_scaler3_cfg *scl3_cfg;
-};
-
-/**
- * struct dpu_hw_ds_ops - interface to the destination scaler
- * hardware driver functions
- * Caller must call the init function to get the ds context for each ds
- * Assumption is these functions will be called after clocks are enabled
- */
-struct dpu_hw_ds_ops {
-	/**
-	 * setup_opmode - destination scaler op mode setup
-	 * @hw_ds   : Pointer to ds context
-	 * @op_mode : Op mode configuration
-	 */
-	void (*setup_opmode)(struct dpu_hw_ds *hw_ds,
-				u32 op_mode);
-
-	/**
-	 * setup_scaler - destination scaler block setup
-	 * @hw_ds          : Pointer to ds context
-	 * @scaler_cfg     : Pointer to scaler data
-	 * @scaler_lut_cfg : Pointer to scaler lut
-	 */
-	void (*setup_scaler)(struct dpu_hw_ds *hw_ds,
-				void *scaler_cfg,
-				void *scaler_lut_cfg);
-
-};
-
-/**
- * struct dpu_hw_ds - destination scaler description
- * @base : Hardware block base structure
- * @hw   : Block hardware details
- * @idx  : Destination scaler index
- * @scl  : Pointer to
- *          - scaler offset relative to top offset
- *          - capabilities
- * @ops  : Pointer to operations for this DS
- */
-struct dpu_hw_ds {
-	struct dpu_hw_blk base;
-	struct dpu_hw_blk_reg_map hw;
-	enum dpu_ds idx;
-	const struct dpu_ds_cfg *scl;
-	struct dpu_hw_ds_ops ops;
-};
-
-/**
- * dpu_hw_ds_init - initializes the destination scaler
- * hw driver object and should be called once before
- * accessing every destination scaler
- * @idx : DS index for which driver object is required
- * @addr: Mapped register io address of MDP
- * @m   : MDSS catalog information
- * @Return: pointer to structure or ERR_PTR
- */
-struct dpu_hw_ds *dpu_hw_ds_init(enum dpu_ds idx,
-			void __iomem *addr,
-			struct dpu_mdss_cfg *m);
-
-/**
- * dpu_hw_ds_destroy - destroys destination scaler
- * driver context
- * @hw_ds:   Pointer to DS context
- */
-void dpu_hw_ds_destroy(struct dpu_hw_ds *hw_ds);
-
-#endif /*_DPU_HW_DS_H */
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
index 75a30db..830b69e 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
@@ -172,68 +172,6 @@  static void dpu_hw_lm_gc(struct dpu_hw_mixer *mixer,
 {
 }
 
-static void dpu_hw_lm_clear_dim_layer(struct dpu_hw_mixer *ctx)
-{
-	struct dpu_hw_blk_reg_map *c = &ctx->hw;
-	const struct dpu_lm_sub_blks *sblk = ctx->cap->sblk;
-	int stage_off, i;
-	u32 reset = BIT(16), val;
-
-	reset = ~reset;
-	for (i = DPU_STAGE_0; i < sblk->maxblendstages; i++) {
-		stage_off = _stage_offset(ctx, i);
-		if (WARN_ON(stage_off < 0))
-			return;
-
-		/*
-		 * read the existing blendn_op register and clear only DIM layer
-		 * bit (color_fill bit)
-		 */
-		val = DPU_REG_READ(c, LM_BLEND0_OP + stage_off);
-		val &= reset;
-		DPU_REG_WRITE(c, LM_BLEND0_OP + stage_off, val);
-	}
-}
-
-static void dpu_hw_lm_setup_dim_layer(struct dpu_hw_mixer *ctx,
-		struct dpu_hw_dim_layer *dim_layer)
-{
-	struct dpu_hw_blk_reg_map *c = &ctx->hw;
-	int stage_off;
-	u32 val = 0, alpha = 0;
-
-	stage_off = _stage_offset(ctx, dim_layer->stage);
-	if (stage_off < 0) {
-		DPU_ERROR("invalid stage_off:%d for dim layer\n", stage_off);
-		return;
-	}
-
-	alpha = dim_layer->color_fill.color_3 & 0xFF;
-	val = ((dim_layer->color_fill.color_1 << 2) & 0xFFF) << 16 |
-			((dim_layer->color_fill.color_0 << 2) & 0xFFF);
-	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_COLOR_0 + stage_off, val);
-
-	val = (alpha << 4) << 16 |
-			((dim_layer->color_fill.color_2 << 2) & 0xFFF);
-	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_COLOR_1 + stage_off, val);
-
-	val = dim_layer->rect.h << 16 | dim_layer->rect.w;
-	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_SIZE + stage_off, val);
-
-	val = dim_layer->rect.y << 16 | dim_layer->rect.x;
-	DPU_REG_WRITE(c, LM_FG_COLOR_FILL_XY + stage_off, val);
-
-	val = BIT(16); /* enable dim layer */
-	val |= DPU_BLEND_FG_ALPHA_FG_CONST | DPU_BLEND_BG_ALPHA_BG_CONST;
-	if (dim_layer->flags & DPU_DRM_DIM_LAYER_EXCLUSIVE)
-		val |= BIT(17);
-	else
-		val &= ~BIT(17);
-	DPU_REG_WRITE(c, LM_BLEND0_OP + stage_off, val);
-	val = (alpha << 16) | (0xff - alpha);
-	DPU_REG_WRITE(c, LM_BLEND0_CONST_ALPHA + stage_off, val);
-}
-
 static void dpu_hw_lm_setup_misr(struct dpu_hw_mixer *ctx,
 				bool enable, u32 frame_count)
 {
@@ -272,11 +210,6 @@  static void _setup_mixer_ops(struct dpu_mdss_cfg *m,
 	ops->setup_gc = dpu_hw_lm_gc;
 	ops->setup_misr = dpu_hw_lm_setup_misr;
 	ops->collect_misr = dpu_hw_lm_collect_misr;
-
-	if (test_bit(DPU_DIM_LAYER, &features)) {
-		ops->setup_dim_layer = dpu_hw_lm_setup_dim_layer;
-		ops->clear_dim_layer = dpu_hw_lm_clear_dim_layer;
-	}
 };
 
 static struct dpu_hw_blk_ops dpu_hw_ops = {
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
index ef22c86..e29e5da 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
@@ -67,20 +67,6 @@  struct dpu_hw_lm_ops {
 	void (*setup_gc)(struct dpu_hw_mixer *mixer,
 			void *cfg);
 
-	/**
-	 * setup_dim_layer: configure dim layer settings
-	 * @ctx: Pointer to layer mixer context
-	 * @dim_layer: dim layer configs
-	 */
-	void (*setup_dim_layer)(struct dpu_hw_mixer *ctx,
-			struct dpu_hw_dim_layer *dim_layer);
-
-	/**
-	 * clear_dim_layer: clear dim layer settings
-	 * @ctx: Pointer to layer mixer context
-	 */
-	void (*clear_dim_layer)(struct dpu_hw_mixer *ctx);
-
 	/* setup_misr: enables/disables MISR in HW register */
 	void (*setup_misr)(struct dpu_hw_mixer *ctx,
 			bool enable, u32 frame_count);
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
index fcd164f..836ff9e 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h
@@ -99,7 +99,6 @@  enum dpu_hw_blk_type {
 	DPU_HW_BLK_TOP = 0,
 	DPU_HW_BLK_SSPP,
 	DPU_HW_BLK_LM,
-	DPU_HW_BLK_DS,
 	DPU_HW_BLK_CTL,
 	DPU_HW_BLK_CDM,
 	DPU_HW_BLK_PINGPONG,
@@ -469,20 +468,5 @@  struct dpu_mdss_color {
 #define DPU_DBG_MASK_TOP      (1 << 8)
 #define DPU_DBG_MASK_VBIF     (1 << 9)
 #define DPU_DBG_MASK_ROT      (1 << 10)
-#define DPU_DBG_MASK_DS       (1 << 11)
-
-/**
- * struct dpu_hw_dim_layer: dim layer configs
- * @flags: Flag to represent INCLUSIVE/EXCLUSIVE
- * @stage: Blending stage of dim layer
- * @color_fill: Color fill to be used for the layer
- * @rect: Dim layer coordinates
- */
-struct dpu_hw_dim_layer {
-	uint32_t flags;
-	uint32_t stage;
-	struct dpu_mdss_color color_fill;
-	struct dpu_rect rect;
-};
 
 #endif  /* _DPU_HW_MDSS_H */
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
index f467bf1..0af2996 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
@@ -17,7 +17,6 @@ 
 #include "dpu_hw_lm.h"
 #include "dpu_hw_ctl.h"
 #include "dpu_hw_cdm.h"
-#include "dpu_hw_ds.h"
 #include "dpu_hw_pingpong.h"
 #include "dpu_hw_intf.h"
 #include "dpu_hw_wb.h"
@@ -235,9 +234,6 @@  static void _dpu_rm_hw_destroy(enum dpu_hw_blk_type type, void *hw)
 	case DPU_HW_BLK_LM:
 		dpu_hw_lm_destroy(hw);
 		break;
-	case DPU_HW_BLK_DS:
-		dpu_hw_ds_destroy(hw);
-		break;
 	case DPU_HW_BLK_CTL:
 		dpu_hw_ctl_destroy(hw);
 		break;
@@ -317,9 +313,6 @@  static int _dpu_rm_hw_blk_create(
 	case DPU_HW_BLK_LM:
 		hw = dpu_hw_lm_init(id, mmio, cat);
 		break;
-	case DPU_HW_BLK_DS:
-		hw = dpu_hw_ds_init(id, mmio, cat);
-		break;
 	case DPU_HW_BLK_CTL:
 		hw = dpu_hw_ctl_init(id, mmio, cat);
 		break;
@@ -427,17 +420,6 @@  int dpu_rm_init(struct dpu_rm *rm,
 		}
 	}
 
-	if (cat->mdp[0].has_dest_scaler) {
-		for (i = 0; i < cat->ds_count; i++) {
-			rc = _dpu_rm_hw_blk_create(rm, cat, mmio, DPU_HW_BLK_DS,
-					cat->ds[i].id, &cat->ds[i]);
-			if (rc) {
-				DPU_ERROR("failed: ds hw not available\n");
-				goto fail;
-			}
-		}
-	}
-
 	for (i = 0; i < cat->pingpong_count; i++) {
 		rc = _dpu_rm_hw_blk_create(rm, cat, mmio, DPU_HW_BLK_PINGPONG,
 				cat->pingpong[i].id, &cat->pingpong[i]);
@@ -516,20 +498,16 @@  static bool _dpu_rm_check_lm_and_get_connected_blks(
 		struct dpu_rm_rsvp *rsvp,
 		struct dpu_rm_requirements *reqs,
 		struct dpu_rm_hw_blk *lm,
-		struct dpu_rm_hw_blk **ds,
 		struct dpu_rm_hw_blk **pp,
 		struct dpu_rm_hw_blk *primary_lm)
 {
 	const struct dpu_lm_cfg *lm_cfg = to_dpu_hw_mixer(lm->hw)->cap;
 	struct dpu_rm_hw_iter iter;
-	bool is_valid_ds;
 
-	*ds = NULL;
 	*pp = NULL;
 
-	DPU_DEBUG("check lm %d ds %d pp %d\n",
-			   lm_cfg->id,
-			   lm_cfg->ds, lm_cfg->pingpong);
+	DPU_DEBUG("check lm %d pp %d\n",
+			   lm_cfg->id, lm_cfg->pingpong);
 
 	/* Check if this layer mixer is a peer of the proposed primary LM */
 	if (primary_lm) {
@@ -543,43 +521,12 @@  static bool _dpu_rm_check_lm_and_get_connected_blks(
 		}
 	}
 
-	is_valid_ds = (lm_cfg->ds != DS_MAX) ? true : false;
-
-	if (RM_RQ_DS(reqs) && !is_valid_ds) {
-		DPU_DEBUG("fail:lm(%d)req_ds(%d)ds(%d)\n",
-			lm_cfg->id, (bool)(RM_RQ_DS(reqs)), lm_cfg->ds);
-
-		return false;
-	}
-
 	/* Already reserved? */
 	if (RESERVED_BY_OTHER(lm, rsvp)) {
 		DPU_DEBUG("lm %d already reserved\n", lm_cfg->id);
 		return false;
 	}
 
-	if (lm_cfg->ds != DS_MAX) {
-		dpu_rm_init_hw_iter(&iter, 0, DPU_HW_BLK_DS);
-		while (_dpu_rm_get_hw_locked(rm, &iter)) {
-			if (iter.blk->id == lm_cfg->ds) {
-				*ds = iter.blk;
-				break;
-			}
-		}
-
-		if (!*ds) {
-			DPU_DEBUG("lm %d failed to retrieve ds %d\n", lm->id,
-					lm_cfg->ds);
-			return false;
-		}
-
-		if (RESERVED_BY_OTHER(*ds, rsvp)) {
-			DPU_DEBUG("lm %d ds %d already reserved\n",
-					lm->id, (*ds)->id);
-			return false;
-		}
-	}
-
 	dpu_rm_init_hw_iter(&iter, 0, DPU_HW_BLK_PINGPONG);
 	while (_dpu_rm_get_hw_locked(rm, &iter)) {
 		if (iter.blk->id == lm_cfg->pingpong) {
@@ -596,7 +543,6 @@  static bool _dpu_rm_check_lm_and_get_connected_blks(
 	if (RESERVED_BY_OTHER(*pp, rsvp)) {
 		DPU_DEBUG("lm %d pp %d already reserved\n", lm->id,
 				(*pp)->id);
-		*ds = NULL;
 		return false;
 	}
 
@@ -610,7 +556,6 @@  static int _dpu_rm_reserve_lms(
 
 {
 	struct dpu_rm_hw_blk *lm[MAX_BLOCKS];
-	struct dpu_rm_hw_blk *ds[MAX_BLOCKS];
 	struct dpu_rm_hw_blk *pp[MAX_BLOCKS];
 	struct dpu_rm_hw_iter iter_i, iter_j;
 	int lm_count = 0;
@@ -626,14 +571,13 @@  static int _dpu_rm_reserve_lms(
 	while (lm_count != reqs->topology->num_lm &&
 			_dpu_rm_get_hw_locked(rm, &iter_i)) {
 		memset(&lm, 0, sizeof(lm));
-		memset(&ds, 0, sizeof(ds));
 		memset(&pp, 0, sizeof(pp));
 
 		lm_count = 0;
 		lm[lm_count] = iter_i.blk;
 
 		if (!_dpu_rm_check_lm_and_get_connected_blks(
-				rm, rsvp, reqs, lm[lm_count], &ds[lm_count],
+				rm, rsvp, reqs, lm[lm_count],
 				&pp[lm_count], NULL))
 			continue;
 
@@ -649,8 +593,7 @@  static int _dpu_rm_reserve_lms(
 
 			if (!_dpu_rm_check_lm_and_get_connected_blks(
 					rm, rsvp, reqs, iter_j.blk,
-					&ds[lm_count], &pp[lm_count],
-					iter_i.blk))
+					&pp[lm_count], iter_i.blk))
 				continue;
 
 			lm[lm_count] = iter_j.blk;
@@ -670,11 +613,7 @@  static int _dpu_rm_reserve_lms(
 		lm[i]->rsvp_nxt = rsvp;
 		pp[i]->rsvp_nxt = rsvp;
 
-		if (ds[i])
-			ds[i]->rsvp_nxt = rsvp;
-
-		DPU_EVT32(lm[i]->type, rsvp->enc_id, lm[i]->id, pp[i]->id,
-				ds[i] ? ds[i]->id : 0);
+		DPU_EVT32(lm[i]->type, rsvp->enc_id, lm[i]->id, pp[i]->id);
 	}
 
 	return rc;
diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
index 5baff27..8e80b4b 100644
--- a/drivers/gpu/drm/msm/msm_drv.h
+++ b/drivers/gpu/drm/msm/msm_drv.h
@@ -89,25 +89,10 @@  enum msm_mdp_plane_property {
 
 enum msm_mdp_crtc_property {
 	CRTC_PROP_INFO,
-	CRTC_PROP_DEST_SCALER_LUT_ED,
-	CRTC_PROP_DEST_SCALER_LUT_CIR,
-	CRTC_PROP_DEST_SCALER_LUT_SEP,
 
 	/* # of blob properties */
 	CRTC_PROP_BLOBCOUNT,
 
-	/* range properties */
-	CRTC_PROP_DIM_LAYER_V1 = CRTC_PROP_BLOBCOUNT,
-	CRTC_PROP_CORE_CLK,
-	CRTC_PROP_CORE_AB,
-	CRTC_PROP_CORE_IB,
-	CRTC_PROP_LLCC_AB,
-	CRTC_PROP_LLCC_IB,
-	CRTC_PROP_DRAM_AB,
-	CRTC_PROP_DRAM_IB,
-	CRTC_PROP_IDLE_TIMEOUT,
-	CRTC_PROP_DEST_SCALER,
-
 	/* total # of properties */
 	CRTC_PROP_COUNT
 };