aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0846-Revert-drm-amd-display-move-regamma-from-opp-to-dpp-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0846-Revert-drm-amd-display-move-regamma-from-opp-to-dpp-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0846-Revert-drm-amd-display-move-regamma-from-opp-to-dpp-.patch1368
1 files changed, 0 insertions, 1368 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0846-Revert-drm-amd-display-move-regamma-from-opp-to-dpp-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0846-Revert-drm-amd-display-move-regamma-from-opp-to-dpp-.patch
deleted file mode 100644
index bbcd2e6c..00000000
--- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0846-Revert-drm-amd-display-move-regamma-from-opp-to-dpp-.patch
+++ /dev/null
@@ -1,1368 +0,0 @@
-From 04209f75b6d3fc8d9fdd66cb92094d3d69053e85 Mon Sep 17 00:00:00 2001
-From: "Le.Ma" <Le.Ma@amd.com>
-Date: Mon, 11 Sep 2017 15:21:55 +0800
-Subject: [PATCH 0846/4131] Revert "drm/amd/display: move regamma from opp to
- dpp for dce"
-
-This reverts commit d285a70ea79059941692f9dc1a5225fa2f599a82.
-
-Revert this patch because this patch will cause error like below on some ASICs:
- "[drm:dce110_opp_power_on_regamma_lut [amdgpu]] *ERROR* invalid register read; address = 0"
-
-Will re-port it when fix is ready by DAL team.
-
- Conflicts:
- drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
-
-Change-Id: Icd9bb67423ae7b8a0607af2e53244d3e61a04109
-Signed-off-by: Le.Ma <Le.Ma@amd.com>
----
- drivers/gpu/drm/amd/display/dc/dce/dce_opp.c | 237 ++++++++++++++++++++
- drivers/gpu/drm/amd/display/dc/dce/dce_opp.h | 113 +++++++++-
- drivers/gpu/drm/amd/display/dc/dce/dce_transform.c | 240 ---------------------
- drivers/gpu/drm/amd/display/dc/dce/dce_transform.h | 88 --------
- .../amd/display/dc/dce110/dce110_hw_sequencer.c | 35 ++-
- .../amd/display/dc/dce110/dce110_opp_regamma_v.c | 88 ++++----
- .../gpu/drm/amd/display/dc/dce110/dce110_opp_v.c | 3 +
- .../gpu/drm/amd/display/dc/dce110/dce110_opp_v.h | 11 +
- .../drm/amd/display/dc/dce110/dce110_transform_v.c | 3 -
- .../drm/amd/display/dc/dce110/dce110_transform_v.h | 14 --
- drivers/gpu/drm/amd/display/dc/inc/hw/opp.h | 17 ++
- 11 files changed, 439 insertions(+), 410 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
-index 348e4b7..7abf252 100644
---- a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
-+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
-@@ -92,8 +92,242 @@ enum {
- *
- *****************************************************************************
- */
-+static void regamma_config_regions_and_segments(
-+ struct dce110_opp *opp110,
-+ const struct pwl_params *params)
-+{
-+ const struct gamma_curve *curve;
-+
-+ {
-+ REG_SET_2(REGAMMA_CNTLA_START_CNTL, 0,
-+ REGAMMA_CNTLA_EXP_REGION_START, params->arr_points[0].custom_float_x,
-+ REGAMMA_CNTLA_EXP_REGION_START_SEGMENT, 0);
-+ }
-+ {
-+ REG_SET(REGAMMA_CNTLA_SLOPE_CNTL, 0,
-+ REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE, params->arr_points[0].custom_float_slope);
-+
-+ }
-+ {
-+ REG_SET(REGAMMA_CNTLA_END_CNTL1, 0,
-+ REGAMMA_CNTLA_EXP_REGION_END, params->arr_points[1].custom_float_x);
-+ }
-+ {
-+ REG_SET_2(REGAMMA_CNTLA_END_CNTL2, 0,
-+ REGAMMA_CNTLA_EXP_REGION_END_BASE, params->arr_points[1].custom_float_y,
-+ REGAMMA_CNTLA_EXP_REGION_END_SLOPE, params->arr_points[2].custom_float_slope);
-+ }
-+
-+ curve = params->arr_curve_points;
-+
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_0_1, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-+ }
-+
-+ curve += 2;
-+
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_2_3, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-+
-+ }
-+
-+ curve += 2;
-+
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_4_5, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-+
-+ }
-+
-+ curve += 2;
-
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_6_7, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
-+ }
-+
-+ curve += 2;
-+
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_8_9, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-+
-+ }
-+
-+ curve += 2;
-+
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_10_11, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-+
-+ }
-+
-+ curve += 2;
-+
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_12_13, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-+
-+ }
-+
-+ curve += 2;
-+
-+ {
-+ REG_SET_4(REGAMMA_CNTLA_REGION_14_15, 0,
-+ REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-+ REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-+ REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-+ REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-+ }
-+}
-+
-+static void program_pwl(
-+ struct dce110_opp *opp110,
-+ const struct pwl_params *params)
-+{
-+ uint32_t value;
-+ int retval;
-+
-+ {
-+ uint8_t max_tries = 10;
-+ uint8_t counter = 0;
-+
-+ /* Power on LUT memory */
-+ if (REG(DCFE_MEM_PWR_CTRL))
-+ REG_UPDATE(DCFE_MEM_PWR_CTRL,
-+ DCP_REGAMMA_MEM_PWR_DIS, 1);
-+ else
-+ REG_UPDATE(DCFE_MEM_LIGHT_SLEEP_CNTL,
-+ REGAMMA_LUT_LIGHT_SLEEP_DIS, 1);
-+
-+ while (counter < max_tries) {
-+ if (REG(DCFE_MEM_PWR_STATUS)) {
-+ value = REG_READ(DCFE_MEM_PWR_STATUS);
-+ REG_GET(DCFE_MEM_PWR_STATUS,
-+ DCP_REGAMMA_MEM_PWR_STATE,
-+ &retval);
-+
-+ if (retval == 0)
-+ break;
-+ ++counter;
-+ } else {
-+ value = REG_READ(DCFE_MEM_LIGHT_SLEEP_CNTL);
-+ REG_GET(DCFE_MEM_LIGHT_SLEEP_CNTL,
-+ REGAMMA_LUT_MEM_PWR_STATE,
-+ &retval);
-+
-+ if (retval == 0)
-+ break;
-+ ++counter;
-+ }
-+ }
-+
-+ if (counter == max_tries) {
-+ dm_logger_write(opp110->base.ctx->logger, LOG_WARNING,
-+ "%s: regamma lut was not powered on "
-+ "in a timely manner,"
-+ " programming still proceeds\n",
-+ __func__);
-+ }
-+ }
-+
-+ REG_UPDATE(REGAMMA_LUT_WRITE_EN_MASK,
-+ REGAMMA_LUT_WRITE_EN_MASK, 7);
-+
-+ REG_WRITE(REGAMMA_LUT_INDEX, 0);
-+
-+ /* Program REGAMMA_LUT_DATA */
-+ {
-+ uint32_t i = 0;
-+ const struct pwl_result_data *rgb = params->rgb_resulted;
-+
-+ while (i != params->hw_points_num) {
-+
-+ REG_WRITE(REGAMMA_LUT_DATA, rgb->red_reg);
-+ REG_WRITE(REGAMMA_LUT_DATA, rgb->green_reg);
-+ REG_WRITE(REGAMMA_LUT_DATA, rgb->blue_reg);
-+ REG_WRITE(REGAMMA_LUT_DATA, rgb->delta_red_reg);
-+ REG_WRITE(REGAMMA_LUT_DATA, rgb->delta_green_reg);
-+ REG_WRITE(REGAMMA_LUT_DATA, rgb->delta_blue_reg);
-+
-+ ++rgb;
-+ ++i;
-+ }
-+ }
-+
-+ /* we are done with DCP LUT memory; re-enable low power mode */
-+ if (REG(DCFE_MEM_PWR_CTRL))
-+ REG_UPDATE(DCFE_MEM_PWR_CTRL,
-+ DCP_REGAMMA_MEM_PWR_DIS, 0);
-+ else
-+ REG_UPDATE(DCFE_MEM_LIGHT_SLEEP_CNTL,
-+ REGAMMA_LUT_LIGHT_SLEEP_DIS, 0);
-+}
-+
-+bool dce110_opp_program_regamma_pwl(
-+ struct output_pixel_processor *opp,
-+ const struct pwl_params *params)
-+{
-+ struct dce110_opp *opp110 = TO_DCE110_OPP(opp);
-+
-+ /* Setup regions */
-+ regamma_config_regions_and_segments(opp110, params);
-+
-+ /* Program PWL */
-+ program_pwl(opp110, params);
-+
-+ return true;
-+}
-+
-+void dce110_opp_power_on_regamma_lut(
-+ struct output_pixel_processor *opp,
-+ bool power_on)
-+{
-+ struct dce110_opp *opp110 = TO_DCE110_OPP(opp);
-+
-+ if (REG(DCFE_MEM_PWR_CTRL))
-+ REG_UPDATE_2(DCFE_MEM_PWR_CTRL,
-+ DCP_REGAMMA_MEM_PWR_DIS, power_on,
-+ DCP_LUT_MEM_PWR_DIS, power_on);
-+ else
-+ REG_UPDATE_2(DCFE_MEM_LIGHT_SLEEP_CNTL,
-+ REGAMMA_LUT_LIGHT_SLEEP_DIS, power_on,
-+ DCP_LUT_LIGHT_SLEEP_DIS, power_on);
-+
-+}
-+
-+void dce110_opp_set_regamma_mode(struct output_pixel_processor *opp,
-+ enum opp_regamma mode)
-+{
-+ struct dce110_opp *opp110 = TO_DCE110_OPP(opp);
-+
-+ REG_SET(REGAMMA_CONTROL, 0,
-+ GRPH_REGAMMA_MODE, mode);
-+}
-
- /**
- * set_truncation
-@@ -534,7 +768,10 @@ void dce110_opp_program_fmt(
- /*****************************************/
-
- static const struct opp_funcs funcs = {
-+ .opp_power_on_regamma_lut = dce110_opp_power_on_regamma_lut,
- .opp_set_dyn_expansion = dce110_opp_set_dyn_expansion,
-+ .opp_program_regamma_pwl = dce110_opp_program_regamma_pwl,
-+ .opp_set_regamma_mode = dce110_opp_set_regamma_mode,
- .opp_destroy = dce110_opp_destroy,
- .opp_program_fmt = dce110_opp_program_fmt,
- .opp_program_bit_depth_reduction = dce110_opp_program_bit_depth_reduction
-diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.h b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.h
-index 0874c22..ca09f52 100644
---- a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.h
-+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.h
-@@ -41,6 +41,22 @@ enum dce110_opp_reg_type {
- };
-
- #define OPP_COMMON_REG_LIST_BASE(id) \
-+ SRI(REGAMMA_CNTLA_START_CNTL, DCP, id), \
-+ SRI(REGAMMA_CNTLA_SLOPE_CNTL, DCP, id), \
-+ SRI(REGAMMA_CNTLA_END_CNTL1, DCP, id), \
-+ SRI(REGAMMA_CNTLA_END_CNTL2, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_0_1, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_2_3, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_4_5, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_6_7, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_8_9, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_10_11, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_12_13, DCP, id), \
-+ SRI(REGAMMA_CNTLA_REGION_14_15, DCP, id), \
-+ SRI(REGAMMA_LUT_WRITE_EN_MASK, DCP, id), \
-+ SRI(REGAMMA_LUT_INDEX, DCP, id), \
-+ SRI(REGAMMA_LUT_DATA, DCP, id), \
-+ SRI(REGAMMA_CONTROL, DCP, id), \
- SRI(FMT_DYNAMIC_EXP_CNTL, FMT, id), \
- SRI(FMT_BIT_DEPTH_CONTROL, FMT, id), \
- SRI(FMT_CONTROL, FMT, id), \
-@@ -54,24 +70,31 @@ enum dce110_opp_reg_type {
-
- #define OPP_DCE_80_REG_LIST(id) \
- OPP_COMMON_REG_LIST_BASE(id), \
-+ SRI(DCFE_MEM_LIGHT_SLEEP_CNTL, CRTC, id), \
- SRI(FMT_TEMPORAL_DITHER_PATTERN_CONTROL, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_S_MATRIX, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_T_MATRIX, FMT, id)
-
- #define OPP_DCE_100_REG_LIST(id) \
- OPP_COMMON_REG_LIST_BASE(id), \
-+ SRI(DCFE_MEM_PWR_CTRL, CRTC, id), \
-+ SRI(DCFE_MEM_PWR_STATUS, CRTC, id), \
- SRI(FMT_TEMPORAL_DITHER_PATTERN_CONTROL, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_S_MATRIX, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_T_MATRIX, FMT, id)
-
- #define OPP_DCE_110_REG_LIST(id) \
- OPP_COMMON_REG_LIST_BASE(id), \
-+ SRI(DCFE_MEM_PWR_CTRL, DCFE, id), \
-+ SRI(DCFE_MEM_PWR_STATUS, DCFE, id), \
- SRI(FMT_TEMPORAL_DITHER_PATTERN_CONTROL, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_S_MATRIX, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_T_MATRIX, FMT, id)
-
- #define OPP_DCE_112_REG_LIST(id) \
- OPP_COMMON_REG_LIST_BASE(id), \
-+ SRI(DCFE_MEM_PWR_CTRL, DCFE, id), \
-+ SRI(DCFE_MEM_PWR_STATUS, DCFE, id), \
- SRI(FMT_TEMPORAL_DITHER_PATTERN_CONTROL, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_S_MATRIX, FMT, id), \
- SRI(FMT_TEMPORAL_DITHER_PROGRAMMABLE_PATTERN_T_MATRIX, FMT, id), \
-@@ -79,12 +102,26 @@ enum dce110_opp_reg_type {
-
- #define OPP_DCE_120_REG_LIST(id) \
- OPP_COMMON_REG_LIST_BASE(id), \
-+ SRI(DCFE_MEM_PWR_CTRL, DCFE, id), \
-+ SRI(DCFE_MEM_PWR_STATUS, DCFE, id), \
- SRI(CONTROL, FMT_MEMORY, id)
-
- #define OPP_SF(reg_name, field_name, post_fix)\
- .field_name = reg_name ## __ ## field_name ## post_fix
-
- #define OPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh)\
-+ OPP_SF(REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START_SEGMENT, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_SLOPE_CNTL, REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_END_CNTL1, REGAMMA_CNTLA_EXP_REGION_END, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_BASE, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_SLOPE, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, mask_sh),\
-+ OPP_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
-+ OPP_SF(REGAMMA_LUT_WRITE_EN_MASK, REGAMMA_LUT_WRITE_EN_MASK, mask_sh),\
-+ OPP_SF(REGAMMA_CONTROL, GRPH_REGAMMA_MODE, mask_sh),\
- OPP_SF(FMT_DYNAMIC_EXP_CNTL, FMT_DYNAMIC_EXP_EN, mask_sh),\
- OPP_SF(FMT_DYNAMIC_EXP_CNTL, FMT_DYNAMIC_EXP_MODE, mask_sh),\
- OPP_SF(FMT_BIT_DEPTH_CONTROL, FMT_TRUNCATE_EN, mask_sh),\
-@@ -123,18 +160,27 @@ enum dce110_opp_reg_type {
-
- #define OPP_COMMON_MASK_SH_LIST_DCE_110(mask_sh)\
- OPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_CTRL, DCP_REGAMMA_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_STATUS, DCP_REGAMMA_MEM_PWR_STATE, mask_sh),\
- OPP_SF(FMT_CONTROL, FMT_SPATIAL_DITHER_FRAME_COUNTER_MAX, mask_sh),\
- OPP_SF(FMT_CONTROL, FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP, mask_sh),\
- OPP_SF(FMT_CONTROL, FMT_STEREOSYNC_OVERRIDE, mask_sh)
-
- #define OPP_COMMON_MASK_SH_LIST_DCE_100(mask_sh)\
- OPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_CTRL, DCP_REGAMMA_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_STATUS, DCP_REGAMMA_MEM_PWR_STATE, mask_sh),\
- OPP_SF(FMT_CONTROL, FMT_SPATIAL_DITHER_FRAME_COUNTER_MAX, mask_sh),\
- OPP_SF(FMT_CONTROL, FMT_SPATIAL_DITHER_FRAME_COUNTER_BIT_SWAP, mask_sh),\
- OPP_SF(FMT_CONTROL, FMT_STEREOSYNC_OVERRIDE, mask_sh)
-
- #define OPP_COMMON_MASK_SH_LIST_DCE_112(mask_sh)\
- OPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_CTRL, DCP_REGAMMA_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_PWR_STATUS, DCP_REGAMMA_MEM_PWR_STATE, mask_sh),\
- OPP_SF(FMT_MEMORY0_CONTROL, FMT420_MEM0_SOURCE_SEL, mask_sh),\
- OPP_SF(FMT_MEMORY0_CONTROL, FMT420_MEM0_PWR_FORCE, mask_sh),\
- OPP_SF(FMT_CONTROL, FMT_420_PIXEL_PHASE_LOCKED_CLEAR, mask_sh),\
-@@ -145,9 +191,27 @@ enum dce110_opp_reg_type {
- OPP_SF(FMT_CONTROL, FMT_STEREOSYNC_OVERRIDE, mask_sh)
-
- #define OPP_COMMON_MASK_SH_LIST_DCE_80(mask_sh)\
-- OPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh)
-+ OPP_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh),\
-+ OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, REGAMMA_LUT_LIGHT_SLEEP_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, DCP_LUT_LIGHT_SLEEP_DIS, mask_sh),\
-+ OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, REGAMMA_LUT_MEM_PWR_STATE, mask_sh)
-
- #define OPP_COMMON_MASK_SH_LIST_DCE_120(mask_sh)\
-+ OPP_SF(DCFE0_DCFE_MEM_PWR_CTRL, DCP_REGAMMA_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCFE0_DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START_SEGMENT, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_SLOPE_CNTL, REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_END_CNTL1, REGAMMA_CNTLA_EXP_REGION_END, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_BASE, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_SLOPE, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
-+ OPP_SF(DCFE0_DCFE_MEM_PWR_STATUS, DCP_REGAMMA_MEM_PWR_STATE, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_LUT_WRITE_EN_MASK, REGAMMA_LUT_WRITE_EN_MASK, mask_sh),\
-+ OPP_SF(DCP0_REGAMMA_CONTROL, GRPH_REGAMMA_MODE, mask_sh),\
- OPP_SF(FMT0_FMT_DYNAMIC_EXP_CNTL, FMT_DYNAMIC_EXP_EN, mask_sh),\
- OPP_SF(FMT0_FMT_DYNAMIC_EXP_CNTL, FMT_DYNAMIC_EXP_MODE, mask_sh),\
- OPP_SF(FMT0_FMT_BIT_DEPTH_CONTROL, FMT_TRUNCATE_EN, mask_sh),\
-@@ -193,6 +257,24 @@ enum dce110_opp_reg_type {
- OPP_SF(FMT0_FMT_CONTROL, FMT_CBCR_BIT_REDUCTION_BYPASS, mask_sh)
-
- #define OPP_REG_FIELD_LIST(type) \
-+ type DCP_REGAMMA_MEM_PWR_DIS; \
-+ type DCP_LUT_MEM_PWR_DIS; \
-+ type REGAMMA_LUT_LIGHT_SLEEP_DIS; \
-+ type DCP_LUT_LIGHT_SLEEP_DIS; \
-+ type REGAMMA_CNTLA_EXP_REGION_START; \
-+ type REGAMMA_CNTLA_EXP_REGION_START_SEGMENT; \
-+ type REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE; \
-+ type REGAMMA_CNTLA_EXP_REGION_END; \
-+ type REGAMMA_CNTLA_EXP_REGION_END_BASE; \
-+ type REGAMMA_CNTLA_EXP_REGION_END_SLOPE; \
-+ type REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET; \
-+ type REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS; \
-+ type REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET; \
-+ type REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS; \
-+ type DCP_REGAMMA_MEM_PWR_STATE; \
-+ type REGAMMA_LUT_MEM_PWR_STATE; \
-+ type REGAMMA_LUT_WRITE_EN_MASK; \
-+ type GRPH_REGAMMA_MODE; \
- type FMT_DYNAMIC_EXP_EN; \
- type FMT_DYNAMIC_EXP_MODE; \
- type FMT_TRUNCATE_EN; \
-@@ -245,6 +327,25 @@ struct dce_opp_mask {
- };
-
- struct dce_opp_registers {
-+ uint32_t DCFE_MEM_PWR_CTRL;
-+ uint32_t DCFE_MEM_LIGHT_SLEEP_CNTL;
-+ uint32_t REGAMMA_CNTLA_START_CNTL;
-+ uint32_t REGAMMA_CNTLA_SLOPE_CNTL;
-+ uint32_t REGAMMA_CNTLA_END_CNTL1;
-+ uint32_t REGAMMA_CNTLA_END_CNTL2;
-+ uint32_t REGAMMA_CNTLA_REGION_0_1;
-+ uint32_t REGAMMA_CNTLA_REGION_2_3;
-+ uint32_t REGAMMA_CNTLA_REGION_4_5;
-+ uint32_t REGAMMA_CNTLA_REGION_6_7;
-+ uint32_t REGAMMA_CNTLA_REGION_8_9;
-+ uint32_t REGAMMA_CNTLA_REGION_10_11;
-+ uint32_t REGAMMA_CNTLA_REGION_12_13;
-+ uint32_t REGAMMA_CNTLA_REGION_14_15;
-+ uint32_t REGAMMA_LUT_WRITE_EN_MASK;
-+ uint32_t REGAMMA_LUT_INDEX;
-+ uint32_t DCFE_MEM_PWR_STATUS;
-+ uint32_t REGAMMA_LUT_DATA;
-+ uint32_t REGAMMA_CONTROL;
- uint32_t FMT_DYNAMIC_EXP_CNTL;
- uint32_t FMT_BIT_DEPTH_CONTROL;
- uint32_t FMT_CONTROL;
-@@ -281,7 +382,17 @@ bool dce110_opp_construct(struct dce110_opp *opp110,
-
- void dce110_opp_destroy(struct output_pixel_processor **opp);
-
-+/* REGAMMA RELATED */
-+void dce110_opp_power_on_regamma_lut(
-+ struct output_pixel_processor *opp,
-+ bool power_on);
-+
-+bool dce110_opp_program_regamma_pwl(
-+ struct output_pixel_processor *opp,
-+ const struct pwl_params *params);
-
-+void dce110_opp_set_regamma_mode(struct output_pixel_processor *opp,
-+ enum opp_regamma mode);
-
- /* FORMATTER RELATED */
- void dce110_opp_program_bit_depth_reduction(
-diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c
-index 0e36602..fb64dca4 100644
---- a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c
-+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c
-@@ -1177,244 +1177,7 @@ void dce110_opp_set_csc_default(
- default_adjust->out_color_space);
- }
-
--static void program_pwl(
-- struct dce_transform *xfm_dce,
-- const struct pwl_params *params)
--{
-- uint32_t value;
-- int retval;
--
-- {
-- uint8_t max_tries = 10;
-- uint8_t counter = 0;
--
-- /* Power on LUT memory */
-- if (REG(DCFE_MEM_PWR_CTRL))
-- REG_UPDATE(DCFE_MEM_PWR_CTRL,
-- DCP_REGAMMA_MEM_PWR_DIS, 1);
-- else
-- REG_UPDATE(DCFE_MEM_LIGHT_SLEEP_CNTL,
-- REGAMMA_LUT_LIGHT_SLEEP_DIS, 1);
--
-- while (counter < max_tries) {
-- if (REG(DCFE_MEM_PWR_STATUS)) {
-- value = REG_READ(DCFE_MEM_PWR_STATUS);
-- REG_GET(DCFE_MEM_PWR_STATUS,
-- DCP_REGAMMA_MEM_PWR_STATE,
-- &retval);
--
-- if (retval == 0)
-- break;
-- ++counter;
-- } else {
-- value = REG_READ(DCFE_MEM_LIGHT_SLEEP_CNTL);
-- REG_GET(DCFE_MEM_LIGHT_SLEEP_CNTL,
-- REGAMMA_LUT_MEM_PWR_STATE,
-- &retval);
--
-- if (retval == 0)
-- break;
-- ++counter;
-- }
-- }
--
-- if (counter == max_tries) {
-- dm_logger_write(xfm_dce->base.ctx->logger, LOG_WARNING,
-- "%s: regamma lut was not powered on "
-- "in a timely manner,"
-- " programming still proceeds\n",
-- __func__);
-- }
-- }
--
-- REG_UPDATE(REGAMMA_LUT_WRITE_EN_MASK,
-- REGAMMA_LUT_WRITE_EN_MASK, 7);
--
-- REG_WRITE(REGAMMA_LUT_INDEX, 0);
--
-- /* Program REGAMMA_LUT_DATA */
-- {
-- uint32_t i = 0;
-- const struct pwl_result_data *rgb = params->rgb_resulted;
--
-- while (i != params->hw_points_num) {
--
-- REG_WRITE(REGAMMA_LUT_DATA, rgb->red_reg);
-- REG_WRITE(REGAMMA_LUT_DATA, rgb->green_reg);
-- REG_WRITE(REGAMMA_LUT_DATA, rgb->blue_reg);
-- REG_WRITE(REGAMMA_LUT_DATA, rgb->delta_red_reg);
-- REG_WRITE(REGAMMA_LUT_DATA, rgb->delta_green_reg);
-- REG_WRITE(REGAMMA_LUT_DATA, rgb->delta_blue_reg);
--
-- ++rgb;
-- ++i;
-- }
-- }
--
-- /* we are done with DCP LUT memory; re-enable low power mode */
-- if (REG(DCFE_MEM_PWR_CTRL))
-- REG_UPDATE(DCFE_MEM_PWR_CTRL,
-- DCP_REGAMMA_MEM_PWR_DIS, 0);
-- else
-- REG_UPDATE(DCFE_MEM_LIGHT_SLEEP_CNTL,
-- REGAMMA_LUT_LIGHT_SLEEP_DIS, 0);
--}
--
--static void regamma_config_regions_and_segments(
-- struct dce_transform *xfm_dce,
-- const struct pwl_params *params)
--{
-- const struct gamma_curve *curve;
--
-- {
-- REG_SET_2(REGAMMA_CNTLA_START_CNTL, 0,
-- REGAMMA_CNTLA_EXP_REGION_START, params->arr_points[0].custom_float_x,
-- REGAMMA_CNTLA_EXP_REGION_START_SEGMENT, 0);
-- }
-- {
-- REG_SET(REGAMMA_CNTLA_SLOPE_CNTL, 0,
-- REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE, params->arr_points[0].custom_float_slope);
--
-- }
-- {
-- REG_SET(REGAMMA_CNTLA_END_CNTL1, 0,
-- REGAMMA_CNTLA_EXP_REGION_END, params->arr_points[1].custom_float_x);
-- }
-- {
-- REG_SET_2(REGAMMA_CNTLA_END_CNTL2, 0,
-- REGAMMA_CNTLA_EXP_REGION_END_BASE, params->arr_points[1].custom_float_y,
-- REGAMMA_CNTLA_EXP_REGION_END_SLOPE, params->arr_points[2].custom_float_slope);
-- }
--
-- curve = params->arr_curve_points;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_0_1, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-- }
--
-- curve += 2;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_2_3, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
--
-- }
--
-- curve += 2;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_4_5, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
--
-- }
--
-- curve += 2;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_6_7, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
--
-- }
--
-- curve += 2;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_8_9, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
--
-- }
--
-- curve += 2;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_10_11, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
--
-- }
--
-- curve += 2;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_12_13, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
--
-- }
--
-- curve += 2;
--
-- {
-- REG_SET_4(REGAMMA_CNTLA_REGION_14_15, 0,
-- REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
-- REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
-- REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
-- REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-- }
--}
--
--
--
--bool dce110_opp_program_regamma_pwl(
-- struct transform *xfm,
-- const struct pwl_params *params)
--{
-- struct dce_transform *xfm_dce = TO_DCE_TRANSFORM(xfm);
-
-- /* Setup regions */
-- regamma_config_regions_and_segments(xfm_dce, params);
--
-- /* Program PWL */
-- program_pwl(xfm_dce, params);
--
-- return true;
--}
--
--void dce110_opp_power_on_regamma_lut(
-- struct transform *xfm,
-- bool power_on)
--{
-- struct dce_transform *xfm_dce = TO_DCE_TRANSFORM(xfm);
--
-- if (REG(DCFE_MEM_PWR_CTRL))
-- REG_UPDATE_2(DCFE_MEM_PWR_CTRL,
-- DCP_REGAMMA_MEM_PWR_DIS, power_on,
-- DCP_LUT_MEM_PWR_DIS, power_on);
-- else
-- REG_UPDATE_2(DCFE_MEM_LIGHT_SLEEP_CNTL,
-- REGAMMA_LUT_LIGHT_SLEEP_DIS, power_on,
-- DCP_LUT_LIGHT_SLEEP_DIS, power_on);
--
--}
--
--void dce110_opp_set_regamma_mode(struct transform *xfm,
-- enum opp_regamma mode)
--{
-- struct dce_transform *xfm_dce = TO_DCE_TRANSFORM(xfm);
--
-- REG_SET(REGAMMA_CONTROL, 0,
-- GRPH_REGAMMA_MODE, mode);
--}
-
- static const struct transform_funcs dce_transform_funcs = {
- .transform_reset = dce_transform_reset,
-@@ -1424,9 +1187,6 @@ static const struct transform_funcs dce_transform_funcs = {
- dce_transform_set_gamut_remap,
- .opp_set_csc_adjustment = dce110_opp_set_csc_adjustment,
- .opp_set_csc_default = dce110_opp_set_csc_default,
-- .opp_power_on_regamma_lut = dce110_opp_power_on_regamma_lut,
-- .opp_program_regamma_pwl = dce110_opp_program_regamma_pwl,
-- .opp_set_regamma_mode = dce110_opp_set_regamma_mode,
- .transform_set_pixel_storage_depth =
- dce_transform_set_pixel_storage_depth,
- .transform_get_optimal_number_of_taps =
-diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.h b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.h
-index f9622ff..8632d8f 100644
---- a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.h
-+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.h
-@@ -51,22 +51,6 @@
- SRI(OUTPUT_CSC_C31_C32, DCP, id), \
- SRI(OUTPUT_CSC_C33_C34, DCP, id), \
- SRI(OUTPUT_CSC_CONTROL, DCP, id), \
-- SRI(REGAMMA_CNTLA_START_CNTL, DCP, id), \
-- SRI(REGAMMA_CNTLA_SLOPE_CNTL, DCP, id), \
-- SRI(REGAMMA_CNTLA_END_CNTL1, DCP, id), \
-- SRI(REGAMMA_CNTLA_END_CNTL2, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_0_1, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_2_3, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_4_5, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_6_7, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_8_9, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_10_11, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_12_13, DCP, id), \
-- SRI(REGAMMA_CNTLA_REGION_14_15, DCP, id), \
-- SRI(REGAMMA_LUT_WRITE_EN_MASK, DCP, id), \
-- SRI(REGAMMA_LUT_INDEX, DCP, id), \
-- SRI(REGAMMA_LUT_DATA, DCP, id), \
-- SRI(REGAMMA_CONTROL, DCP, id), \
- SRI(DENORM_CONTROL, DCP, id), \
- SRI(DCP_SPATIAL_DITHER_CNTL, DCP, id), \
- SRI(OUT_ROUND_CONTROL, DCP, id), \
-@@ -140,18 +124,6 @@
- XFM_SF(OUTPUT_CSC_C11_C12, OUTPUT_CSC_C11, mask_sh),\
- XFM_SF(OUTPUT_CSC_C11_C12, OUTPUT_CSC_C12, mask_sh),\
- XFM_SF(OUTPUT_CSC_CONTROL, OUTPUT_CSC_GRPH_MODE, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START_SEGMENT, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_SLOPE_CNTL, REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_END_CNTL1, REGAMMA_CNTLA_EXP_REGION_END, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_BASE, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_SLOPE, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, mask_sh),\
-- XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
-- XFM_SF(REGAMMA_LUT_WRITE_EN_MASK, REGAMMA_LUT_WRITE_EN_MASK, mask_sh),\
-- XFM_SF(REGAMMA_CONTROL, GRPH_REGAMMA_MODE, mask_sh),\
- XFM_SF(SCL_MODE, SCL_MODE, mask_sh), \
- XFM_SF(SCL_TAP_CONTROL, SCL_H_NUM_OF_TAPS, mask_sh), \
- XFM_SF(SCL_TAP_CONTROL, SCL_V_NUM_OF_TAPS, mask_sh), \
-@@ -189,9 +161,6 @@
- XFM_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh), \
- XFM_SF(DCFE_MEM_PWR_CTRL, SCL_COEFF_MEM_PWR_DIS, mask_sh), \
- XFM_SF(DCFE_MEM_PWR_STATUS, SCL_COEFF_MEM_PWR_STATE, mask_sh), \
-- XFM_SF(DCFE_MEM_PWR_CTRL, DCP_REGAMMA_MEM_PWR_DIS, mask_sh),\
-- XFM_SF(DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh),\
-- XFM_SF(DCFE_MEM_PWR_STATUS, DCP_REGAMMA_MEM_PWR_STATE, mask_sh),\
- XFM_SF(SCL_MODE, SCL_PSCL_EN, mask_sh)
-
- #define XFM_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh) \
-@@ -227,16 +196,6 @@
- XFM_SF(DCP0_OUTPUT_CSC_C11_C12, OUTPUT_CSC_C11, mask_sh),\
- XFM_SF(DCP0_OUTPUT_CSC_C11_C12, OUTPUT_CSC_C12, mask_sh),\
- XFM_SF(DCP0_OUTPUT_CSC_CONTROL, OUTPUT_CSC_GRPH_MODE, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START_SEGMENT, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_SLOPE_CNTL, REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_END_CNTL1, REGAMMA_CNTLA_EXP_REGION_END, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_BASE, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_SLOPE, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, mask_sh),\
-- XFM_SF(DCP0_REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- XFM_SF(SCL0_SCL_MODE, SCL_MODE, mask_sh), \
- XFM_SF(SCL0_SCL_TAP_CONTROL, SCL_H_NUM_OF_TAPS, mask_sh), \
- XFM_SF(SCL0_SCL_TAP_CONTROL, SCL_V_NUM_OF_TAPS, mask_sh), \
-@@ -306,24 +265,6 @@
- type OUTPUT_CSC_C11; \
- type OUTPUT_CSC_C12; \
- type OUTPUT_CSC_GRPH_MODE; \
-- type DCP_REGAMMA_MEM_PWR_DIS; \
-- type DCP_LUT_MEM_PWR_DIS; \
-- type REGAMMA_LUT_LIGHT_SLEEP_DIS; \
-- type DCP_LUT_LIGHT_SLEEP_DIS; \
-- type REGAMMA_CNTLA_EXP_REGION_START; \
-- type REGAMMA_CNTLA_EXP_REGION_START_SEGMENT; \
-- type REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE; \
-- type REGAMMA_CNTLA_EXP_REGION_END; \
-- type REGAMMA_CNTLA_EXP_REGION_END_BASE; \
-- type REGAMMA_CNTLA_EXP_REGION_END_SLOPE; \
-- type REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET; \
-- type REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS; \
-- type REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET; \
-- type REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS; \
-- type DCP_REGAMMA_MEM_PWR_STATE; \
-- type REGAMMA_LUT_MEM_PWR_STATE; \
-- type REGAMMA_LUT_WRITE_EN_MASK; \
-- type GRPH_REGAMMA_MODE; \
- type SCL_MODE; \
- type SCL_BYPASS_MODE; \
- type SCL_PSCL_EN; \
-@@ -384,23 +325,6 @@ struct dce_transform_registers {
- uint32_t OUTPUT_CSC_C31_C32;
- uint32_t OUTPUT_CSC_C33_C34;
- uint32_t OUTPUT_CSC_CONTROL;
-- uint32_t DCFE_MEM_LIGHT_SLEEP_CNTL;
-- uint32_t REGAMMA_CNTLA_START_CNTL;
-- uint32_t REGAMMA_CNTLA_SLOPE_CNTL;
-- uint32_t REGAMMA_CNTLA_END_CNTL1;
-- uint32_t REGAMMA_CNTLA_END_CNTL2;
-- uint32_t REGAMMA_CNTLA_REGION_0_1;
-- uint32_t REGAMMA_CNTLA_REGION_2_3;
-- uint32_t REGAMMA_CNTLA_REGION_4_5;
-- uint32_t REGAMMA_CNTLA_REGION_6_7;
-- uint32_t REGAMMA_CNTLA_REGION_8_9;
-- uint32_t REGAMMA_CNTLA_REGION_10_11;
-- uint32_t REGAMMA_CNTLA_REGION_12_13;
-- uint32_t REGAMMA_CNTLA_REGION_14_15;
-- uint32_t REGAMMA_LUT_WRITE_EN_MASK;
-- uint32_t REGAMMA_LUT_INDEX;
-- uint32_t REGAMMA_LUT_DATA;
-- uint32_t REGAMMA_CONTROL;
- uint32_t DENORM_CONTROL;
- uint32_t DCP_SPATIAL_DITHER_CNTL;
- uint32_t OUT_ROUND_CONTROL;
-@@ -488,16 +412,4 @@ void dce110_opp_set_csc_default(
- struct transform *xfm,
- const struct default_adjustment *default_adjust);
-
--/* REGAMMA RELATED */
--void dce110_opp_power_on_regamma_lut(
-- struct transform *xfm,
-- bool power_on);
--
--bool dce110_opp_program_regamma_pwl(
-- struct transform *xfm,
-- const struct pwl_params *params);
--
--void dce110_opp_set_regamma_mode(struct transform *xfm,
-- enum opp_regamma mode);
--
- #endif /* _DCE_DCE_TRANSFORM_H_ */
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
-index 5b46e77..e590f9d 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
-@@ -625,26 +625,26 @@ static bool dce110_set_output_transfer_func(
- struct pipe_ctx *pipe_ctx,
- const struct dc_stream_state *stream)
- {
-- struct transform *xfm = pipe_ctx->plane_res.xfm;
-+ struct output_pixel_processor *opp = pipe_ctx->stream_res.opp;
-
-- xfm->funcs->opp_power_on_regamma_lut(xfm, true);
-- xfm->regamma_params.hw_points_num = GAMMA_HW_POINTS_NUM;
-+ opp->funcs->opp_power_on_regamma_lut(opp, true);
-+ opp->regamma_params.hw_points_num = GAMMA_HW_POINTS_NUM;
-
- if (stream->out_transfer_func &&
- stream->out_transfer_func->type ==
- TF_TYPE_PREDEFINED &&
- stream->out_transfer_func->tf ==
- TRANSFER_FUNCTION_SRGB) {
-- xfm->funcs->opp_set_regamma_mode(xfm, OPP_REGAMMA_SRGB);
-+ opp->funcs->opp_set_regamma_mode(opp, OPP_REGAMMA_SRGB);
- } else if (dce110_translate_regamma_to_hw_format(
-- stream->out_transfer_func, &xfm->regamma_params)) {
-- xfm->funcs->opp_program_regamma_pwl(xfm, &xfm->regamma_params);
-- xfm->funcs->opp_set_regamma_mode(xfm, OPP_REGAMMA_USER);
-+ stream->out_transfer_func, &opp->regamma_params)) {
-+ opp->funcs->opp_program_regamma_pwl(opp, &opp->regamma_params);
-+ opp->funcs->opp_set_regamma_mode(opp, OPP_REGAMMA_USER);
- } else {
-- xfm->funcs->opp_set_regamma_mode(xfm, OPP_REGAMMA_BYPASS);
-+ opp->funcs->opp_set_regamma_mode(opp, OPP_REGAMMA_BYPASS);
- }
-
-- xfm->funcs->opp_power_on_regamma_lut(xfm, false);
-+ opp->funcs->opp_power_on_regamma_lut(opp, false);
-
- return true;
- }
-@@ -1044,14 +1044,14 @@ static enum dc_status apply_single_controller_ctx_to_hw(
- /* */
- dc->hwss.prog_pixclk_crtc_otg(pipe_ctx, context, dc);
-
-+ pipe_ctx->stream_res.opp->funcs->opp_set_dyn_expansion(
-+ pipe_ctx->stream_res.opp,
-+ COLOR_SPACE_YCBCR601,
-+ stream->timing.display_color_depth,
-+ pipe_ctx->stream->signal);
-+
- /* FPGA does not program backend */
- if (IS_FPGA_MAXIMUS_DC(dc->ctx->dce_environment)) {
-- pipe_ctx->stream_res.opp->funcs->opp_set_dyn_expansion(
-- pipe_ctx->stream_res.opp,
-- COLOR_SPACE_YCBCR601,
-- stream->timing.display_color_depth,
-- pipe_ctx->stream->signal);
--
- pipe_ctx->stream_res.opp->funcs->opp_program_fmt(
- pipe_ctx->stream_res.opp,
- &stream->bit_depth_params,
-@@ -1064,11 +1064,6 @@ static enum dc_status apply_single_controller_ctx_to_hw(
- BREAK_TO_DEBUGGER();
- return DC_ERROR_UNEXPECTED;
- }
-- pipe_ctx->stream_res.opp->funcs->opp_set_dyn_expansion(
-- pipe_ctx->stream_res.opp,
-- COLOR_SPACE_YCBCR601,
-- stream->timing.display_color_depth,
-- pipe_ctx->stream->signal);
-
- if (pipe_ctx->stream->signal != SIGNAL_TYPE_VIRTUAL)
- stream->sink->link->link_enc->funcs->setup(
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_regamma_v.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_regamma_v.c
-index c86105b..876445f 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_regamma_v.c
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_regamma_v.c
-@@ -29,12 +29,12 @@
- #include "dce/dce_11_0_d.h"
- #include "dce/dce_11_0_sh_mask.h"
-
--#include "dce110_transform_v.h"
-+#include "dce/dce_opp.h"
-
--static void power_on_lut(struct transform *xfm,
-+static void power_on_lut(struct output_pixel_processor *opp,
- bool power_on, bool inputgamma, bool regamma)
- {
-- uint32_t value = dm_read_reg(xfm->ctx, mmDCFEV_MEM_PWR_CTRL);
-+ uint32_t value = dm_read_reg(opp->ctx, mmDCFEV_MEM_PWR_CTRL);
- int i;
-
- if (power_on) {
-@@ -65,10 +65,10 @@ static void power_on_lut(struct transform *xfm,
- COL_MAN_GAMMA_CORR_MEM_PWR_DIS);
- }
-
-- dm_write_reg(xfm->ctx, mmDCFEV_MEM_PWR_CTRL, value);
-+ dm_write_reg(opp->ctx, mmDCFEV_MEM_PWR_CTRL, value);
-
- for (i = 0; i < 3; i++) {
-- value = dm_read_reg(xfm->ctx, mmDCFEV_MEM_PWR_CTRL);
-+ value = dm_read_reg(opp->ctx, mmDCFEV_MEM_PWR_CTRL);
- if (get_reg_field_value(value,
- DCFEV_MEM_PWR_CTRL,
- COL_MAN_INPUT_GAMMA_MEM_PWR_DIS) &&
-@@ -81,11 +81,11 @@ static void power_on_lut(struct transform *xfm,
- }
- }
-
--static void set_bypass_input_gamma(struct dce_transform *xfm_dce)
-+static void set_bypass_input_gamma(struct dce110_opp *opp110)
- {
- uint32_t value;
-
-- value = dm_read_reg(xfm_dce->base.ctx,
-+ value = dm_read_reg(opp110->base.ctx,
- mmCOL_MAN_INPUT_GAMMA_CONTROL1);
-
- set_reg_field_value(
-@@ -94,11 +94,11 @@ static void set_bypass_input_gamma(struct dce_transform *xfm_dce)
- COL_MAN_INPUT_GAMMA_CONTROL1,
- INPUT_GAMMA_MODE);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmCOL_MAN_INPUT_GAMMA_CONTROL1, value);
- }
-
--static void configure_regamma_mode(struct dce_transform *xfm_dce, uint32_t mode)
-+static void configure_regamma_mode(struct dce110_opp *opp110, uint32_t mode)
- {
- uint32_t value = 0;
-
-@@ -108,7 +108,7 @@ static void configure_regamma_mode(struct dce_transform *xfm_dce, uint32_t mode)
- GAMMA_CORR_CONTROL,
- GAMMA_CORR_MODE);
-
-- dm_write_reg(xfm_dce->base.ctx, mmGAMMA_CORR_CONTROL, 0);
-+ dm_write_reg(opp110->base.ctx, mmGAMMA_CORR_CONTROL, 0);
- }
-
- /*
-@@ -128,7 +128,7 @@ static void configure_regamma_mode(struct dce_transform *xfm_dce, uint32_t mode)
- *****************************************************************************
- */
- static void regamma_config_regions_and_segments(
-- struct dce_transform *xfm_dce, const struct pwl_params *params)
-+ struct dce110_opp *opp110, const struct pwl_params *params)
- {
- const struct gamma_curve *curve;
- uint32_t value = 0;
-@@ -146,7 +146,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_START_CNTL,
- GAMMA_CORR_CNTLA_EXP_REGION_START_SEGMENT);
-
-- dm_write_reg(xfm_dce->base.ctx, mmGAMMA_CORR_CNTLA_START_CNTL,
-+ dm_write_reg(opp110->base.ctx, mmGAMMA_CORR_CNTLA_START_CNTL,
- value);
- }
- {
-@@ -157,7 +157,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_SLOPE_CNTL,
- GAMMA_CORR_CNTLA_EXP_REGION_LINEAR_SLOPE);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_SLOPE_CNTL, value);
- }
- {
-@@ -168,7 +168,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_END_CNTL1,
- GAMMA_CORR_CNTLA_EXP_REGION_END);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_END_CNTL1, value);
- }
- {
-@@ -185,7 +185,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_END_CNTL2,
- GAMMA_CORR_CNTLA_EXP_REGION_END_SLOPE);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_END_CNTL2, value);
- }
-
-@@ -218,7 +218,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_EXP_REGION1_NUM_SEGMENTS);
-
- dm_write_reg(
-- xfm_dce->base.ctx,
-+ opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_0_1,
- value);
- }
-@@ -250,7 +250,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_REGION_2_3,
- GAMMA_CORR_CNTLA_EXP_REGION3_NUM_SEGMENTS);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_2_3,
- value);
- }
-@@ -282,7 +282,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_REGION_4_5,
- GAMMA_CORR_CNTLA_EXP_REGION5_NUM_SEGMENTS);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_4_5,
- value);
- }
-@@ -314,7 +314,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_REGION_6_7,
- GAMMA_CORR_CNTLA_EXP_REGION7_NUM_SEGMENTS);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_6_7,
- value);
- }
-@@ -346,7 +346,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_REGION_8_9,
- GAMMA_CORR_CNTLA_EXP_REGION9_NUM_SEGMENTS);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_8_9,
- value);
- }
-@@ -378,7 +378,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_REGION_10_11,
- GAMMA_CORR_CNTLA_EXP_REGION11_NUM_SEGMENTS);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_10_11,
- value);
- }
-@@ -410,7 +410,7 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_REGION_12_13,
- GAMMA_CORR_CNTLA_EXP_REGION13_NUM_SEGMENTS);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_12_13,
- value);
- }
-@@ -442,13 +442,13 @@ static void regamma_config_regions_and_segments(
- GAMMA_CORR_CNTLA_REGION_14_15,
- GAMMA_CORR_CNTLA_EXP_REGION15_NUM_SEGMENTS);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_CNTLA_REGION_14_15,
- value);
- }
- }
-
--static void program_pwl(struct dce_transform *xfm_dce,
-+static void program_pwl(struct dce110_opp *opp110,
- const struct pwl_params *params)
- {
- uint32_t value = 0;
-@@ -459,10 +459,10 @@ static void program_pwl(struct dce_transform *xfm_dce,
- GAMMA_CORR_LUT_WRITE_EN_MASK,
- GAMMA_CORR_LUT_WRITE_EN_MASK);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_LUT_WRITE_EN_MASK, value);
-
-- dm_write_reg(xfm_dce->base.ctx,
-+ dm_write_reg(opp110->base.ctx,
- mmGAMMA_CORR_LUT_INDEX, 0);
-
- /* Program REGAMMA_LUT_DATA */
-@@ -473,15 +473,15 @@ static void program_pwl(struct dce_transform *xfm_dce,
- params->rgb_resulted;
-
- while (i != params->hw_points_num) {
-- dm_write_reg(xfm_dce->base.ctx, addr, rgb->red_reg);
-- dm_write_reg(xfm_dce->base.ctx, addr, rgb->green_reg);
-- dm_write_reg(xfm_dce->base.ctx, addr, rgb->blue_reg);
-+ dm_write_reg(opp110->base.ctx, addr, rgb->red_reg);
-+ dm_write_reg(opp110->base.ctx, addr, rgb->green_reg);
-+ dm_write_reg(opp110->base.ctx, addr, rgb->blue_reg);
-
-- dm_write_reg(xfm_dce->base.ctx, addr,
-+ dm_write_reg(opp110->base.ctx, addr,
- rgb->delta_red_reg);
-- dm_write_reg(xfm_dce->base.ctx, addr,
-+ dm_write_reg(opp110->base.ctx, addr,
- rgb->delta_green_reg);
-- dm_write_reg(xfm_dce->base.ctx, addr,
-+ dm_write_reg(opp110->base.ctx, addr,
- rgb->delta_blue_reg);
-
- ++rgb;
-@@ -491,36 +491,36 @@ static void program_pwl(struct dce_transform *xfm_dce,
- }
-
- bool dce110_opp_program_regamma_pwl_v(
-- struct transform *xfm,
-+ struct output_pixel_processor *opp,
- const struct pwl_params *params)
- {
-- struct dce_transform *xfm_dce = TO_DCE_TRANSFORM(xfm);
-+ struct dce110_opp *opp110 = TO_DCE110_OPP(opp);
-
- /* Setup regions */
-- regamma_config_regions_and_segments(xfm_dce, params);
-+ regamma_config_regions_and_segments(opp110, params);
-
-- set_bypass_input_gamma(xfm_dce);
-+ set_bypass_input_gamma(opp110);
-
- /* Power on gamma LUT memory */
-- power_on_lut(xfm, true, false, true);
-+ power_on_lut(opp, true, false, true);
-
- /* Program PWL */
-- program_pwl(xfm_dce, params);
-+ program_pwl(opp110, params);
-
- /* program regamma config */
-- configure_regamma_mode(xfm_dce, 1);
-+ configure_regamma_mode(opp110, 1);
-
- /* Power return to auto back */
-- power_on_lut(xfm, false, false, true);
-+ power_on_lut(opp, false, false, true);
-
- return true;
- }
-
- void dce110_opp_power_on_regamma_lut_v(
-- struct transform *xfm,
-+ struct output_pixel_processor *opp,
- bool power_on)
- {
-- uint32_t value = dm_read_reg(xfm->ctx, mmDCFEV_MEM_PWR_CTRL);
-+ uint32_t value = dm_read_reg(opp->ctx, mmDCFEV_MEM_PWR_CTRL);
-
- set_reg_field_value(
- value,
-@@ -546,11 +546,11 @@ void dce110_opp_power_on_regamma_lut_v(
- DCFEV_MEM_PWR_CTRL,
- COL_MAN_INPUT_GAMMA_MEM_PWR_DIS);
-
-- dm_write_reg(xfm->ctx, mmDCFEV_MEM_PWR_CTRL, value);
-+ dm_write_reg(opp->ctx, mmDCFEV_MEM_PWR_CTRL, value);
- }
-
- void dce110_opp_set_regamma_mode_v(
-- struct transform *xfm,
-+ struct output_pixel_processor *opp,
- enum opp_regamma mode)
- {
- // TODO: need to implement the function
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.c
-index 69d6a11..24d9032f 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.c
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.c
-@@ -37,7 +37,10 @@
- /*****************************************/
-
- static const struct opp_funcs funcs = {
-+ .opp_power_on_regamma_lut = dce110_opp_power_on_regamma_lut_v,
-+ .opp_program_regamma_pwl = dce110_opp_program_regamma_pwl_v,
- .opp_set_dyn_expansion = dce110_opp_set_dyn_expansion,
-+ .opp_set_regamma_mode = dce110_opp_set_regamma_mode_v,
- .opp_destroy = dce110_opp_destroy,
- .opp_program_fmt = dce110_opp_program_fmt,
- .opp_program_bit_depth_reduction =
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.h b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.h
-index 269c1a8..7deaa4f 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.h
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_v.h
-@@ -35,5 +35,16 @@ bool dce110_opp_v_construct(struct dce110_opp *opp110,
- /* underlay callbacks */
-
-
-+bool dce110_opp_program_regamma_pwl_v(
-+ struct output_pixel_processor *opp,
-+ const struct pwl_params *params);
-+
-+void dce110_opp_power_on_regamma_lut_v(
-+ struct output_pixel_processor *opp,
-+ bool power_on);
-+
-+void dce110_opp_set_regamma_mode_v(
-+ struct output_pixel_processor *opp,
-+ enum opp_regamma mode);
-
- #endif /* __DC_OPP_DCE110_V_H__ */
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.c
-index c84823a..f655145 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.c
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.c
-@@ -683,9 +683,6 @@ static const struct transform_funcs dce110_xfmv_funcs = {
- dce110_xfmv_set_gamut_remap,
- .opp_set_csc_default = dce110_opp_v_set_csc_default,
- .opp_set_csc_adjustment = dce110_opp_v_set_csc_adjustment,
-- .opp_power_on_regamma_lut = dce110_opp_power_on_regamma_lut_v,
-- .opp_program_regamma_pwl = dce110_opp_program_regamma_pwl_v,
-- .opp_set_regamma_mode = dce110_opp_set_regamma_mode_v,
- .transform_set_pixel_storage_depth =
- dce110_xfmv_set_pixel_storage_depth,
- .transform_get_optimal_number_of_taps =
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.h b/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.h
-index eeed3b9..b7f8fdb 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.h
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_transform_v.h
-@@ -41,18 +41,4 @@ void dce110_opp_v_set_csc_default(
- void dce110_opp_v_set_csc_adjustment(
- struct transform *xfm,
- const struct out_csc_color_matrix *tbl_entry);
--
--
--bool dce110_opp_program_regamma_pwl_v(
-- struct transform *xfm,
-- const struct pwl_params *params);
--
--void dce110_opp_power_on_regamma_lut_v(
-- struct transform *xfm,
-- bool power_on);
--
--void dce110_opp_set_regamma_mode_v(
-- struct transform *xfm,
-- enum opp_regamma mode);
--
- #endif
-diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/opp.h b/drivers/gpu/drm/amd/display/dc/inc/hw/opp.h
-index 75adb8f..0a82a30 100644
---- a/drivers/gpu/drm/amd/display/dc/inc/hw/opp.h
-+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/opp.h
-@@ -249,7 +249,24 @@ enum ovl_csc_adjust_item {
- };
-
- struct opp_funcs {
-+ void (*opp_power_on_regamma_lut)(
-+ struct output_pixel_processor *opp,
-+ bool power_on);
-+
-+ bool (*opp_program_regamma_pwl)(
-+ struct output_pixel_processor *opp,
-+ const struct pwl_params *params);
-+
-+ void (*opp_set_regamma_mode)(struct output_pixel_processor *opp,
-+ enum opp_regamma mode);
-
-+ void (*opp_set_csc_adjustment)(
-+ struct output_pixel_processor *opp,
-+ const struct out_csc_color_matrix *tbl_entry);
-+
-+ void (*opp_set_csc_default)(
-+ struct output_pixel_processor *opp,
-+ const struct default_adjustment *default_adjust);
-
- /* FORMATTER RELATED */
-
---
-2.7.4
-