|
@@ -116,6 +116,9 @@ struct sde_plane {
|
|
|
struct sde_csc_cfg *csc_usr_ptr;
|
|
|
struct sde_csc_cfg *csc_ptr;
|
|
|
|
|
|
+ struct sde_hw_scaler3_cfg scaler3_cfg;
|
|
|
+ struct sde_hw_pixel_ext pixel_ext;
|
|
|
+
|
|
|
const struct sde_sspp_sub_blks *pipe_sblk;
|
|
|
|
|
|
char pipe_name[SDE_NAME_SIZE];
|
|
@@ -297,7 +300,7 @@ void _sde_plane_set_qos_lut(struct drm_plane *plane,
|
|
|
lut_index = SDE_QOS_LUT_USAGE_MACROTILE;
|
|
|
|
|
|
creq_lut_index = lut_index * SDE_CREQ_LUT_TYPE_MAX;
|
|
|
- if (pstate->scaler3_cfg.enable)
|
|
|
+ if (psde->scaler3_cfg.enable)
|
|
|
creq_lut_index += SDE_CREQ_LUT_TYPE_QSEED;
|
|
|
} else {
|
|
|
lut_index = SDE_QOS_LUT_USAGE_NRT;
|
|
@@ -793,7 +796,7 @@ static int _sde_plane_setup_scaler3_lut(struct sde_plane *psde,
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- cfg = &pstate->scaler3_cfg;
|
|
|
+ cfg = &psde->scaler3_cfg;
|
|
|
|
|
|
cfg->dir_lut = msm_property_get_blob(
|
|
|
&psde->property_info,
|
|
@@ -817,7 +820,7 @@ static int _sde_plane_setup_scaler3lite_lut(struct sde_plane *psde,
|
|
|
{
|
|
|
struct sde_hw_scaler3_cfg *cfg;
|
|
|
|
|
|
- cfg = &pstate->scaler3_cfg;
|
|
|
+ cfg = &psde->scaler3_cfg;
|
|
|
|
|
|
cfg->sep_lut = msm_property_get_blob(
|
|
|
&psde->property_info,
|
|
@@ -842,14 +845,14 @@ static void _sde_plane_setup_scaler3(struct sde_plane *psde,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- scale_cfg = &pstate->scaler3_cfg;
|
|
|
+ scale_cfg = &psde->scaler3_cfg;
|
|
|
src_w = psde->pipe_cfg.src_rect.w;
|
|
|
src_h = psde->pipe_cfg.src_rect.h;
|
|
|
dst_w = psde->pipe_cfg.dst_rect.w;
|
|
|
dst_h = psde->pipe_cfg.dst_rect.h;
|
|
|
|
|
|
memset(scale_cfg, 0, sizeof(*scale_cfg));
|
|
|
- memset(&pstate->pixel_ext, 0, sizeof(struct sde_hw_pixel_ext));
|
|
|
+ memset(&psde->pixel_ext, 0, sizeof(struct sde_hw_pixel_ext));
|
|
|
|
|
|
/*
|
|
|
* For inline rotation cases, scaler config is post-rotation,
|
|
@@ -911,14 +914,14 @@ static void _sde_plane_setup_scaler3(struct sde_plane *psde,
|
|
|
|
|
|
/* For pixel extension we need the pre-rotated orientation */
|
|
|
if (inline_rotation) {
|
|
|
- pstate->pixel_ext.num_ext_pxls_top[i] =
|
|
|
+ psde->pixel_ext.num_ext_pxls_top[i] =
|
|
|
scale_cfg->src_width[i];
|
|
|
- pstate->pixel_ext.num_ext_pxls_left[i] =
|
|
|
+ psde->pixel_ext.num_ext_pxls_left[i] =
|
|
|
scale_cfg->src_height[i];
|
|
|
} else {
|
|
|
- pstate->pixel_ext.num_ext_pxls_top[i] =
|
|
|
+ psde->pixel_ext.num_ext_pxls_top[i] =
|
|
|
scale_cfg->src_height[i];
|
|
|
- pstate->pixel_ext.num_ext_pxls_left[i] =
|
|
|
+ psde->pixel_ext.num_ext_pxls_left[i] =
|
|
|
scale_cfg->src_width[i];
|
|
|
}
|
|
|
}
|
|
@@ -1325,8 +1328,13 @@ static void _sde_plane_setup_scaler(struct sde_plane *psde,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ memcpy(&psde->scaler3_cfg, &pstate->scaler3_cfg,
|
|
|
+ sizeof(psde->scaler3_cfg));
|
|
|
+ memcpy(&psde->pixel_ext, &pstate->pixel_ext,
|
|
|
+ sizeof(psde->pixel_ext));
|
|
|
+
|
|
|
info = drm_format_info(fmt->base.pixel_format);
|
|
|
- pe = &pstate->pixel_ext;
|
|
|
+ pe = &psde->pixel_ext;
|
|
|
|
|
|
psde->pipe_cfg.horz_decimation =
|
|
|
sde_plane_get_property(pstate, PLANE_PROP_H_DECIMATE);
|
|
@@ -1495,13 +1503,13 @@ static int _sde_plane_color_fill(struct sde_plane *psde,
|
|
|
|
|
|
if (psde->pipe_hw->ops.setup_pe)
|
|
|
psde->pipe_hw->ops.setup_pe(psde->pipe_hw,
|
|
|
- &pstate->pixel_ext);
|
|
|
+ &psde->pixel_ext);
|
|
|
if (psde->pipe_hw->ops.setup_scaler &&
|
|
|
pstate->multirect_index != SDE_SSPP_RECT_1) {
|
|
|
psde->pipe_hw->ctl = _sde_plane_get_hw_ctl(plane);
|
|
|
psde->pipe_hw->ops.setup_scaler(psde->pipe_hw,
|
|
|
- &psde->pipe_cfg, &pstate->pixel_ext,
|
|
|
- &pstate->scaler3_cfg);
|
|
|
+ &psde->pipe_cfg, &psde->pixel_ext,
|
|
|
+ &psde->scaler3_cfg);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -3046,7 +3054,7 @@ static void _sde_plane_update_roi_config(struct drm_plane *plane,
|
|
|
if (psde->pipe_hw->ops.setup_pe &&
|
|
|
(pstate->multirect_index != SDE_SSPP_RECT_1))
|
|
|
psde->pipe_hw->ops.setup_pe(psde->pipe_hw,
|
|
|
- &pstate->pixel_ext);
|
|
|
+ &psde->pixel_ext);
|
|
|
|
|
|
/**
|
|
|
* when programmed in multirect mode, scalar block will be
|
|
@@ -3057,8 +3065,8 @@ static void _sde_plane_update_roi_config(struct drm_plane *plane,
|
|
|
pstate->multirect_index != SDE_SSPP_RECT_1) {
|
|
|
psde->pipe_hw->ctl = _sde_plane_get_hw_ctl(plane);
|
|
|
psde->pipe_hw->ops.setup_scaler(psde->pipe_hw,
|
|
|
- &psde->pipe_cfg, &pstate->pixel_ext,
|
|
|
- &pstate->scaler3_cfg);
|
|
|
+ &psde->pipe_cfg, &psde->pixel_ext,
|
|
|
+ &psde->scaler3_cfg);
|
|
|
}
|
|
|
|
|
|
/* update excl rect */
|