summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/display/dc/dcn30
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/display/dc/dcn30')
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/Makefile13
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c180
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.h78
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.c103
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.h81
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.c259
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.h85
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.c902
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.h327
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.c1527
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.h642
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp_cm.c461
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.c287
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.h908
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb_cm.c395
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c473
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.h136
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c532
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.h302
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.c1558
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.h1098
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn30/dcn30_vpg.h23
22 files changed, 16 insertions, 10354 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/Makefile b/drivers/gpu/drm/amd/display/dc/dcn30/Makefile
index b5b2aa3b3783..b17277de0340 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn30/Makefile
+++ b/drivers/gpu/drm/amd/display/dc/dcn30/Makefile
@@ -23,21 +23,10 @@
#
#
-DCN30 := dcn30_hubbub.o \
- dcn30_hubp.o \
- dcn30_dpp.o \
- dcn30_dccg.o \
- dcn30_mpc.o dcn30_vpg.o \
+DCN30 := dcn30_vpg.o \
dcn30_afmt.o \
- dcn30_dio_stream_encoder.o \
- dcn30_dwb.o \
- dcn30_dpp_cm.o \
- dcn30_dwb_cm.o \
dcn30_cm_common.o \
dcn30_mmhubbub.o \
- dcn30_dio_link_encoder.o
-
-
AMD_DAL_DCN30 = $(addprefix $(AMDDALPATH)/dc/dcn30/,$(DCN30))
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c
index ddb344056d40..0690c346f2c5 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c
@@ -26,9 +26,9 @@
#include "dm_services.h"
#include "core_types.h"
#include "reg_helper.h"
-#include "dcn30_dpp.h"
+#include "dcn30/dcn30_dpp.h"
#include "basics/conversion.h"
-#include "dcn30_cm_common.h"
+#include "dcn30/dcn30_cm_common.h"
#include "custom_float.h"
#define REG(reg) reg
@@ -140,23 +140,18 @@ bool cm3_helper_translate_curve_to_hw_format(
region_start = -MAX_LOW_POINT;
region_end = NUMBER_REGIONS - MAX_LOW_POINT;
} else {
- /* 11 segments
- * segment is from 2^-10 to 2^0
+ /* 13 segments
+ * segment is from 2^-12 to 2^0
* There are less than 256 points, for optimization
*/
- seg_distr[0] = 3;
- seg_distr[1] = 4;
- seg_distr[2] = 4;
- seg_distr[3] = 4;
- seg_distr[4] = 4;
- seg_distr[5] = 4;
- seg_distr[6] = 4;
- seg_distr[7] = 4;
- seg_distr[8] = 4;
- seg_distr[9] = 4;
- seg_distr[10] = 1;
-
- region_start = -10;
+ const uint8_t SEG_COUNT = 12;
+
+ for (i = 0; i < SEG_COUNT; i++)
+ seg_distr[i] = 4;
+
+ seg_distr[SEG_COUNT] = 1;
+
+ region_start = -SEG_COUNT;
region_end = 1;
}
@@ -177,6 +172,8 @@ bool cm3_helper_translate_curve_to_hw_format(
i += increment) {
if (j == hw_points)
break;
+ if (i >= TRANSFER_FUNC_POINTS)
+ return false;
rgb_resulted[j].red = output_tf->tf_pts.red[i];
rgb_resulted[j].green = output_tf->tf_pts.green[i];
rgb_resulted[j].blue = output_tf->tf_pts.blue[i];
@@ -283,155 +280,6 @@ bool cm3_helper_translate_curve_to_hw_format(
return true;
}
-#define NUM_DEGAMMA_REGIONS 12
-
-
-bool cm3_helper_translate_curve_to_degamma_hw_format(
- const struct dc_transfer_func *output_tf,
- struct pwl_params *lut_params)
-{
- struct curve_points3 *corner_points;
- struct pwl_result_data *rgb_resulted;
- struct pwl_result_data *rgb;
- struct pwl_result_data *rgb_plus_1;
-
- int32_t region_start, region_end;
- int32_t i;
- uint32_t j, k, seg_distr[MAX_REGIONS_NUMBER], increment, start_index, hw_points;
-
- if (output_tf == NULL || lut_params == NULL || output_tf->type == TF_TYPE_BYPASS)
- return false;
-
- corner_points = lut_params->corner_points;
- rgb_resulted = lut_params->rgb_resulted;
- hw_points = 0;
-
- memset(lut_params, 0, sizeof(struct pwl_params));
- memset(seg_distr, 0, sizeof(seg_distr));
-
- region_start = -NUM_DEGAMMA_REGIONS;
- region_end = 0;
-
-
- for (i = region_end - region_start; i < MAX_REGIONS_NUMBER ; i++)
- seg_distr[i] = -1;
- /* 12 segments
- * segments are from 2^-12 to 0
- */
- for (i = 0; i < NUM_DEGAMMA_REGIONS ; i++)
- seg_distr[i] = 4;
-
- for (k = 0; k < MAX_REGIONS_NUMBER; k++) {
- if (seg_distr[k] != -1)
- hw_points += (1 << seg_distr[k]);
- }
-
- j = 0;
- for (k = 0; k < (region_end - region_start); k++) {
- increment = NUMBER_SW_SEGMENTS / (1 << seg_distr[k]);
- start_index = (region_start + k + MAX_LOW_POINT) *
- NUMBER_SW_SEGMENTS;
- for (i = start_index; i < start_index + NUMBER_SW_SEGMENTS;
- i += increment) {
- if (j == hw_points - 1)
- break;
- rgb_resulted[j].red = output_tf->tf_pts.red[i];
- rgb_resulted[j].green = output_tf->tf_pts.green[i];
- rgb_resulted[j].blue = output_tf->tf_pts.blue[i];
- j++;
- }
- }
-
- /* last point */
- start_index = (region_end + MAX_LOW_POINT) * NUMBER_SW_SEGMENTS;
- rgb_resulted[hw_points - 1].red = output_tf->tf_pts.red[start_index];
- rgb_resulted[hw_points - 1].green = output_tf->tf_pts.green[start_index];
- rgb_resulted[hw_points - 1].blue = output_tf->tf_pts.blue[start_index];
-
- corner_points[0].red.x = dc_fixpt_pow(dc_fixpt_from_int(2),
- dc_fixpt_from_int(region_start));
- corner_points[0].green.x = corner_points[0].red.x;
- corner_points[0].blue.x = corner_points[0].red.x;
- corner_points[1].red.x = dc_fixpt_pow(dc_fixpt_from_int(2),
- dc_fixpt_from_int(region_end));
- corner_points[1].green.x = corner_points[1].red.x;
- corner_points[1].blue.x = corner_points[1].red.x;
-
- corner_points[0].red.y = rgb_resulted[0].red;
- corner_points[0].green.y = rgb_resulted[0].green;
- corner_points[0].blue.y = rgb_resulted[0].blue;
-
- /* see comment above, m_arrPoints[1].y should be the Y value for the
- * region end (m_numOfHwPoints), not last HW point(m_numOfHwPoints - 1)
- */
- corner_points[1].red.y = rgb_resulted[hw_points - 1].red;
- corner_points[1].green.y = rgb_resulted[hw_points - 1].green;
- corner_points[1].blue.y = rgb_resulted[hw_points - 1].blue;
- corner_points[1].red.slope = dc_fixpt_zero;
- corner_points[1].green.slope = dc_fixpt_zero;
- corner_points[1].blue.slope = dc_fixpt_zero;
-
- if (output_tf->tf == TRANSFER_FUNCTION_PQ) {
- /* for PQ, we want to have a straight line from last HW X point,
- * and the slope to be such that we hit 1.0 at 10000 nits.
- */
- const struct fixed31_32 end_value =
- dc_fixpt_from_int(125);
-
- corner_points[1].red.slope = dc_fixpt_div(
- dc_fixpt_sub(dc_fixpt_one, corner_points[1].red.y),
- dc_fixpt_sub(end_value, corner_points[1].red.x));
- corner_points[1].green.slope = dc_fixpt_div(
- dc_fixpt_sub(dc_fixpt_one, corner_points[1].green.y),
- dc_fixpt_sub(end_value, corner_points[1].green.x));
- corner_points[1].blue.slope = dc_fixpt_div(
- dc_fixpt_sub(dc_fixpt_one, corner_points[1].blue.y),
- dc_fixpt_sub(end_value, corner_points[1].blue.x));
- }
-
- lut_params->hw_points_num = hw_points;
-
- k = 0;
- for (i = 1; i < MAX_REGIONS_NUMBER; i++) {
- if (seg_distr[k] != -1) {
- lut_params->arr_curve_points[k].segments_num =
- seg_distr[k];
- lut_params->arr_curve_points[i].offset =
- lut_params->arr_curve_points[k].offset + (1 << seg_distr[k]);
- }
- k++;
- }
-
- if (seg_distr[k] != -1)
- lut_params->arr_curve_points[k].segments_num = seg_distr[k];
-
- rgb = rgb_resulted;
- rgb_plus_1 = rgb_resulted + 1;
-
- i = 1;
- while (i != hw_points + 1) {
- if (dc_fixpt_lt(rgb_plus_1->red, rgb->red))
- rgb_plus_1->red = rgb->red;
- if (dc_fixpt_lt(rgb_plus_1->green, rgb->green))
- rgb_plus_1->green = rgb->green;
- if (dc_fixpt_lt(rgb_plus_1->blue, rgb->blue))
- rgb_plus_1->blue = rgb->blue;
-
- rgb->delta_red = dc_fixpt_sub(rgb_plus_1->red, rgb->red);
- rgb->delta_green = dc_fixpt_sub(rgb_plus_1->green, rgb->green);
- rgb->delta_blue = dc_fixpt_sub(rgb_plus_1->blue, rgb->blue);
-
- ++rgb_plus_1;
- ++rgb;
- ++i;
- }
- cm3_helper_convert_to_custom_float(rgb_resulted,
- lut_params->corner_points,
- hw_points, false);
-
- return true;
-}
-
bool cm3_helper_convert_to_custom_float(
struct pwl_result_data *rgb_resulted,
struct curve_points3 *corner_points,
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.h
deleted file mode 100644
index bd98b327a6c7..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "dcn10/dcn10_cm_common.h"
-
-#ifndef __DAL_DCN30_CM_COMMON_H__
-#define __DAL_DCN30_CM_COMMON_H__
-
-#define TF_HELPER_REG_FIELD_LIST_DCN3(type) \
- TF_HELPER_REG_FIELD_LIST(type);\
- type field_region_start_base;\
- type field_offset
-
-struct DCN3_xfer_func_shift {
- TF_HELPER_REG_FIELD_LIST_DCN3(uint8_t);
-};
-
-struct DCN3_xfer_func_mask {
- TF_HELPER_REG_FIELD_LIST_DCN3(uint32_t);
-};
-
-struct dcn3_xfer_func_reg {
- struct DCN3_xfer_func_shift shifts;
- struct DCN3_xfer_func_mask masks;
-
- TF_HELPER_REG_LIST;
- uint32_t offset_b;
- uint32_t offset_g;
- uint32_t offset_r;
- uint32_t start_base_cntl_b;
- uint32_t start_base_cntl_g;
- uint32_t start_base_cntl_r;
-};
-
-void cm_helper_program_gamcor_xfer_func(
- struct dc_context *ctx,
- const struct pwl_params *params,
- const struct dcn3_xfer_func_reg *reg);
-
-bool cm3_helper_translate_curve_to_hw_format(
- const struct dc_transfer_func *output_tf,
- struct pwl_params *lut_params, bool fixpoint);
-
-bool cm3_helper_translate_curve_to_degamma_hw_format(
- const struct dc_transfer_func *output_tf,
- struct pwl_params *lut_params);
-
-bool cm3_helper_convert_to_custom_float(
- struct pwl_result_data *rgb_resulted,
- struct curve_points3 *corner_points,
- uint32_t hw_points_num,
- bool fixpoint);
-
-bool is_rgb_equal(const struct pwl_result_data *rgb, uint32_t num);
-
-#endif
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.c
deleted file mode 100644
index d445dfefc047..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "reg_helper.h"
-#include "core_types.h"
-#include "dcn30_dccg.h"
-
-#define TO_DCN_DCCG(dccg)\
- container_of(dccg, struct dcn_dccg, base)
-
-#define REG(reg) \
- (dccg_dcn->regs->reg)
-
-#undef FN
-#define FN(reg_name, field_name) \
- dccg_dcn->dccg_shift->field_name, dccg_dcn->dccg_mask->field_name
-
-#define CTX \
- dccg_dcn->base.ctx
-#define DC_LOGGER \
- dccg->ctx->logger
-
-
-static const struct dccg_funcs dccg3_funcs = {
- .update_dpp_dto = dccg2_update_dpp_dto,
- .get_dccg_ref_freq = dccg2_get_dccg_ref_freq,
- .set_fifo_errdet_ovr_en = dccg2_set_fifo_errdet_ovr_en,
- .otg_add_pixel = dccg2_otg_add_pixel,
- .otg_drop_pixel = dccg2_otg_drop_pixel,
- .dccg_init = dccg2_init
-};
-
-struct dccg *dccg3_create(
- struct dc_context *ctx,
- const struct dccg_registers *regs,
- const struct dccg_shift *dccg_shift,
- const struct dccg_mask *dccg_mask)
-{
- struct dcn_dccg *dccg_dcn = kzalloc(sizeof(*dccg_dcn), GFP_KERNEL);
- struct dccg *base;
-
- if (dccg_dcn == NULL) {
- BREAK_TO_DEBUGGER();
- return NULL;
- }
-
- base = &dccg_dcn->base;
- base->ctx = ctx;
- base->funcs = &dccg3_funcs;
-
- dccg_dcn->regs = regs;
- dccg_dcn->dccg_shift = dccg_shift;
- dccg_dcn->dccg_mask = dccg_mask;
-
- return &dccg_dcn->base;
-}
-
-struct dccg *dccg30_create(
- struct dc_context *ctx,
- const struct dccg_registers *regs,
- const struct dccg_shift *dccg_shift,
- const struct dccg_mask *dccg_mask)
-{
- struct dcn_dccg *dccg_dcn = kzalloc(sizeof(*dccg_dcn), GFP_KERNEL);
- struct dccg *base;
-
- if (dccg_dcn == NULL) {
- BREAK_TO_DEBUGGER();
- return NULL;
- }
-
- base = &dccg_dcn->base;
- base->ctx = ctx;
- base->funcs = &dccg3_funcs;
-
- dccg_dcn->regs = regs;
- dccg_dcn->dccg_shift = dccg_shift;
- dccg_dcn->dccg_mask = dccg_mask;
-
- return &dccg_dcn->base;
-}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.h
deleted file mode 100644
index 35a613bb08bf..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dccg.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DCN30_DCCG_H__
-#define __DCN30_DCCG_H__
-
-#include "dcn20/dcn20_dccg.h"
-
-
-#define DCCG_REG_LIST_DCN3AG() \
- DCCG_COMMON_REG_LIST_DCN_BASE(),\
- SR(PHYASYMCLK_CLOCK_CNTL),\
- SR(PHYBSYMCLK_CLOCK_CNTL),\
- SR(PHYCSYMCLK_CLOCK_CNTL)
-
-
-#define DCCG_REG_LIST_DCN30() \
- DCCG_REG_LIST_DCN2(),\
- DCCG_SRII(PIXEL_RATE_CNTL, OTG, 2),\
- DCCG_SRII(PIXEL_RATE_CNTL, OTG, 3),\
- DCCG_SRII(PIXEL_RATE_CNTL, OTG, 4),\
- DCCG_SRII(PIXEL_RATE_CNTL, OTG, 5),\
- SR(PHYASYMCLK_CLOCK_CNTL),\
- SR(PHYBSYMCLK_CLOCK_CNTL),\
- SR(PHYCSYMCLK_CLOCK_CNTL)
-
-#define DCCG_MASK_SH_LIST_DCN3AG(mask_sh) \
- DCCG_MASK_SH_LIST_DCN2_1(mask_sh),\
- DCCG_SF(HDMICHARCLK0_CLOCK_CNTL, HDMICHARCLK0_EN, mask_sh),\
- DCCG_SF(HDMICHARCLK0_CLOCK_CNTL, HDMICHARCLK0_SRC_SEL, mask_sh),\
- DCCG_SF(PHYASYMCLK_CLOCK_CNTL, PHYASYMCLK_FORCE_EN, mask_sh),\
- DCCG_SF(PHYASYMCLK_CLOCK_CNTL, PHYASYMCLK_FORCE_SRC_SEL, mask_sh),\
- DCCG_SF(PHYBSYMCLK_CLOCK_CNTL, PHYBSYMCLK_FORCE_EN, mask_sh),\
- DCCG_SF(PHYBSYMCLK_CLOCK_CNTL, PHYBSYMCLK_FORCE_SRC_SEL, mask_sh),\
- DCCG_SF(PHYCSYMCLK_CLOCK_CNTL, PHYCSYMCLK_FORCE_EN, mask_sh),\
- DCCG_SF(PHYCSYMCLK_CLOCK_CNTL, PHYCSYMCLK_FORCE_SRC_SEL, mask_sh)
-
-#define DCCG_MASK_SH_LIST_DCN3(mask_sh) \
- DCCG_MASK_SH_LIST_DCN2(mask_sh),\
- DCCG_SF(PHYASYMCLK_CLOCK_CNTL, PHYASYMCLK_FORCE_EN, mask_sh),\
- DCCG_SF(PHYASYMCLK_CLOCK_CNTL, PHYASYMCLK_FORCE_SRC_SEL, mask_sh),\
- DCCG_SF(PHYBSYMCLK_CLOCK_CNTL, PHYBSYMCLK_FORCE_EN, mask_sh),\
- DCCG_SF(PHYBSYMCLK_CLOCK_CNTL, PHYBSYMCLK_FORCE_SRC_SEL, mask_sh),\
- DCCG_SF(PHYCSYMCLK_CLOCK_CNTL, PHYCSYMCLK_FORCE_EN, mask_sh),\
- DCCG_SF(PHYCSYMCLK_CLOCK_CNTL, PHYCSYMCLK_FORCE_SRC_SEL, mask_sh),\
-
-struct dccg *dccg3_create(
- struct dc_context *ctx,
- const struct dccg_registers *regs,
- const struct dccg_shift *dccg_shift,
- const struct dccg_mask *dccg_mask);
-
-struct dccg *dccg30_create(
- struct dc_context *ctx,
- const struct dccg_registers *regs,
- const struct dccg_shift *dccg_shift,
- const struct dccg_mask *dccg_mask);
-
-#endif //__DCN30_DCCG_H__
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.c
deleted file mode 100644
index 1fb8fd7afc95..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "reg_helper.h"
-
-#include "core_types.h"
-#include "link_encoder.h"
-#include "dcn30_dio_link_encoder.h"
-#include "stream_encoder.h"
-#include "dc_bios_types.h"
-/* #include "dcn3ag/dcn3ag_phy_fw.h" */
-
-#include "gpio_service_interface.h"
-
-#define CTX \
- enc10->base.ctx
-#define DC_LOGGER \
- enc10->base.ctx->logger
-
-#define REG(reg)\
- (enc10->link_regs->reg)
-
-#undef FN
-#define FN(reg_name, field_name) \
- enc10->link_shift->field_name, enc10->link_mask->field_name
-
-#define IND_REG(index) \
- (enc10->link_regs->index)
-
-
-bool dcn30_link_encoder_validate_output_with_stream(
- struct link_encoder *enc,
- const struct dc_stream_state *stream)
-{
- return dcn10_link_encoder_validate_output_with_stream(enc, stream);
-}
-
-static const struct link_encoder_funcs dcn30_link_enc_funcs = {
- .read_state = link_enc2_read_state,
- .validate_output_with_stream =
- dcn30_link_encoder_validate_output_with_stream,
- .hw_init = enc3_hw_init,
- .setup = dcn10_link_encoder_setup,
- .enable_tmds_output = dcn10_link_encoder_enable_tmds_output,
- .enable_dp_output = dcn20_link_encoder_enable_dp_output,
- .enable_dp_mst_output = dcn10_link_encoder_enable_dp_mst_output,
- .disable_output = dcn10_link_encoder_disable_output,
- .dp_set_lane_settings = dcn10_link_encoder_dp_set_lane_settings,
- .dp_set_phy_pattern = dcn10_link_encoder_dp_set_phy_pattern,
- .update_mst_stream_allocation_table =
- dcn10_link_encoder_update_mst_stream_allocation_table,
- .psr_program_dp_dphy_fast_training =
- dcn10_psr_program_dp_dphy_fast_training,
- .psr_program_secondary_packet = dcn10_psr_program_secondary_packet,
- .connect_dig_be_to_fe = dcn10_link_encoder_connect_dig_be_to_fe,
- .enable_hpd = dcn10_link_encoder_enable_hpd,
- .disable_hpd = dcn10_link_encoder_disable_hpd,
- .is_dig_enabled = dcn10_is_dig_enabled,
- .destroy = dcn10_link_encoder_destroy,
- .fec_set_enable = enc2_fec_set_enable,
- .fec_set_ready = enc2_fec_set_ready,
- .fec_is_active = enc2_fec_is_active,
- .get_dig_frontend = dcn10_get_dig_frontend,
- .get_dig_mode = dcn10_get_dig_mode,
- .is_in_alt_mode = dcn20_link_encoder_is_in_alt_mode,
- .get_max_link_cap = dcn20_link_encoder_get_max_link_cap,
-};
-
-void dcn30_link_encoder_construct(
- struct dcn20_link_encoder *enc20,
- const struct encoder_init_data *init_data,
- const struct encoder_feature_support *enc_features,
- const struct dcn10_link_enc_registers *link_regs,
- const struct dcn10_link_enc_aux_registers *aux_regs,
- const struct dcn10_link_enc_hpd_registers *hpd_regs,
- const struct dcn10_link_enc_shift *link_shift,
- const struct dcn10_link_enc_mask *link_mask)
-{
- struct bp_encoder_cap_info bp_cap_info = {0};
- const struct dc_vbios_funcs *bp_funcs = init_data->ctx->dc_bios->funcs;
- enum bp_result result = BP_RESULT_OK;
- struct dcn10_link_encoder *enc10 = &enc20->enc10;
-
- enc10->base.funcs = &dcn30_link_enc_funcs;
- enc10->base.ctx = init_data->ctx;
- enc10->base.id = init_data->encoder;
-
- enc10->base.hpd_source = init_data->hpd_source;
- enc10->base.connector = init_data->connector;
-
- enc10->base.preferred_engine = ENGINE_ID_UNKNOWN;
-
- enc10->base.features = *enc_features;
-
- enc10->base.transmitter = init_data->transmitter;
-
- /* set the flag to indicate whether driver poll the I2C data pin
- * while doing the DP sink detect
- */
-
-/* if (dal_adapter_service_is_feature_supported(as,
- FEATURE_DP_SINK_DETECT_POLL_DATA_PIN))
- enc10->base.features.flags.bits.
- DP_SINK_DETECT_POLL_DATA_PIN = true;*/
-
- enc10->base.output_signals =
- SIGNAL_TYPE_DVI_SINGLE_LINK |
- SIGNAL_TYPE_DVI_DUAL_LINK |
- SIGNAL_TYPE_LVDS |
- SIGNAL_TYPE_DISPLAY_PORT |
- SIGNAL_TYPE_DISPLAY_PORT_MST |
- SIGNAL_TYPE_EDP |
- SIGNAL_TYPE_HDMI_TYPE_A;
-
- /* For DCE 8.0 and 8.1, by design, UNIPHY is hardwired to DIG_BE.
- * SW always assign DIG_FE 1:1 mapped to DIG_FE for non-MST UNIPHY.
- * SW assign DIG_FE to non-MST UNIPHY first and MST last. So prefer
- * DIG is per UNIPHY and used by SST DP, eDP, HDMI, DVI and LVDS.
- * Prefer DIG assignment is decided by board design.
- * For DCE 8.0, there are only max 6 UNIPHYs, we assume board design
- * and VBIOS will filter out 7 UNIPHY for DCE 8.0.
- * By this, adding DIGG should not hurt DCE 8.0.
- * This will let DCE 8.1 share DCE 8.0 as much as possible
- */
-
- enc10->link_regs = link_regs;
- enc10->aux_regs = aux_regs;
- enc10->hpd_regs = hpd_regs;
- enc10->link_shift = link_shift;
- enc10->link_mask = link_mask;
-
- switch (enc10->base.transmitter) {
- case TRANSMITTER_UNIPHY_A:
- enc10->base.preferred_engine = ENGINE_ID_DIGA;
- break;
- case TRANSMITTER_UNIPHY_B:
- enc10->base.preferred_engine = ENGINE_ID_DIGB;
- break;
- case TRANSMITTER_UNIPHY_C:
- enc10->base.preferred_engine = ENGINE_ID_DIGC;
- break;
- case TRANSMITTER_UNIPHY_D:
- enc10->base.preferred_engine = ENGINE_ID_DIGD;
- break;
- case TRANSMITTER_UNIPHY_E:
- enc10->base.preferred_engine = ENGINE_ID_DIGE;
- break;
- case TRANSMITTER_UNIPHY_F:
- enc10->base.preferred_engine = ENGINE_ID_DIGF;
- break;
- case TRANSMITTER_UNIPHY_G:
- enc10->base.preferred_engine = ENGINE_ID_DIGG;
- break;
- default:
- ASSERT_CRITICAL(false);
- enc10->base.preferred_engine = ENGINE_ID_UNKNOWN;
- }
-
- /* default to one to mirror Windows behavior */
- enc10->base.features.flags.bits.HDMI_6GB_EN = 1;
-
- result = bp_funcs->get_encoder_cap_info(enc10->base.ctx->dc_bios,
- enc10->base.id, &bp_cap_info);
-
- /* Override features with DCE-specific values */
- if (result == BP_RESULT_OK) {
- enc10->base.features.flags.bits.IS_HBR2_CAPABLE =
- bp_cap_info.DP_HBR2_EN;
- enc10->base.features.flags.bits.IS_HBR3_CAPABLE =
- bp_cap_info.DP_HBR3_EN;
- enc10->base.features.flags.bits.HDMI_6GB_EN = bp_cap_info.HDMI_6GB_EN;
- enc10->base.features.flags.bits.IS_DP2_CAPABLE = bp_cap_info.IS_DP2_CAPABLE;
- enc10->base.features.flags.bits.IS_UHBR10_CAPABLE = bp_cap_info.DP_UHBR10_EN;
- enc10->base.features.flags.bits.IS_UHBR13_5_CAPABLE = bp_cap_info.DP_UHBR13_5_EN;
- enc10->base.features.flags.bits.IS_UHBR20_CAPABLE = bp_cap_info.DP_UHBR20_EN;
- enc10->base.features.flags.bits.DP_IS_USB_C =
- bp_cap_info.DP_IS_USB_C;
- } else {
- DC_LOG_WARNING("%s: Failed to get encoder_cap_info from VBIOS with error code %d!\n",
- __func__,
- result);
- }
- if (enc10->base.ctx->dc->debug.hdmi20_disable) {
- enc10->base.features.flags.bits.HDMI_6GB_EN = 0;
- }
-}
-
-#define AUX_REG(reg)\
- (enc10->aux_regs->reg)
-
-#define AUX_REG_READ(reg_name) \
- dm_read_reg(CTX, AUX_REG(reg_name))
-
-#define AUX_REG_WRITE(reg_name, val) \
- dm_write_reg(CTX, AUX_REG(reg_name), val)
-void enc3_hw_init(struct link_encoder *enc)
-{
- struct dcn10_link_encoder *enc10 = TO_DCN10_LINK_ENC(enc);
-
-/*
- 00 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__1to2 : 1/2
- 01 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__3to4 : 3/4
- 02 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__7to8 : 7/8
- 03 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__15to16 : 15/16
- 04 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__31to32 : 31/32
- 05 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__63to64 : 63/64
- 06 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__127to128 : 127/128
- 07 - DP_AUX_DPHY_RX_DETECTION_THRESHOLD__255to256 : 255/256
-*/
-
-/*
- AUX_REG_UPDATE_5(AUX_DPHY_RX_CONTROL0,
- AUX_RX_START_WINDOW = 1 [6:4]
- AUX_RX_RECEIVE_WINDOW = 1 default is 2 [10:8]
- AUX_RX_HALF_SYM_DETECT_LEN = 1 [13:12] default is 1
- AUX_RX_TRANSITION_FILTER_EN = 1 [16] default is 1
- AUX_RX_ALLOW_BELOW_THRESHOLD_PHASE_DETECT [17] is 0 default is 0
- AUX_RX_ALLOW_BELOW_THRESHOLD_START [18] is 1 default is 1
- AUX_RX_ALLOW_BELOW_THRESHOLD_STOP [19] is 1 default is 1
- AUX_RX_PHASE_DETECT_LEN, [21,20] = 0x3 default is 3
- AUX_RX_DETECTION_THRESHOLD [30:28] = 1
-*/
- AUX_REG_WRITE(AUX_DPHY_RX_CONTROL0, 0x103d1110);
-
- AUX_REG_WRITE(AUX_DPHY_TX_CONTROL, 0x21c7a);
-
- //AUX_DPHY_TX_REF_CONTROL'AUX_TX_REF_DIV HW default is 0x32;
- // Set AUX_TX_REF_DIV Divider to generate 2 MHz reference from refclk
- // 27MHz -> 0xd
- // 100MHz -> 0x32
- // 48MHz -> 0x18
-
- // Set TMDS_CTL0 to 1. This is a legacy setting.
- REG_UPDATE(TMDS_CTL_BITS, TMDS_CTL0, 1);
-
- dcn10_aux_initialize(enc10);
-}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.h
deleted file mode 100644
index f2d90f2b8bf1..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_link_encoder.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DC_LINK_ENCODER__DCN30_H__
-#define __DC_LINK_ENCODER__DCN30_H__
-
-#include "dcn20/dcn20_link_encoder.h"
-
-#define LE_DCN3_REG_LIST(id)\
- SRI(DIG_BE_CNTL, DIG, id), \
- SRI(DIG_BE_EN_CNTL, DIG, id), \
- SRI(TMDS_CTL_BITS, DIG, id), \
- SRI(TMDS_DCBALANCER_CONTROL, DIG, id), \
- SRI(DP_CONFIG, DP, id), \
- SRI(DP_DPHY_CNTL, DP, id), \
- SRI(DP_DPHY_PRBS_CNTL, DP, id), \
- SRI(DP_DPHY_SCRAM_CNTL, DP, id),\
- SRI(DP_DPHY_SYM0, DP, id), \
- SRI(DP_DPHY_SYM1, DP, id), \
- SRI(DP_DPHY_SYM2, DP, id), \
- SRI(DP_DPHY_TRAINING_PATTERN_SEL, DP, id), \
- SRI(DP_LINK_CNTL, DP, id), \
- SRI(DP_LINK_FRAMING_CNTL, DP, id), \
- SRI(DP_MSE_SAT0, DP, id), \
- SRI(DP_MSE_SAT1, DP, id), \
- SRI(DP_MSE_SAT2, DP, id), \
- SRI(DP_MSE_SAT_UPDATE, DP, id), \
- SRI(DP_SEC_CNTL, DP, id), \
- SRI(DP_VID_STREAM_CNTL, DP, id), \
- SRI(DP_DPHY_FAST_TRAINING, DP, id), \
- SRI(DP_SEC_CNTL1, DP, id), \
- SRI(DP_DPHY_BS_SR_SWAP_CNTL, DP, id), \
- SRI(DP_DPHY_HBR2_PATTERN_CONTROL, DP, id)
-
-#define LINK_ENCODER_MASK_SH_LIST_DCN30(mask_sh) \
- LINK_ENCODER_MASK_SH_LIST_DCN20(mask_sh)
-
-#define DPCS_DCN3_MASK_SH_LIST(mask_sh)\
- DPCS_DCN2_MASK_SH_LIST(mask_sh),\
- LE_SF(DPCSTX0_DPCSTX_TX_CNTL, DPCS_TX_DATA_ORDER_INVERT_18_BIT, mask_sh),\
- LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL0, RDPCS_PHY_TX_VBOOST_LVL, mask_sh),\
- LE_SF(RDPCSTX0_RDPCSTX_CLOCK_CNTL, RDPCS_TX_CLK_EN, mask_sh),\
- LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL6, RDPCS_PHY_DPALT_DP4, mask_sh),\
- LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL6, RDPCS_PHY_DPALT_DISABLE, mask_sh)
-
-
-void dcn30_link_encoder_construct(
- struct dcn20_link_encoder *enc20,
- const struct encoder_init_data *init_data,
- const struct encoder_feature_support *enc_features,
- const struct dcn10_link_enc_registers *link_regs,
- const struct dcn10_link_enc_aux_registers *aux_regs,
- const struct dcn10_link_enc_hpd_registers *hpd_regs,
- const struct dcn10_link_enc_shift *link_shift,
- const struct dcn10_link_enc_mask *link_mask);
-
-void enc3_hw_init(struct link_encoder *enc);
-
-bool dcn30_link_encoder_validate_output_with_stream(
- struct link_encoder *enc,
- const struct dc_stream_state *stream);
-
-#endif /* __DC_LINK_ENCODER__DCN30_H__ */
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.c
deleted file mode 100644
index 005dbe099a7a..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.c
+++ /dev/null
@@ -1,902 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-
-#include "dc_bios_types.h"
-#include "dcn30_dio_stream_encoder.h"
-#include "reg_helper.h"
-#include "hw_shared.h"
-#include "dc.h"
-#include "core_types.h"
-#include <linux/delay.h>
-
-
-#define DC_LOGGER \
- enc1->base.ctx->logger
-
-#define REG(reg)\
- (enc1->regs->reg)
-
-#undef FN
-#define FN(reg_name, field_name) \
- enc1->se_shift->field_name, enc1->se_mask->field_name
-
-#define VBI_LINE_0 0
-#define HDMI_CLOCK_CHANNEL_RATE_MORE_340M 340000
-
-#define CTX \
- enc1->base.ctx
-
-
-static void enc3_update_hdmi_info_packet(
- struct dcn10_stream_encoder *enc1,
- uint32_t packet_index,
- const struct dc_info_packet *info_packet)
-{
- uint32_t cont, send, line;
-
- if (info_packet->valid) {
- enc1->base.vpg->funcs->update_generic_info_packet(
- enc1->base.vpg,
- packet_index,
- info_packet,
- true);
-
- /* enable transmission of packet(s) -
- * packet transmission begins on the next frame */
- cont = 1;
- /* send packet(s) every frame */
- send = 1;
- /* select line number to send packets on */
- line = 2;
- } else {
- cont = 0;
- send = 0;
- line = 0;
- }
-
- /* DP_SEC_GSP[x]_LINE_REFERENCE - keep default value REFER_TO_DP_SOF */
-
- /* choose which generic packet control to use */
- switch (packet_index) {
- case 0:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC0_CONT, cont,
- HDMI_GENERIC0_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL1,
- HDMI_GENERIC0_LINE, line);
- break;
- case 1:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC1_CONT, cont,
- HDMI_GENERIC1_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL1,
- HDMI_GENERIC1_LINE, line);
- break;
- case 2:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC2_CONT, cont,
- HDMI_GENERIC2_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL2,
- HDMI_GENERIC2_LINE, line);
- break;
- case 3:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC3_CONT, cont,
- HDMI_GENERIC3_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL2,
- HDMI_GENERIC3_LINE, line);
- break;
- case 4:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC4_CONT, cont,
- HDMI_GENERIC4_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL3,
- HDMI_GENERIC4_LINE, line);
- break;
- case 5:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC5_CONT, cont,
- HDMI_GENERIC5_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL3,
- HDMI_GENERIC5_LINE, line);
- break;
- case 6:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC6_CONT, cont,
- HDMI_GENERIC6_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL4,
- HDMI_GENERIC6_LINE, line);
- break;
- case 7:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL0,
- HDMI_GENERIC7_CONT, cont,
- HDMI_GENERIC7_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL4,
- HDMI_GENERIC7_LINE, line);
- break;
- case 8:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL6,
- HDMI_GENERIC8_CONT, cont,
- HDMI_GENERIC8_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL7,
- HDMI_GENERIC8_LINE, line);
- break;
- case 9:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL6,
- HDMI_GENERIC9_CONT, cont,
- HDMI_GENERIC9_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL7,
- HDMI_GENERIC9_LINE, line);
- break;
- case 10:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL6,
- HDMI_GENERIC10_CONT, cont,
- HDMI_GENERIC10_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL8,
- HDMI_GENERIC10_LINE, line);
- break;
- case 11:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL6,
- HDMI_GENERIC11_CONT, cont,
- HDMI_GENERIC11_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL8,
- HDMI_GENERIC11_LINE, line);
- break;
- case 12:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL6,
- HDMI_GENERIC12_CONT, cont,
- HDMI_GENERIC12_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL9,
- HDMI_GENERIC12_LINE, line);
- break;
- case 13:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL6,
- HDMI_GENERIC13_CONT, cont,
- HDMI_GENERIC13_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL9,
- HDMI_GENERIC13_LINE, line);
- break;
- case 14:
- REG_UPDATE_2(HDMI_GENERIC_PACKET_CONTROL6,
- HDMI_GENERIC14_CONT, cont,
- HDMI_GENERIC14_SEND, send);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL10,
- HDMI_GENERIC14_LINE, line);
- break;
- default:
- /* invalid HW packet index */
- DC_LOG_WARNING(
- "Invalid HW packet index: %s()\n",
- __func__);
- return;
- }
-}
-
-void enc3_stream_encoder_update_hdmi_info_packets(
- struct stream_encoder *enc,
- const struct encoder_info_frame *info_frame)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- /* for bring up, disable dp double TODO */
- REG_UPDATE(HDMI_DB_CONTROL, HDMI_DB_DISABLE, 1);
- REG_UPDATE(AFMT_CNTL, AFMT_AUDIO_CLOCK_EN, 1);
-
- /*Always add mandatory packets first followed by optional ones*/
- enc3_update_hdmi_info_packet(enc1, 0, &info_frame->avi);
- enc3_update_hdmi_info_packet(enc1, 5, &info_frame->hfvsif);
- enc3_update_hdmi_info_packet(enc1, 2, &info_frame->gamut);
- enc3_update_hdmi_info_packet(enc1, 1, &info_frame->vendor);
- enc3_update_hdmi_info_packet(enc1, 3, &info_frame->spd);
- enc3_update_hdmi_info_packet(enc1, 4, &info_frame->hdrsmd);
- enc3_update_hdmi_info_packet(enc1, 6, &info_frame->vtem);
-}
-
-void enc3_stream_encoder_stop_hdmi_info_packets(
- struct stream_encoder *enc)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- /* stop generic packets 0,1 on HDMI */
- REG_SET_4(HDMI_GENERIC_PACKET_CONTROL0, 0,
- HDMI_GENERIC0_CONT, 0,
- HDMI_GENERIC0_SEND, 0,
- HDMI_GENERIC1_CONT, 0,
- HDMI_GENERIC1_SEND, 0);
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL1, 0,
- HDMI_GENERIC0_LINE, 0,
- HDMI_GENERIC1_LINE, 0);
-
- /* stop generic packets 2,3 on HDMI */
- REG_SET_4(HDMI_GENERIC_PACKET_CONTROL0, 0,
- HDMI_GENERIC2_CONT, 0,
- HDMI_GENERIC2_SEND, 0,
- HDMI_GENERIC3_CONT, 0,
- HDMI_GENERIC3_SEND, 0);
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL2, 0,
- HDMI_GENERIC2_LINE, 0,
- HDMI_GENERIC3_LINE, 0);
-
- /* stop generic packets 4,5 on HDMI */
- REG_SET_4(HDMI_GENERIC_PACKET_CONTROL0, 0,
- HDMI_GENERIC4_CONT, 0,
- HDMI_GENERIC4_SEND, 0,
- HDMI_GENERIC5_CONT, 0,
- HDMI_GENERIC5_SEND, 0);
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL3, 0,
- HDMI_GENERIC4_LINE, 0,
- HDMI_GENERIC5_LINE, 0);
-
- /* stop generic packets 6,7 on HDMI */
- REG_SET_4(HDMI_GENERIC_PACKET_CONTROL0, 0,
- HDMI_GENERIC6_CONT, 0,
- HDMI_GENERIC6_SEND, 0,
- HDMI_GENERIC7_CONT, 0,
- HDMI_GENERIC7_SEND, 0);
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL4, 0,
- HDMI_GENERIC6_LINE, 0,
- HDMI_GENERIC7_LINE, 0);
-
- /* stop generic packets 8,9 on HDMI */
- REG_SET_4(HDMI_GENERIC_PACKET_CONTROL6, 0,
- HDMI_GENERIC8_CONT, 0,
- HDMI_GENERIC8_SEND, 0,
- HDMI_GENERIC9_CONT, 0,
- HDMI_GENERIC9_SEND, 0);
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL7, 0,
- HDMI_GENERIC8_LINE, 0,
- HDMI_GENERIC9_LINE, 0);
-
- /* stop generic packets 10,11 on HDMI */
- REG_SET_4(HDMI_GENERIC_PACKET_CONTROL6, 0,
- HDMI_GENERIC10_CONT, 0,
- HDMI_GENERIC10_SEND, 0,
- HDMI_GENERIC11_CONT, 0,
- HDMI_GENERIC11_SEND, 0);
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL8, 0,
- HDMI_GENERIC10_LINE, 0,
- HDMI_GENERIC11_LINE, 0);
-
- /* stop generic packets 12,13 on HDMI */
- REG_SET_4(HDMI_GENERIC_PACKET_CONTROL6, 0,
- HDMI_GENERIC12_CONT, 0,
- HDMI_GENERIC12_SEND, 0,
- HDMI_GENERIC13_CONT, 0,
- HDMI_GENERIC13_SEND, 0);
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL9, 0,
- HDMI_GENERIC12_LINE, 0,
- HDMI_GENERIC13_LINE, 0);
-
- /* stop generic packet 14 on HDMI */
- REG_SET_2(HDMI_GENERIC_PACKET_CONTROL6, 0,
- HDMI_GENERIC14_CONT, 0,
- HDMI_GENERIC14_SEND, 0);
- REG_UPDATE(HDMI_GENERIC_PACKET_CONTROL10,
- HDMI_GENERIC14_LINE, 0);
-}
-
-/* Set DSC-related configuration.
- * dsc_mode: 0 disables DSC, other values enable DSC in specified format
- * sc_bytes_per_pixel: Bytes per pixel in u3.28 format
- * dsc_slice_width: Slice width in pixels
- */
-static void enc3_dp_set_dsc_config(struct stream_encoder *enc,
- enum optc_dsc_mode dsc_mode,
- uint32_t dsc_bytes_per_pixel,
- uint32_t dsc_slice_width)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- REG_UPDATE_2(DP_DSC_CNTL,
- DP_DSC_MODE, dsc_mode,
- DP_DSC_SLICE_WIDTH, dsc_slice_width);
-
- REG_SET(DP_DSC_BYTES_PER_PIXEL, 0,
- DP_DSC_BYTES_PER_PIXEL, dsc_bytes_per_pixel);
-}
-
-
-void enc3_dp_set_dsc_pps_info_packet(struct stream_encoder *enc,
- bool enable,
- uint8_t *dsc_packed_pps,
- bool immediate_update)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- if (enable) {
- struct dc_info_packet pps_sdp;
- int i;
-
- /* Configure for PPS packet size (128 bytes) */
- REG_UPDATE(DP_SEC_CNTL2, DP_SEC_GSP11_PPS, 1);
-
- /* We need turn on clock before programming AFMT block
- *
- * TODO: We may not need this here anymore since update_generic_info_packet
- * no longer touches AFMT
- */
- REG_UPDATE(AFMT_CNTL, AFMT_AUDIO_CLOCK_EN, 1);
-
- /* Load PPS into infoframe (SDP) registers */
- pps_sdp.valid = true;
- pps_sdp.hb0 = 0;
- pps_sdp.hb1 = DC_DP_INFOFRAME_TYPE_PPS;
- pps_sdp.hb2 = 127;
- pps_sdp.hb3 = 0;
-
- for (i = 0; i < 4; i++) {
- memcpy(pps_sdp.sb, &dsc_packed_pps[i * 32], 32);
- enc1->base.vpg->funcs->update_generic_info_packet(
- enc1->base.vpg,
- 11 + i,
- &pps_sdp,
- immediate_update);
- }
-
- /* SW should make sure VBID[6] update line number is bigger
- * than PPS transmit line number
- */
- REG_UPDATE(DP_GSP11_CNTL,
- DP_SEC_GSP11_LINE_NUM, 2);
- REG_UPDATE_2(DP_MSA_VBID_MISC,
- DP_VBID6_LINE_REFERENCE, 0,
- DP_VBID6_LINE_NUM, 3);
-
- /* Send PPS data at the line number specified above.
- * DP spec requires PPS to be sent only when it changes, however since
- * decoder has to be able to handle its change on every frame, we're
- * sending it always (i.e. on every frame) to reduce the chance it'd be
- * missed by decoder. If it turns out required to send PPS only when it
- * changes, we can use DP_SEC_GSP11_SEND register.
- */
- REG_UPDATE(DP_GSP11_CNTL,
- DP_SEC_GSP11_ENABLE, 1);
- REG_UPDATE(DP_SEC_CNTL,
- DP_SEC_STREAM_ENABLE, 1);
- } else {
- /* Disable Generic Stream Packet 11 (GSP) transmission */
- REG_UPDATE(DP_GSP11_CNTL, DP_SEC_GSP11_ENABLE, 0);
- REG_UPDATE(DP_SEC_CNTL2, DP_SEC_GSP11_PPS, 0);
- }
-}
-
-
-/* this function read dsc related register fields to be logged later in dcn10_log_hw_state
- * into a dcn_dsc_state struct.
- */
-static void enc3_read_state(struct stream_encoder *enc, struct enc_state *s)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- //if dsc is enabled, continue to read
- REG_GET(DP_DSC_CNTL, DP_DSC_MODE, &s->dsc_mode);
- if (s->dsc_mode) {
- REG_GET(DP_DSC_CNTL, DP_DSC_SLICE_WIDTH, &s->dsc_slice_width);
- REG_GET(DP_GSP11_CNTL, DP_SEC_GSP11_LINE_NUM, &s->sec_gsp_pps_line_num);
-
- REG_GET(DP_MSA_VBID_MISC, DP_VBID6_LINE_REFERENCE, &s->vbid6_line_reference);
- REG_GET(DP_MSA_VBID_MISC, DP_VBID6_LINE_NUM, &s->vbid6_line_num);
-
- REG_GET(DP_GSP11_CNTL, DP_SEC_GSP11_ENABLE, &s->sec_gsp_pps_enable);
- REG_GET(DP_SEC_CNTL, DP_SEC_STREAM_ENABLE, &s->sec_stream_enable);
- }
-}
-
-void enc3_stream_encoder_update_dp_info_packets_sdp_line_num(
- struct stream_encoder *enc,
- struct encoder_info_frame *info_frame)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- if (info_frame->adaptive_sync.valid == true &&
- info_frame->sdp_line_num.adaptive_sync_line_num_valid == true) {
- //00: REFER_TO_DP_SOF, 01: REFER_TO_OTG_SOF
- REG_UPDATE(DP_SEC_CNTL1, DP_SEC_GSP5_LINE_REFERENCE, 1);
-
- REG_UPDATE(DP_SEC_CNTL5, DP_SEC_GSP5_LINE_NUM,
- info_frame->sdp_line_num.adaptive_sync_line_num);
- }
-}
-
-void enc3_stream_encoder_update_dp_info_packets(
- struct stream_encoder *enc,
- const struct encoder_info_frame *info_frame)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
- uint32_t value = 0;
- uint32_t dmdata_packet_enabled = 0;
-
- if (info_frame->vsc.valid) {
- enc->vpg->funcs->update_generic_info_packet(
- enc->vpg,
- 0, /* packetIndex */
- &info_frame->vsc,
- true);
- }
- /* TODO: VSC SDP at packetIndex 1 should be retricted only if PSR-SU on.
- * There should have another Infopacket type (e.g. vsc_psrsu) for PSR_SU.
- * In addition, currently the driver check the valid bit then update and
- * send the corresponding Infopacket. For PSR-SU, the SDP only be sent
- * while entering PSR-SU mode. So we need another parameter(e.g. send)
- * in dc_info_packet to indicate which infopacket should be enabled by
- * default here.
- */
- if (info_frame->vsc.valid) {
- enc->vpg->funcs->update_generic_info_packet(
- enc->vpg,
- 1, /* packetIndex */
- &info_frame->vsc,
- true);
- }
- /* TODO: VSC SDP at packetIndex 1 should be restricted only if PSR-SU on.
- * There should have another Infopacket type (e.g. vsc_psrsu) for PSR_SU.
- * In addition, currently the driver check the valid bit then update and
- * send the corresponding Infopacket. For PSR-SU, the SDP only be sent
- * while entering PSR-SU mode. So we need another parameter(e.g. send)
- * in dc_info_packet to indicate which infopacket should be enabled by
- * default here.
- */
- if (info_frame->vsc.valid) {
- enc->vpg->funcs->update_generic_info_packet(
- enc->vpg,
- 1, /* packetIndex */
- &info_frame->vsc,
- true);
- }
- if (info_frame->spd.valid) {
- enc->vpg->funcs->update_generic_info_packet(
- enc->vpg,
- 2, /* packetIndex */
- &info_frame->spd,
- true);
- }
- if (info_frame->hdrsmd.valid) {
- enc->vpg->funcs->update_generic_info_packet(
- enc->vpg,
- 3, /* packetIndex */
- &info_frame->hdrsmd,
- true);
- }
- /* packetIndex 4 is used for send immediate sdp message, and please
- * use other packetIndex (such as 5,6) for other info packet
- */
-
- if (info_frame->adaptive_sync.valid)
- enc->vpg->funcs->update_generic_info_packet(
- enc->vpg,
- 5, /* packetIndex */
- &info_frame->adaptive_sync,
- true);
-
- /* enable/disable transmission of packet(s).
- * If enabled, packet transmission begins on the next frame
- */
- REG_UPDATE(DP_SEC_CNTL, DP_SEC_GSP0_ENABLE, info_frame->vsc.valid);
- REG_UPDATE(DP_SEC_CNTL, DP_SEC_GSP2_ENABLE, info_frame->spd.valid);
- REG_UPDATE(DP_SEC_CNTL, DP_SEC_GSP3_ENABLE, info_frame->hdrsmd.valid);
- REG_UPDATE(DP_SEC_CNTL, DP_SEC_GSP5_ENABLE, info_frame->adaptive_sync.valid);
-
- /* This bit is the master enable bit.
- * When enabling secondary stream engine,
- * this master bit must also be set.
- * This register shared with audio info frame.
- * Therefore we need to enable master bit
- * if at least on of the fields is not 0
- */
- value = REG_READ(DP_SEC_CNTL);
- if (value)
- REG_UPDATE(DP_SEC_CNTL, DP_SEC_STREAM_ENABLE, 1);
-
- /* check if dynamic metadata packet transmission is enabled */
- REG_GET(DP_SEC_METADATA_TRANSMISSION,
- DP_SEC_METADATA_PACKET_ENABLE, &dmdata_packet_enabled);
-
- if (dmdata_packet_enabled)
- REG_UPDATE(DP_SEC_CNTL, DP_SEC_STREAM_ENABLE, 1);
-}
-
-static void enc3_dp_set_odm_combine(
- struct stream_encoder *enc,
- bool odm_combine)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- REG_UPDATE(DP_PIXEL_FORMAT, DP_PIXEL_COMBINE, odm_combine);
-}
-
-/* setup stream encoder in dvi mode */
-static void enc3_stream_encoder_dvi_set_stream_attribute(
- struct stream_encoder *enc,
- struct dc_crtc_timing *crtc_timing,
- bool is_dual_link)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- if (!enc->ctx->dc->debug.avoid_vbios_exec_table) {
- struct bp_encoder_control cntl = {0};
-
- cntl.action = ENCODER_CONTROL_SETUP;
- cntl.engine_id = enc1->base.id;
- cntl.signal = is_dual_link ?
- SIGNAL_TYPE_DVI_DUAL_LINK : SIGNAL_TYPE_DVI_SINGLE_LINK;
- cntl.enable_dp_audio = false;
- cntl.pixel_clock = crtc_timing->pix_clk_100hz / 10;
- cntl.lanes_number = (is_dual_link) ? LANE_COUNT_EIGHT : LANE_COUNT_FOUR;
-
- if (enc1->base.bp->funcs->encoder_control(
- enc1->base.bp, &cntl) != BP_RESULT_OK)
- return;
-
- } else {
-
- //Set pattern for clock channel, default vlue 0x63 does not work
- REG_UPDATE(DIG_CLOCK_PATTERN, DIG_CLOCK_PATTERN, 0x1F);
-
- //DIG_BE_TMDS_DVI_MODE : TMDS-DVI mode is already set in link_encoder_setup
-
- //DIG_SOURCE_SELECT is already set in dig_connect_to_otg
-
- /* set DIG_START to 0x1 to reset FIFO */
- REG_UPDATE(DIG_FE_CNTL, DIG_START, 1);
- udelay(1);
-
- /* write 0 to take the FIFO out of reset */
- REG_UPDATE(DIG_FE_CNTL, DIG_START, 0);
- udelay(1);
- }
-
- ASSERT(crtc_timing->pixel_encoding == PIXEL_ENCODING_RGB);
- ASSERT(crtc_timing->display_color_depth == COLOR_DEPTH_888);
- enc1_stream_encoder_set_stream_attribute_helper(enc1, crtc_timing);
-}
-
-/* setup stream encoder in hdmi mode */
-static void enc3_stream_encoder_hdmi_set_stream_attribute(
- struct stream_encoder *enc,
- struct dc_crtc_timing *crtc_timing,
- int actual_pix_clk_khz,
- bool enable_audio)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- if (!enc->ctx->dc->debug.avoid_vbios_exec_table) {
- struct bp_encoder_control cntl = {0};
-
- cntl.action = ENCODER_CONTROL_SETUP;
- cntl.engine_id = enc1->base.id;
- cntl.signal = SIGNAL_TYPE_HDMI_TYPE_A;
- cntl.enable_dp_audio = enable_audio;
- cntl.pixel_clock = actual_pix_clk_khz;
- cntl.lanes_number = LANE_COUNT_FOUR;
-
- if (enc1->base.bp->funcs->encoder_control(
- enc1->base.bp, &cntl) != BP_RESULT_OK)
- return;
-
- } else {
-
- //Set pattern for clock channel, default vlue 0x63 does not work
- REG_UPDATE(DIG_CLOCK_PATTERN, DIG_CLOCK_PATTERN, 0x1F);
-
- //DIG_BE_TMDS_HDMI_MODE : TMDS-HDMI mode is already set in link_encoder_setup
-
- //DIG_SOURCE_SELECT is already set in dig_connect_to_otg
-
- /* set DIG_START to 0x1 to reset FIFO */
- REG_UPDATE(DIG_FE_CNTL, DIG_START, 1);
- udelay(1);
-
- /* write 0 to take the FIFO out of reset */
- REG_UPDATE(DIG_FE_CNTL, DIG_START, 0);
- udelay(1);
- }
-
- /* Configure pixel encoding */
- enc1_stream_encoder_set_stream_attribute_helper(enc1, crtc_timing);
-
- /* setup HDMI engine */
- REG_UPDATE_6(HDMI_CONTROL,
- HDMI_PACKET_GEN_VERSION, 1,
- HDMI_KEEPOUT_MODE, 1,
- HDMI_DEEP_COLOR_ENABLE, 0,
- HDMI_DATA_SCRAMBLE_EN, 0,
- HDMI_NO_EXTRA_NULL_PACKET_FILLED, 1,
- HDMI_CLOCK_CHANNEL_RATE, 0);
-
- /* Configure color depth */
- switch (crtc_timing->display_color_depth) {
- case COLOR_DEPTH_888:
- REG_UPDATE(HDMI_CONTROL, HDMI_DEEP_COLOR_DEPTH, 0);
- break;
- case COLOR_DEPTH_101010:
- if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422) {
- REG_UPDATE_2(HDMI_CONTROL,
- HDMI_DEEP_COLOR_DEPTH, 1,
- HDMI_DEEP_COLOR_ENABLE, 0);
- } else {
- REG_UPDATE_2(HDMI_CONTROL,
- HDMI_DEEP_COLOR_DEPTH, 1,
- HDMI_DEEP_COLOR_ENABLE, 1);
- }
- break;
- case COLOR_DEPTH_121212:
- if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422) {
- REG_UPDATE_2(HDMI_CONTROL,
- HDMI_DEEP_COLOR_DEPTH, 2,
- HDMI_DEEP_COLOR_ENABLE, 0);
- } else {
- REG_UPDATE_2(HDMI_CONTROL,
- HDMI_DEEP_COLOR_DEPTH, 2,
- HDMI_DEEP_COLOR_ENABLE, 1);
- }
- break;
- case COLOR_DEPTH_161616:
- REG_UPDATE_2(HDMI_CONTROL,
- HDMI_DEEP_COLOR_DEPTH, 3,
- HDMI_DEEP_COLOR_ENABLE, 1);
- break;
- default:
- break;
- }
-
- if (actual_pix_clk_khz >= HDMI_CLOCK_CHANNEL_RATE_MORE_340M) {
- /* enable HDMI data scrambler
- * HDMI_CLOCK_CHANNEL_RATE_MORE_340M
- * Clock channel frequency is 1/4 of character rate.
- */
- REG_UPDATE_2(HDMI_CONTROL,
- HDMI_DATA_SCRAMBLE_EN, 1,
- HDMI_CLOCK_CHANNEL_RATE, 1);
- } else if (crtc_timing->flags.LTE_340MCSC_SCRAMBLE) {
-
- /* TODO: New feature for DCE11, still need to implement */
-
- /* enable HDMI data scrambler
- * HDMI_CLOCK_CHANNEL_FREQ_EQUAL_TO_CHAR_RATE
- * Clock channel frequency is the same
- * as character rate
- */
- REG_UPDATE_2(HDMI_CONTROL,
- HDMI_DATA_SCRAMBLE_EN, 1,
- HDMI_CLOCK_CHANNEL_RATE, 0);
- }
-
-
- /* Enable transmission of General Control packet on every frame */
- REG_UPDATE_3(HDMI_VBI_PACKET_CONTROL,
- HDMI_GC_CONT, 1,
- HDMI_GC_SEND, 1,
- HDMI_NULL_SEND, 1);
-
- /* Disable Audio Content Protection packet transmission */
- REG_UPDATE(HDMI_VBI_PACKET_CONTROL, HDMI_ACP_SEND, 0);
-
- /* following belongs to audio */
- /* Enable Audio InfoFrame packet transmission. */
- REG_UPDATE(HDMI_INFOFRAME_CONTROL0, HDMI_AUDIO_INFO_SEND, 1);
-
- /* update double-buffered AUDIO_INFO registers immediately */
- ASSERT (enc->afmt);
- enc->afmt->funcs->audio_info_immediate_update(enc->afmt);
-
- /* Select line number on which to send Audio InfoFrame packets */
- REG_UPDATE(HDMI_INFOFRAME_CONTROL1, HDMI_AUDIO_INFO_LINE,
- VBI_LINE_0 + 2);
-
- /* set HDMI GC AVMUTE */
- REG_UPDATE(HDMI_GC, HDMI_GC_AVMUTE, 0);
-}
-
-void enc3_audio_mute_control(
- struct stream_encoder *enc,
- bool mute)
-{
- ASSERT (enc->afmt);
- enc->afmt->funcs->audio_mute_control(enc->afmt, mute);
-}
-
-void enc3_se_dp_audio_setup(
- struct stream_encoder *enc,
- unsigned int az_inst,
- struct audio_info *info)
-{
- ASSERT (enc->afmt);
- enc->afmt->funcs->se_audio_setup(enc->afmt, az_inst, info);
-}
-
-#define DP_SEC_AUD_N__DP_SEC_AUD_N__DEFAULT 0x8000
-#define DP_SEC_TIMESTAMP__DP_SEC_TIMESTAMP_MODE__AUTO_CALC 1
-
-static void enc3_se_setup_dp_audio(
- struct stream_encoder *enc)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- /* --- DP Audio packet configurations --- */
-
- /* ATP Configuration */
- REG_SET(DP_SEC_AUD_N, 0,
- DP_SEC_AUD_N, DP_SEC_AUD_N__DP_SEC_AUD_N__DEFAULT);
-
- /* Async/auto-calc timestamp mode */
- REG_SET(DP_SEC_TIMESTAMP, 0, DP_SEC_TIMESTAMP_MODE,
- DP_SEC_TIMESTAMP__DP_SEC_TIMESTAMP_MODE__AUTO_CALC);
-
- ASSERT (enc->afmt);
- enc->afmt->funcs->setup_dp_audio(enc->afmt);
-}
-
-void enc3_se_dp_audio_enable(
- struct stream_encoder *enc)
-{
- enc1_se_enable_audio_clock(enc, true);
- enc3_se_setup_dp_audio(enc);
- enc1_se_enable_dp_audio(enc);
-}
-
-static void enc3_se_setup_hdmi_audio(
- struct stream_encoder *enc,
- const struct audio_crtc_info *crtc_info)
-{
- struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
-
- struct audio_clock_info audio_clock_info = {0};
-
- /* Setup audio in AFMT - program AFMT block associated with DIO */
- ASSERT (enc->afmt);
- enc->afmt->funcs->setup_hdmi_audio(enc->afmt);
-
- /* HDMI_AUDIO_PACKET_CONTROL */
- REG_UPDATE(HDMI_AUDIO_PACKET_CONTROL,
- HDMI_AUDIO_DELAY_EN, 1);
-
- /* HDMI_ACR_PACKET_CONTROL */
- REG_UPDATE_3(HDMI_ACR_PACKET_CONTROL,
- HDMI_ACR_AUTO_SEND, 1,
- HDMI_ACR_SOURCE, 0,
- HDMI_ACR_AUDIO_PRIORITY, 0);
-
- /* Program audio clock sample/regeneration parameters */
- get_audio_clock_info(crtc_info->color_depth,
- crtc_info->requested_pixel_clock_100Hz,
- crtc_info->calculated_pixel_clock_100Hz,
- &audio_clock_info);
- DC_LOG_HW_AUDIO(
- "\n%s:Input::requested_pixel_clock_100Hz = %d" \
- "calculated_pixel_clock_100Hz = %d \n", __func__, \
- crtc_info->requested_pixel_clock_100Hz, \
- crtc_info->calculated_pixel_clock_100Hz);
-
- /* HDMI_ACR_32_0__HDMI_ACR_CTS_32_MASK */
- REG_UPDATE(HDMI_ACR_32_0, HDMI_ACR_CTS_32, audio_clock_info.cts_32khz);
-
- /* HDMI_ACR_32_1__HDMI_ACR_N_32_MASK */
- REG_UPDATE(HDMI_ACR_32_1, HDMI_ACR_N_32, audio_clock_info.n_32khz);
-
- /* HDMI_ACR_44_0__HDMI_ACR_CTS_44_MASK */
- REG_UPDATE(HDMI_ACR_44_0, HDMI_ACR_CTS_44, audio_clock_info.cts_44khz);
-
- /* HDMI_ACR_44_1__HDMI_ACR_N_44_MASK */
- REG_UPDATE(HDMI_ACR_44_1, HDMI_ACR_N_44, audio_clock_info.n_44khz);
-
- /* HDMI_ACR_48_0__HDMI_ACR_CTS_48_MASK */
- REG_UPDATE(HDMI_ACR_48_0, HDMI_ACR_CTS_48, audio_clock_info.cts_48khz);
-
- /* HDMI_ACR_48_1__HDMI_ACR_N_48_MASK */
- REG_UPDATE(HDMI_ACR_48_1, HDMI_ACR_N_48, audio_clock_info.n_48khz);
-
- /* Video driver cannot know in advance which sample rate will
- * be used by HD Audio driver
- * HDMI_ACR_PACKET_CONTROL__HDMI_ACR_N_MULTIPLE field is
- * programmed below in interruppt callback
- */
-}
-
-void enc3_se_hdmi_audio_setup(
- struct stream_encoder *enc,
- unsigned int az_inst,
- struct audio_info *info,
- struct audio_crtc_info *audio_crtc_info)
-{
- enc1_se_enable_audio_clock(enc, true);
- enc3_se_setup_hdmi_audio(enc, audio_crtc_info);
- ASSERT (enc->afmt);
- enc->afmt->funcs->se_audio_setup(enc->afmt, az_inst, info);
-}
-
-
-static const struct stream_encoder_funcs dcn30_str_enc_funcs = {
- .dp_set_odm_combine =
- enc3_dp_set_odm_combine,
- .dp_set_stream_attribute =
- enc2_stream_encoder_dp_set_stream_attribute,
- .hdmi_set_stream_attribute =
- enc3_stream_encoder_hdmi_set_stream_attribute,
- .dvi_set_stream_attribute =
- enc3_stream_encoder_dvi_set_stream_attribute,
- .set_throttled_vcp_size =
- enc1_stream_encoder_set_throttled_vcp_size,
- .update_hdmi_info_packets =
- enc3_stream_encoder_update_hdmi_info_packets,
- .stop_hdmi_info_packets =
- enc3_stream_encoder_stop_hdmi_info_packets,
- .update_dp_info_packets_sdp_line_num =
- enc3_stream_encoder_update_dp_info_packets_sdp_line_num,
- .update_dp_info_packets =
- enc3_stream_encoder_update_dp_info_packets,
- .stop_dp_info_packets =
- enc1_stream_encoder_stop_dp_info_packets,
- .dp_blank =
- enc1_stream_encoder_dp_blank,
- .dp_unblank =
- enc2_stream_encoder_dp_unblank,
- .audio_mute_control = enc3_audio_mute_control,
-
- .dp_audio_setup = enc3_se_dp_audio_setup,
- .dp_audio_enable = enc3_se_dp_audio_enable,
- .dp_audio_disable = enc1_se_dp_audio_disable,
-
- .hdmi_audio_setup = enc3_se_hdmi_audio_setup,
- .hdmi_audio_disable = enc1_se_hdmi_audio_disable,
- .setup_stereo_sync = enc1_setup_stereo_sync,
- .set_avmute = enc1_stream_encoder_set_avmute,
- .dig_connect_to_otg = enc1_dig_connect_to_otg,
- .dig_source_otg = enc1_dig_source_otg,
-
- .dp_get_pixel_format = enc1_stream_encoder_dp_get_pixel_format,
-
- .enc_read_state = enc3_read_state,
- .dp_set_dsc_config = enc3_dp_set_dsc_config,
- .dp_set_dsc_pps_info_packet = enc3_dp_set_dsc_pps_info_packet,
- .set_dynamic_metadata = enc2_set_dynamic_metadata,
- .hdmi_reset_stream_attribute = enc1_reset_hdmi_stream_attribute,
-
- .get_fifo_cal_average_level = enc2_get_fifo_cal_average_level,
-};
-
-void dcn30_dio_stream_encoder_construct(
- struct dcn10_stream_encoder *enc1,
- struct dc_context *ctx,
- struct dc_bios *bp,
- enum engine_id eng_id,
- struct vpg *vpg,
- struct afmt *afmt,
- const struct dcn10_stream_enc_registers *regs,
- const struct dcn10_stream_encoder_shift *se_shift,
- const struct dcn10_stream_encoder_mask *se_mask)
-{
- enc1->base.funcs = &dcn30_str_enc_funcs;
- enc1->base.ctx = ctx;
- enc1->base.id = eng_id;
- enc1->base.bp = bp;
- enc1->base.vpg = vpg;
- enc1->base.afmt = afmt;
- enc1->regs = regs;
- enc1->se_shift = se_shift;
- enc1->se_mask = se_mask;
- enc1->base.stream_enc_inst = vpg->inst;
-}
-
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.h
deleted file mode 100644
index 06310973ded2..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dio_stream_encoder.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DC_DIO_STREAM_ENCODER_DCN30_H__
-#define __DC_DIO_STREAM_ENCODER_DCN30_H__
-
-#include "dcn30/dcn30_vpg.h"
-#include "dcn30/dcn30_afmt.h"
-#include "stream_encoder.h"
-#include "dcn20/dcn20_stream_encoder.h"
-
-/* Register bit field name change */
-#define RDPCSTX0_RDPCSTX_CLOCK_CNTL__RDPCS_SYMCLK_DIV2_GATE_DIS__SHIFT 0x8
-#define RDPCSTX0_RDPCSTX_CLOCK_CNTL__RDPCS_SYMCLK_DIV2_EN__SHIFT 0x9
-#define RDPCSTX0_RDPCSTX_CLOCK_CNTL__RDPCS_SYMCLK_DIV2_CLOCK_ON__SHIFT 0xa
-#define DPCSTX0_DPCSTX_TX_CNTL__DPCS_TX_DATA_SWAP__SHIFT 0xe
-#define DPCSTX0_DPCSTX_TX_CNTL__DPCS_TX_DATA_ORDER_INVERT__SHIFT 0xf
-
-#define RDPCSTX0_RDPCSTX_CLOCK_CNTL__RDPCS_SYMCLK_DIV2_GATE_DIS_MASK 0x00000100L
-#define RDPCSTX0_RDPCSTX_CLOCK_CNTL__RDPCS_SYMCLK_DIV2_EN_MASK 0x00000200L
-#define RDPCSTX0_RDPCSTX_CLOCK_CNTL__RDPCS_SYMCLK_DIV2_CLOCK_ON_MASK 0x00000400L
-#define DPCSTX0_DPCSTX_TX_CNTL__DPCS_TX_DATA_SWAP_MASK 0x00004000L
-#define DPCSTX0_DPCSTX_TX_CNTL__DPCS_TX_DATA_ORDER_INVERT_MASK 0x00008000L
-
-
-#define SE_DCN3_REG_LIST(id)\
- SRI(AFMT_CNTL, DIG, id), \
- SRI(DIG_FE_CNTL, DIG, id), \
- SRI(HDMI_CONTROL, DIG, id), \
- SRI(HDMI_DB_CONTROL, DIG, id), \
- SRI(HDMI_GC, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL0, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL1, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL2, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL3, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL4, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL5, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL6, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL7, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL8, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL9, DIG, id), \
- SRI(HDMI_GENERIC_PACKET_CONTROL10, DIG, id), \
- SRI(HDMI_INFOFRAME_CONTROL0, DIG, id), \
- SRI(HDMI_INFOFRAME_CONTROL1, DIG, id), \
- SRI(HDMI_VBI_PACKET_CONTROL, DIG, id), \
- SRI(HDMI_AUDIO_PACKET_CONTROL, DIG, id),\
- SRI(HDMI_ACR_PACKET_CONTROL, DIG, id),\
- SRI(HDMI_ACR_32_0, DIG, id),\
- SRI(HDMI_ACR_32_1, DIG, id),\
- SRI(HDMI_ACR_44_0, DIG, id),\
- SRI(HDMI_ACR_44_1, DIG, id),\
- SRI(HDMI_ACR_48_0, DIG, id),\
- SRI(HDMI_ACR_48_1, DIG, id),\
- SRI(DP_DB_CNTL, DP, id), \
- SRI(DP_MSA_MISC, DP, id), \
- SRI(DP_MSA_VBID_MISC, DP, id), \
- SRI(DP_MSA_COLORIMETRY, DP, id), \
- SRI(DP_MSA_TIMING_PARAM1, DP, id), \
- SRI(DP_MSA_TIMING_PARAM2, DP, id), \
- SRI(DP_MSA_TIMING_PARAM3, DP, id), \
- SRI(DP_MSA_TIMING_PARAM4, DP, id), \
- SRI(DP_MSE_RATE_CNTL, DP, id), \
- SRI(DP_MSE_RATE_UPDATE, DP, id), \
- SRI(DP_PIXEL_FORMAT, DP, id), \
- SRI(DP_SEC_CNTL, DP, id), \
- SRI(DP_SEC_CNTL1, DP, id), \
- SRI(DP_SEC_CNTL2, DP, id), \
- SRI(DP_SEC_CNTL5, DP, id), \
- SRI(DP_SEC_CNTL6, DP, id), \
- SRI(DP_STEER_FIFO, DP, id), \
- SRI(DP_VID_M, DP, id), \
- SRI(DP_VID_N, DP, id), \
- SRI(DP_VID_STREAM_CNTL, DP, id), \
- SRI(DP_VID_TIMING, DP, id), \
- SRI(DP_SEC_AUD_N, DP, id), \
- SRI(DP_SEC_AUD_N_READBACK, DP, id), \
- SRI(DP_SEC_AUD_M_READBACK, DP, id), \
- SRI(DP_SEC_TIMESTAMP, DP, id), \
- SRI(DP_DSC_CNTL, DP, id), \
- SRI(DP_DSC_BYTES_PER_PIXEL, DP, id), \
- SRI(DP_SEC_METADATA_TRANSMISSION, DP, id), \
- SRI(HDMI_METADATA_PACKET_CONTROL, DIG, id), \
- SRI(DP_SEC_FRAMING4, DP, id), \
- SRI(DP_GSP11_CNTL, DP, id), \
- SRI(DME_CONTROL, DME, id),\
- SRI(DP_SEC_METADATA_TRANSMISSION, DP, id), \
- SRI(HDMI_METADATA_PACKET_CONTROL, DIG, id), \
- SRI(DIG_FE_CNTL, DIG, id), \
- SRI(DIG_FIFO_STATUS, DIG, id), \
- SRI(DIG_CLOCK_PATTERN, DIG, id)
-
-
-#define SE_COMMON_MASK_SH_LIST_DCN30(mask_sh)\
- SE_SF(DP0_DP_PIXEL_FORMAT, DP_PIXEL_ENCODING, mask_sh),\
- SE_SF(DP0_DP_PIXEL_FORMAT, DP_COMPONENT_DEPTH, mask_sh),\
- SE_SF(DIG0_HDMI_CONTROL, HDMI_PACKET_GEN_VERSION, mask_sh),\
- SE_SF(DIG0_HDMI_CONTROL, HDMI_KEEPOUT_MODE, mask_sh),\
- SE_SF(DIG0_HDMI_CONTROL, HDMI_DEEP_COLOR_ENABLE, mask_sh),\
- SE_SF(DIG0_HDMI_CONTROL, HDMI_DEEP_COLOR_DEPTH, mask_sh),\
- SE_SF(DIG0_HDMI_CONTROL, HDMI_DATA_SCRAMBLE_EN, mask_sh),\
- SE_SF(DIG0_HDMI_CONTROL, HDMI_NO_EXTRA_NULL_PACKET_FILLED, mask_sh),\
- SE_SF(DIG0_HDMI_VBI_PACKET_CONTROL, HDMI_GC_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_VBI_PACKET_CONTROL, HDMI_GC_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_VBI_PACKET_CONTROL, HDMI_NULL_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_VBI_PACKET_CONTROL, HDMI_ACP_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_INFOFRAME_CONTROL0, HDMI_AUDIO_INFO_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_INFOFRAME_CONTROL1, HDMI_AUDIO_INFO_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GC, HDMI_GC_AVMUTE, mask_sh),\
- SE_SF(DP0_DP_MSE_RATE_CNTL, DP_MSE_RATE_X, mask_sh),\
- SE_SF(DP0_DP_MSE_RATE_CNTL, DP_MSE_RATE_Y, mask_sh),\
- SE_SF(DP0_DP_MSE_RATE_UPDATE, DP_MSE_RATE_UPDATE_PENDING, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP0_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_STREAM_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP1_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP2_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP3_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_MPG_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL2, DP_SEC_GSP4_SEND, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL2, DP_SEC_GSP4_SEND_PENDING, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL4, DP_SEC_GSP4_LINE_NUM, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL2, DP_SEC_GSP4_SEND_ANY_LINE, mask_sh),\
- SE_SF(DP0_DP_VID_STREAM_CNTL, DP_VID_STREAM_DIS_DEFER, mask_sh),\
- SE_SF(DP0_DP_VID_STREAM_CNTL, DP_VID_STREAM_ENABLE, mask_sh),\
- SE_SF(DP0_DP_VID_STREAM_CNTL, DP_VID_STREAM_STATUS, mask_sh),\
- SE_SF(DP0_DP_STEER_FIFO, DP_STEER_FIFO_RESET, mask_sh),\
- SE_SF(DP0_DP_VID_TIMING, DP_VID_M_N_GEN_EN, mask_sh),\
- SE_SF(DP0_DP_VID_N, DP_VID_N, mask_sh),\
- SE_SF(DP0_DP_VID_M, DP_VID_M, mask_sh),\
- SE_SF(DIG0_DIG_FE_CNTL, DIG_START, mask_sh),\
- SE_SF(DIG0_HDMI_AUDIO_PACKET_CONTROL, HDMI_AUDIO_DELAY_EN, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_PACKET_CONTROL, HDMI_ACR_AUTO_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_PACKET_CONTROL, HDMI_ACR_SOURCE, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_PACKET_CONTROL, HDMI_ACR_AUDIO_PRIORITY, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_32_0, HDMI_ACR_CTS_32, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_32_1, HDMI_ACR_N_32, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_44_0, HDMI_ACR_CTS_44, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_44_1, HDMI_ACR_N_44, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_48_0, HDMI_ACR_CTS_48, mask_sh),\
- SE_SF(DIG0_HDMI_ACR_48_1, HDMI_ACR_N_48, mask_sh),\
- SE_SF(DP0_DP_SEC_AUD_N, DP_SEC_AUD_N, mask_sh),\
- SE_SF(DP0_DP_SEC_AUD_N_READBACK, DP_SEC_AUD_N_READBACK, mask_sh),\
- SE_SF(DP0_DP_SEC_AUD_M_READBACK, DP_SEC_AUD_M_READBACK, mask_sh),\
- SE_SF(DP0_DP_SEC_TIMESTAMP, DP_SEC_TIMESTAMP_MODE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_ASP_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_ATP_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_AIP_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_ACM_ENABLE, mask_sh),\
- SE_SF(DIG0_AFMT_CNTL, AFMT_AUDIO_CLOCK_EN, mask_sh),\
- SE_SF(DIG0_HDMI_CONTROL, HDMI_CLOCK_CHANNEL_RATE, mask_sh),\
- SE_SF(DIG0_DIG_FE_CNTL, TMDS_PIXEL_ENCODING, mask_sh),\
- SE_SF(DIG0_DIG_FE_CNTL, TMDS_COLOR_FORMAT, mask_sh),\
- SE_SF(DIG0_DIG_FE_CNTL, DIG_STEREOSYNC_SELECT, mask_sh),\
- SE_SF(DIG0_DIG_FE_CNTL, DIG_STEREOSYNC_GATE_EN, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_LEVEL_ERROR, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_USE_OVERWRITE_LEVEL, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_OVERWRITE_LEVEL, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_ERROR_ACK, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_CAL_AVERAGE_LEVEL, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_MAXIMUM_LEVEL, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_MINIMUM_LEVEL, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_READ_CLOCK_SRC, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_CALIBRATED, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_FORCE_RECAL_AVERAGE, mask_sh),\
- SE_SF(DIG0_DIG_FIFO_STATUS, DIG_FIFO_FORCE_RECOMP_MINMAX, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP4_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP5_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP6_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL, DP_SEC_GSP7_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL1, DP_SEC_GSP5_LINE_REFERENCE, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL2, DP_SEC_GSP7_SEND, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL5, DP_SEC_GSP5_LINE_NUM, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL6, DP_SEC_GSP7_LINE_NUM, mask_sh),\
- SE_SF(DP0_DP_SEC_CNTL2, DP_SEC_GSP11_PPS, mask_sh),\
- SE_SF(DP0_DP_GSP11_CNTL, DP_SEC_GSP11_ENABLE, mask_sh),\
- SE_SF(DP0_DP_GSP11_CNTL, DP_SEC_GSP11_LINE_NUM, mask_sh),\
- SE_SF(DP0_DP_DB_CNTL, DP_DB_DISABLE, mask_sh),\
- SE_SF(DP0_DP_MSA_COLORIMETRY, DP_MSA_MISC0, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM1, DP_MSA_HTOTAL, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM1, DP_MSA_VTOTAL, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM2, DP_MSA_HSTART, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM2, DP_MSA_VSTART, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_HSYNCWIDTH, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_HSYNCPOLARITY, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_VSYNCWIDTH, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM3, DP_MSA_VSYNCPOLARITY, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM4, DP_MSA_HWIDTH, mask_sh),\
- SE_SF(DP0_DP_MSA_TIMING_PARAM4, DP_MSA_VHEIGHT, mask_sh),\
- SE_SF(DIG0_HDMI_DB_CONTROL, HDMI_DB_DISABLE, mask_sh),\
- SE_SF(DP0_DP_VID_TIMING, DP_VID_N_MUL, mask_sh),\
- SE_SF(DIG0_DIG_FE_CNTL, DIG_SOURCE_SELECT, mask_sh), \
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC0_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC1_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC2_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC2_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC3_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC3_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC4_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC4_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC5_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC5_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC6_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC6_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC7_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL0, HDMI_GENERIC7_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC8_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC8_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC9_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC9_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC10_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC10_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC11_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC11_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC12_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC12_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC13_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC13_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC14_CONT, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL6, HDMI_GENERIC14_SEND, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL1, HDMI_GENERIC0_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL1, HDMI_GENERIC1_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL2, HDMI_GENERIC2_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL2, HDMI_GENERIC3_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL3, HDMI_GENERIC4_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL3, HDMI_GENERIC5_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL4, HDMI_GENERIC6_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL4, HDMI_GENERIC7_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL7, HDMI_GENERIC8_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL7, HDMI_GENERIC9_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL8, HDMI_GENERIC10_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL8, HDMI_GENERIC11_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL9, HDMI_GENERIC12_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL9, HDMI_GENERIC13_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_GENERIC_PACKET_CONTROL10, HDMI_GENERIC14_LINE, mask_sh),\
- SE_SF(DP0_DP_DSC_CNTL, DP_DSC_MODE, mask_sh),\
- SE_SF(DP0_DP_DSC_CNTL, DP_DSC_SLICE_WIDTH, mask_sh),\
- SE_SF(DP0_DP_DSC_BYTES_PER_PIXEL, DP_DSC_BYTES_PER_PIXEL, mask_sh),\
- SE_SF(DP0_DP_MSA_VBID_MISC, DP_VBID6_LINE_REFERENCE, mask_sh),\
- SE_SF(DP0_DP_MSA_VBID_MISC, DP_VBID6_LINE_NUM, mask_sh),\
- SE_SF(DME0_DME_CONTROL, METADATA_ENGINE_EN, mask_sh),\
- SE_SF(DME0_DME_CONTROL, METADATA_HUBP_REQUESTOR_ID, mask_sh),\
- SE_SF(DME0_DME_CONTROL, METADATA_STREAM_TYPE, mask_sh),\
- SE_SF(DP0_DP_SEC_METADATA_TRANSMISSION, DP_SEC_METADATA_PACKET_ENABLE, mask_sh),\
- SE_SF(DP0_DP_SEC_METADATA_TRANSMISSION, DP_SEC_METADATA_PACKET_LINE_REFERENCE, mask_sh),\
- SE_SF(DP0_DP_SEC_METADATA_TRANSMISSION, DP_SEC_METADATA_PACKET_LINE, mask_sh),\
- SE_SF(DIG0_HDMI_METADATA_PACKET_CONTROL, HDMI_METADATA_PACKET_ENABLE, mask_sh),\
- SE_SF(DIG0_HDMI_METADATA_PACKET_CONTROL, HDMI_METADATA_PACKET_LINE_REFERENCE, mask_sh),\
- SE_SF(DIG0_HDMI_METADATA_PACKET_CONTROL, HDMI_METADATA_PACKET_LINE, mask_sh),\
- SE_SF(DIG0_DIG_FE_CNTL, DOLBY_VISION_EN, mask_sh),\
- SE_SF(DP0_DP_PIXEL_FORMAT, DP_PIXEL_COMBINE, mask_sh),\
- SE_SF(DP0_DP_SEC_FRAMING4, DP_SST_SDP_SPLITTING, mask_sh),\
- SE_SF(DIG0_DIG_CLOCK_PATTERN, DIG_CLOCK_PATTERN, mask_sh)
-
-void dcn30_dio_stream_encoder_construct(
- struct dcn10_stream_encoder *enc1,
- struct dc_context *ctx,
- struct dc_bios *bp,
- enum engine_id eng_id,
- struct vpg *vpg,
- struct afmt *afmt,
- const struct dcn10_stream_enc_registers *regs,
- const struct dcn10_stream_encoder_shift *se_shift,
- const struct dcn10_stream_encoder_mask *se_mask);
-
-void enc3_stream_encoder_update_hdmi_info_packets(
- struct stream_encoder *enc,
- const struct encoder_info_frame *info_frame);
-
-void enc3_stream_encoder_stop_hdmi_info_packets(
- struct stream_encoder *enc);
-
-void enc3_stream_encoder_update_dp_info_packets_sdp_line_num(
- struct stream_encoder *enc,
- struct encoder_info_frame *info_frame);
-
-void enc3_stream_encoder_update_dp_info_packets(
- struct stream_encoder *enc,
- const struct encoder_info_frame *info_frame);
-
-void enc3_audio_mute_control(
- struct stream_encoder *enc,
- bool mute);
-
-void enc3_se_dp_audio_setup(
- struct stream_encoder *enc,
- unsigned int az_inst,
- struct audio_info *info);
-
-void enc3_se_dp_audio_enable(
- struct stream_encoder *enc);
-
-void enc3_se_hdmi_audio_setup(
- struct stream_encoder *enc,
- unsigned int az_inst,
- struct audio_info *info,
- struct audio_crtc_info *audio_crtc_info);
-
-void enc3_dp_set_dsc_pps_info_packet(
- struct stream_encoder *enc,
- bool enable,
- uint8_t *dsc_packed_pps,
- bool immediate_update);
-
-#endif /* __DC_DIO_STREAM_ENCODER_DCN30_H__ */
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.c
deleted file mode 100644
index a3a769aad042..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.c
+++ /dev/null
@@ -1,1527 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "dm_services.h"
-#include "core_types.h"
-#include "reg_helper.h"
-#include "dcn30_dpp.h"
-#include "basics/conversion.h"
-#include "dcn30_cm_common.h"
-
-#define REG(reg)\
- dpp->tf_regs->reg
-
-#define CTX \
- dpp->base.ctx
-
-#undef FN
-#define FN(reg_name, field_name) \
- dpp->tf_shift->field_name, dpp->tf_mask->field_name
-
-
-void dpp30_read_state(struct dpp *dpp_base, struct dcn_dpp_state *s)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- uint32_t gamcor_lut_mode, rgam_lut_mode;
-
- REG_GET(DPP_CONTROL,
- DPP_CLOCK_ENABLE, &s->is_enabled);
-
- // Pre-degamma (ROM)
- REG_GET_2(PRE_DEGAM,
- PRE_DEGAM_MODE, &s->pre_dgam_mode,
- PRE_DEGAM_SELECT, &s->pre_dgam_select);
-
- // Gamma Correction (RAM)
- REG_GET(CM_GAMCOR_CONTROL,
- CM_GAMCOR_MODE_CURRENT, &s->gamcor_mode);
- if (s->gamcor_mode) {
- REG_GET(CM_GAMCOR_CONTROL, CM_GAMCOR_SELECT_CURRENT, &gamcor_lut_mode);
- if (!gamcor_lut_mode)
- s->gamcor_mode = LUT_RAM_A; // Otherwise, LUT_RAM_B
- }
-
- // Shaper LUT (RAM), 3D LUT (mode, bit-depth, size)
- REG_GET(CM_SHAPER_CONTROL,
- CM_SHAPER_LUT_MODE, &s->shaper_lut_mode);
- REG_GET(CM_3DLUT_MODE,
- CM_3DLUT_MODE_CURRENT, &s->lut3d_mode);
- REG_GET(CM_3DLUT_READ_WRITE_CONTROL,
- CM_3DLUT_30BIT_EN, &s->lut3d_bit_depth);
- REG_GET(CM_3DLUT_MODE,
- CM_3DLUT_SIZE, &s->lut3d_size);
-
- // Blend/Out Gamma (RAM)
- REG_GET(CM_BLNDGAM_CONTROL,
- CM_BLNDGAM_MODE_CURRENT, &s->rgam_lut_mode);
- if (s->rgam_lut_mode){
- REG_GET(CM_BLNDGAM_CONTROL, CM_BLNDGAM_SELECT_CURRENT, &rgam_lut_mode);
- if (!rgam_lut_mode)
- s->rgam_lut_mode = LUT_RAM_A; // Otherwise, LUT_RAM_B
- }
-}
-
-/*program post scaler scs block in dpp CM*/
-void dpp3_program_post_csc(
- struct dpp *dpp_base,
- enum dc_color_space color_space,
- enum dcn10_input_csc_select input_select,
- const struct out_csc_color_matrix *tbl_entry)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- int i;
- int arr_size = sizeof(dpp_input_csc_matrix)/sizeof(struct dpp_input_csc_matrix);
- const uint16_t *regval = NULL;
- uint32_t cur_select = 0;
- enum dcn10_input_csc_select select;
- struct color_matrices_reg gam_regs;
-
- if (input_select == INPUT_CSC_SELECT_BYPASS) {
- REG_SET(CM_POST_CSC_CONTROL, 0, CM_POST_CSC_MODE, 0);
- return;
- }
-
- if (tbl_entry == NULL) {
- for (i = 0; i < arr_size; i++)
- if (dpp_input_csc_matrix[i].color_space == color_space) {
- regval = dpp_input_csc_matrix[i].regval;
- break;
- }
-
- if (regval == NULL) {
- BREAK_TO_DEBUGGER();
- return;
- }
- } else {
- regval = tbl_entry->regval;
- }
-
- /* determine which CSC matrix (icsc or coma) we are using
- * currently. select the alternate set to double buffer
- * the CSC update so CSC is updated on frame boundary
- */
- REG_GET(CM_POST_CSC_CONTROL,
- CM_POST_CSC_MODE_CURRENT, &cur_select);
-
- if (cur_select != INPUT_CSC_SELECT_ICSC)
- select = INPUT_CSC_SELECT_ICSC;
- else
- select = INPUT_CSC_SELECT_COMA;
-
- gam_regs.shifts.csc_c11 = dpp->tf_shift->CM_POST_CSC_C11;
- gam_regs.masks.csc_c11 = dpp->tf_mask->CM_POST_CSC_C11;
- gam_regs.shifts.csc_c12 = dpp->tf_shift->CM_POST_CSC_C12;
- gam_regs.masks.csc_c12 = dpp->tf_mask->CM_POST_CSC_C12;
-
- if (select == INPUT_CSC_SELECT_ICSC) {
-
- gam_regs.csc_c11_c12 = REG(CM_POST_CSC_C11_C12);
- gam_regs.csc_c33_c34 = REG(CM_POST_CSC_C33_C34);
-
- } else {
-
- gam_regs.csc_c11_c12 = REG(CM_POST_CSC_B_C11_C12);
- gam_regs.csc_c33_c34 = REG(CM_POST_CSC_B_C33_C34);
-
- }
-
- cm_helper_program_color_matrices(
- dpp->base.ctx,
- regval,
- &gam_regs);
-
- REG_SET(CM_POST_CSC_CONTROL, 0,
- CM_POST_CSC_MODE, select);
-}
-
-
-/*CNVC degam unit has read only LUTs*/
-void dpp3_set_pre_degam(struct dpp *dpp_base, enum dc_transfer_func_predefined tr)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- int pre_degam_en = 1;
- int degamma_lut_selection = 0;
-
- switch (tr) {
- case TRANSFER_FUNCTION_LINEAR:
- case TRANSFER_FUNCTION_UNITY:
- pre_degam_en = 0; //bypass
- break;
- case TRANSFER_FUNCTION_SRGB:
- degamma_lut_selection = 0;
- break;
- case TRANSFER_FUNCTION_BT709:
- degamma_lut_selection = 4;
- break;
- case TRANSFER_FUNCTION_PQ:
- degamma_lut_selection = 5;
- break;
- case TRANSFER_FUNCTION_HLG:
- degamma_lut_selection = 6;
- break;
- case TRANSFER_FUNCTION_GAMMA22:
- degamma_lut_selection = 1;
- break;
- case TRANSFER_FUNCTION_GAMMA24:
- degamma_lut_selection = 2;
- break;
- case TRANSFER_FUNCTION_GAMMA26:
- degamma_lut_selection = 3;
- break;
- default:
- pre_degam_en = 0;
- break;
- }
-
- REG_SET_2(PRE_DEGAM, 0,
- PRE_DEGAM_MODE, pre_degam_en,
- PRE_DEGAM_SELECT, degamma_lut_selection);
-}
-
-void dpp3_cnv_setup (
- struct dpp *dpp_base,
- enum surface_pixel_format format,
- enum expansion_mode mode,
- struct dc_csc_transform input_csc_color_matrix,
- enum dc_color_space input_color_space,
- struct cnv_alpha_2bit_lut *alpha_2bit_lut)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- uint32_t pixel_format = 0;
- uint32_t alpha_en = 1;
- enum dc_color_space color_space = COLOR_SPACE_SRGB;
- enum dcn10_input_csc_select select = INPUT_CSC_SELECT_BYPASS;
- bool force_disable_cursor = false;
- uint32_t is_2bit = 0;
- uint32_t alpha_plane_enable = 0;
- uint32_t dealpha_en = 0, dealpha_ablnd_en = 0;
- uint32_t realpha_en = 0, realpha_ablnd_en = 0;
- uint32_t program_prealpha_dealpha = 0;
- struct out_csc_color_matrix tbl_entry;
- int i;
-
- REG_SET_2(FORMAT_CONTROL, 0,
- CNVC_BYPASS, 0,
- FORMAT_EXPANSION_MODE, mode);
-
- REG_UPDATE(FORMAT_CONTROL, FORMAT_CNV16, 0);
- REG_UPDATE(FORMAT_CONTROL, CNVC_BYPASS_MSB_ALIGN, 0);
- REG_UPDATE(FORMAT_CONTROL, CLAMP_POSITIVE, 0);
- REG_UPDATE(FORMAT_CONTROL, CLAMP_POSITIVE_C, 0);
-
- REG_UPDATE(FORMAT_CONTROL, FORMAT_CROSSBAR_R, 0);
- REG_UPDATE(FORMAT_CONTROL, FORMAT_CROSSBAR_G, 1);
- REG_UPDATE(FORMAT_CONTROL, FORMAT_CROSSBAR_B, 2);
-
- switch (format) {
- case SURFACE_PIXEL_FORMAT_GRPH_ARGB1555:
- pixel_format = 1;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_RGB565:
- pixel_format = 3;
- alpha_en = 0;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_ARGB8888:
- case SURFACE_PIXEL_FORMAT_GRPH_ABGR8888:
- pixel_format = 8;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_ARGB2101010:
- case SURFACE_PIXEL_FORMAT_GRPH_ABGR2101010:
- pixel_format = 10;
- is_2bit = 1;
- break;
- case SURFACE_PIXEL_FORMAT_VIDEO_420_YCbCr:
- force_disable_cursor = false;
- pixel_format = 65;
- color_space = COLOR_SPACE_YCBCR709;
- select = INPUT_CSC_SELECT_ICSC;
- break;
- case SURFACE_PIXEL_FORMAT_VIDEO_420_YCrCb:
- force_disable_cursor = true;
- pixel_format = 64;
- color_space = COLOR_SPACE_YCBCR709;
- select = INPUT_CSC_SELECT_ICSC;
- break;
- case SURFACE_PIXEL_FORMAT_VIDEO_420_10bpc_YCbCr:
- force_disable_cursor = true;
- pixel_format = 67;
- color_space = COLOR_SPACE_YCBCR709;
- select = INPUT_CSC_SELECT_ICSC;
- break;
- case SURFACE_PIXEL_FORMAT_VIDEO_420_10bpc_YCrCb:
- force_disable_cursor = true;
- pixel_format = 66;
- color_space = COLOR_SPACE_YCBCR709;
- select = INPUT_CSC_SELECT_ICSC;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_ARGB16161616:
- case SURFACE_PIXEL_FORMAT_GRPH_ABGR16161616:
- pixel_format = 26; /* ARGB16161616_UNORM */
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_ARGB16161616F:
- pixel_format = 24;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_ABGR16161616F:
- pixel_format = 25;
- break;
- case SURFACE_PIXEL_FORMAT_VIDEO_AYCrCb8888:
- pixel_format = 12;
- color_space = COLOR_SPACE_YCBCR709;
- select = INPUT_CSC_SELECT_ICSC;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_RGB111110_FIX:
- pixel_format = 112;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_BGR101111_FIX:
- pixel_format = 113;
- break;
- case SURFACE_PIXEL_FORMAT_VIDEO_ACrYCb2101010:
- pixel_format = 114;
- color_space = COLOR_SPACE_YCBCR709;
- select = INPUT_CSC_SELECT_ICSC;
- is_2bit = 1;
- break;
- case SURFACE_PIXEL_FORMAT_VIDEO_CrYCbA1010102:
- pixel_format = 115;
- color_space = COLOR_SPACE_YCBCR709;
- select = INPUT_CSC_SELECT_ICSC;
- is_2bit = 1;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_RGBE:
- pixel_format = 116;
- alpha_plane_enable = 0;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_RGBE_ALPHA:
- pixel_format = 116;
- alpha_plane_enable = 1;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_RGB111110_FLOAT:
- pixel_format = 118;
- break;
- case SURFACE_PIXEL_FORMAT_GRPH_BGR101111_FLOAT:
- pixel_format = 119;
- break;
- default:
- break;
- }
-
- /* Set default color space based on format if none is given. */
- color_space = input_color_space ? input_color_space : color_space;
-
- if (is_2bit == 1 && alpha_2bit_lut != NULL) {
- REG_UPDATE(ALPHA_2BIT_LUT, ALPHA_2BIT_LUT0, alpha_2bit_lut->lut0);
- REG_UPDATE(ALPHA_2BIT_LUT, ALPHA_2BIT_LUT1, alpha_2bit_lut->lut1);
- REG_UPDATE(ALPHA_2BIT_LUT, ALPHA_2BIT_LUT2, alpha_2bit_lut->lut2);
- REG_UPDATE(ALPHA_2BIT_LUT, ALPHA_2BIT_LUT3, alpha_2bit_lut->lut3);
- }
-
- REG_SET_2(CNVC_SURFACE_PIXEL_FORMAT, 0,
- CNVC_SURFACE_PIXEL_FORMAT, pixel_format,
- CNVC_ALPHA_PLANE_ENABLE, alpha_plane_enable);
- REG_UPDATE(FORMAT_CONTROL, FORMAT_CONTROL__ALPHA_EN, alpha_en);
-
- if (program_prealpha_dealpha) {
- dealpha_en = 1;
- realpha_en = 1;
- }
- REG_SET_2(PRE_DEALPHA, 0,
- PRE_DEALPHA_EN, dealpha_en,
- PRE_DEALPHA_ABLND_EN, dealpha_ablnd_en);
- REG_SET_2(PRE_REALPHA, 0,
- PRE_REALPHA_EN, realpha_en,
- PRE_REALPHA_ABLND_EN, realpha_ablnd_en);
-
- /* If input adjustment exists, program the ICSC with those values. */
- if (input_csc_color_matrix.enable_adjustment == true) {
- for (i = 0; i < 12; i++)
- tbl_entry.regval[i] = input_csc_color_matrix.matrix[i];
-
- tbl_entry.color_space = input_color_space;
-
- if (color_space >= COLOR_SPACE_YCBCR601)
- select = INPUT_CSC_SELECT_ICSC;
- else
- select = INPUT_CSC_SELECT_BYPASS;
-
- dpp3_program_post_csc(dpp_base, color_space, select,
- &tbl_entry);
- } else {
- dpp3_program_post_csc(dpp_base, color_space, select, NULL);
- }
-
- if (force_disable_cursor) {
- REG_UPDATE(CURSOR_CONTROL,
- CURSOR_ENABLE, 0);
- REG_UPDATE(CURSOR0_CONTROL,
- CUR0_ENABLE, 0);
- }
-}
-
-#define IDENTITY_RATIO(ratio) (dc_fixpt_u3d19(ratio) == (1 << 19))
-
-void dpp3_set_cursor_attributes(
- struct dpp *dpp_base,
- struct dc_cursor_attributes *cursor_attributes)
-{
- enum dc_cursor_color_format color_format = cursor_attributes->color_format;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- int cur_rom_en = 0;
-
- if (color_format == CURSOR_MODE_COLOR_PRE_MULTIPLIED_ALPHA ||
- color_format == CURSOR_MODE_COLOR_UN_PRE_MULTIPLIED_ALPHA) {
- if (cursor_attributes->attribute_flags.bits.ENABLE_CURSOR_DEGAMMA) {
- cur_rom_en = 1;
- }
- }
-
- REG_UPDATE_3(CURSOR0_CONTROL,
- CUR0_MODE, color_format,
- CUR0_EXPANSION_MODE, 0,
- CUR0_ROM_EN, cur_rom_en);
-
- if (color_format == CURSOR_MODE_MONO) {
- /* todo: clarify what to program these to */
- REG_UPDATE(CURSOR0_COLOR0,
- CUR0_COLOR0, 0x00000000);
- REG_UPDATE(CURSOR0_COLOR1,
- CUR0_COLOR1, 0xFFFFFFFF);
- }
-
- dpp_base->att.cur0_ctl.bits.expansion_mode = 0;
- dpp_base->att.cur0_ctl.bits.cur0_rom_en = cur_rom_en;
- dpp_base->att.cur0_ctl.bits.mode = color_format;
-}
-
-
-bool dpp3_get_optimal_number_of_taps(
- struct dpp *dpp,
- struct scaler_data *scl_data,
- const struct scaling_taps *in_taps)
-{
- int num_part_y, num_part_c;
- int max_taps_y, max_taps_c;
- int min_taps_y, min_taps_c;
- enum lb_memory_config lb_config;
-
- if (scl_data->viewport.width > scl_data->h_active &&
- dpp->ctx->dc->debug.max_downscale_src_width != 0 &&
- scl_data->viewport.width > dpp->ctx->dc->debug.max_downscale_src_width)
- return false;
-
- /*
- * Set default taps if none are provided
- * From programming guide: taps = min{ ceil(2*H_RATIO,1), 8} for downscaling
- * taps = 4 for upscaling
- */
- if (in_taps->h_taps == 0) {
- if (dc_fixpt_ceil(scl_data->ratios.horz) > 1)
- scl_data->taps.h_taps = min(2 * dc_fixpt_ceil(scl_data->ratios.horz), 8);
- else
- scl_data->taps.h_taps = 4;
- } else
- scl_data->taps.h_taps = in_taps->h_taps;
- if (in_taps->v_taps == 0) {
- if (dc_fixpt_ceil(scl_data->ratios.vert) > 1)
- scl_data->taps.v_taps = min(dc_fixpt_ceil(dc_fixpt_mul_int(scl_data->ratios.vert, 2)), 8);
- else
- scl_data->taps.v_taps = 4;
- } else
- scl_data->taps.v_taps = in_taps->v_taps;
- if (in_taps->v_taps_c == 0) {
- if (dc_fixpt_ceil(scl_data->ratios.vert_c) > 1)
- scl_data->taps.v_taps_c = min(dc_fixpt_ceil(dc_fixpt_mul_int(scl_data->ratios.vert_c, 2)), 8);
- else
- scl_data->taps.v_taps_c = 4;
- } else
- scl_data->taps.v_taps_c = in_taps->v_taps_c;
- if (in_taps->h_taps_c == 0) {
- if (dc_fixpt_ceil(scl_data->ratios.horz_c) > 1)
- scl_data->taps.h_taps_c = min(2 * dc_fixpt_ceil(scl_data->ratios.horz_c), 8);
- else
- scl_data->taps.h_taps_c = 4;
- } else if ((in_taps->h_taps_c % 2) != 0 && in_taps->h_taps_c != 1)
- /* Only 1 and even h_taps_c are supported by hw */
- scl_data->taps.h_taps_c = in_taps->h_taps_c - 1;
- else
- scl_data->taps.h_taps_c = in_taps->h_taps_c;
-
- /*Ensure we can support the requested number of vtaps*/
- min_taps_y = dc_fixpt_ceil(scl_data->ratios.vert);
- min_taps_c = dc_fixpt_ceil(scl_data->ratios.vert_c);
-
- /* Use LB_MEMORY_CONFIG_3 for 4:2:0 */
- if ((scl_data->format == PIXEL_FORMAT_420BPP8) || (scl_data->format == PIXEL_FORMAT_420BPP10))
- lb_config = LB_MEMORY_CONFIG_3;
- else
- lb_config = LB_MEMORY_CONFIG_0;
-
- dpp->caps->dscl_calc_lb_num_partitions(
- scl_data, lb_config, &num_part_y, &num_part_c);
-
- /* MAX_V_TAPS = MIN (NUM_LINES - MAX(CEILING(V_RATIO,1)-2, 0), 8) */
- if (dc_fixpt_ceil(scl_data->ratios.vert) > 2)
- max_taps_y = num_part_y - (dc_fixpt_ceil(scl_data->ratios.vert) - 2);
- else
- max_taps_y = num_part_y;
-
- if (dc_fixpt_ceil(scl_data->ratios.vert_c) > 2)
- max_taps_c = num_part_c - (dc_fixpt_ceil(scl_data->ratios.vert_c) - 2);
- else
- max_taps_c = num_part_c;
-
- if (max_taps_y < min_taps_y)
- return false;
- else if (max_taps_c < min_taps_c)
- return false;
-
- if (scl_data->taps.v_taps > max_taps_y)
- scl_data->taps.v_taps = max_taps_y;
-
- if (scl_data->taps.v_taps_c > max_taps_c)
- scl_data->taps.v_taps_c = max_taps_c;
-
- if (!dpp->ctx->dc->debug.always_scale) {
- if (IDENTITY_RATIO(scl_data->ratios.horz))
- scl_data->taps.h_taps = 1;
- if (IDENTITY_RATIO(scl_data->ratios.vert))
- scl_data->taps.v_taps = 1;
- if (IDENTITY_RATIO(scl_data->ratios.horz_c))
- scl_data->taps.h_taps_c = 1;
- if (IDENTITY_RATIO(scl_data->ratios.vert_c))
- scl_data->taps.v_taps_c = 1;
- }
-
- return true;
-}
-
-static void dpp3_deferred_update(struct dpp *dpp_base)
-{
- int bypass_state;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (dpp_base->deferred_reg_writes.bits.disable_dscl) {
- REG_UPDATE(DSCL_MEM_PWR_CTRL, LUT_MEM_PWR_FORCE, 3);
- dpp_base->deferred_reg_writes.bits.disable_dscl = false;
- }
-
- if (dpp_base->deferred_reg_writes.bits.disable_gamcor) {
- REG_GET(CM_GAMCOR_CONTROL, CM_GAMCOR_MODE_CURRENT, &bypass_state);
- if (bypass_state == 0) { // only program if bypass was latched
- REG_UPDATE(CM_MEM_PWR_CTRL, GAMCOR_MEM_PWR_FORCE, 3);
- } else
- ASSERT(0); // LUT select was updated again before vupdate
- dpp_base->deferred_reg_writes.bits.disable_gamcor = false;
- }
-
- if (dpp_base->deferred_reg_writes.bits.disable_blnd_lut) {
- REG_GET(CM_BLNDGAM_CONTROL, CM_BLNDGAM_MODE_CURRENT, &bypass_state);
- if (bypass_state == 0) { // only program if bypass was latched
- REG_UPDATE(CM_MEM_PWR_CTRL, BLNDGAM_MEM_PWR_FORCE, 3);
- } else
- ASSERT(0); // LUT select was updated again before vupdate
- dpp_base->deferred_reg_writes.bits.disable_blnd_lut = false;
- }
-
- if (dpp_base->deferred_reg_writes.bits.disable_3dlut) {
- REG_GET(CM_3DLUT_MODE, CM_3DLUT_MODE_CURRENT, &bypass_state);
- if (bypass_state == 0) { // only program if bypass was latched
- REG_UPDATE(CM_MEM_PWR_CTRL2, HDR3DLUT_MEM_PWR_FORCE, 3);
- } else
- ASSERT(0); // LUT select was updated again before vupdate
- dpp_base->deferred_reg_writes.bits.disable_3dlut = false;
- }
-
- if (dpp_base->deferred_reg_writes.bits.disable_shaper) {
- REG_GET(CM_SHAPER_CONTROL, CM_SHAPER_MODE_CURRENT, &bypass_state);
- if (bypass_state == 0) { // only program if bypass was latched
- REG_UPDATE(CM_MEM_PWR_CTRL2, SHAPER_MEM_PWR_FORCE, 3);
- } else
- ASSERT(0); // LUT select was updated again before vupdate
- dpp_base->deferred_reg_writes.bits.disable_shaper = false;
- }
-}
-
-static void dpp3_power_on_blnd_lut(
- struct dpp *dpp_base,
- bool power_on)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm) {
- if (power_on) {
- REG_UPDATE(CM_MEM_PWR_CTRL, BLNDGAM_MEM_PWR_FORCE, 0);
- REG_WAIT(CM_MEM_PWR_STATUS, BLNDGAM_MEM_PWR_STATE, 0, 1, 5);
- } else {
- dpp_base->ctx->dc->optimized_required = true;
- dpp_base->deferred_reg_writes.bits.disable_blnd_lut = true;
- }
- } else {
- REG_SET(CM_MEM_PWR_CTRL, 0,
- BLNDGAM_MEM_PWR_FORCE, power_on == true ? 0 : 1);
- }
-}
-
-static void dpp3_power_on_hdr3dlut(
- struct dpp *dpp_base,
- bool power_on)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm) {
- if (power_on) {
- REG_UPDATE(CM_MEM_PWR_CTRL2, HDR3DLUT_MEM_PWR_FORCE, 0);
- REG_WAIT(CM_MEM_PWR_STATUS2, HDR3DLUT_MEM_PWR_STATE, 0, 1, 5);
- } else {
- dpp_base->ctx->dc->optimized_required = true;
- dpp_base->deferred_reg_writes.bits.disable_3dlut = true;
- }
- }
-}
-
-static void dpp3_power_on_shaper(
- struct dpp *dpp_base,
- bool power_on)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm) {
- if (power_on) {
- REG_UPDATE(CM_MEM_PWR_CTRL2, SHAPER_MEM_PWR_FORCE, 0);
- REG_WAIT(CM_MEM_PWR_STATUS2, SHAPER_MEM_PWR_STATE, 0, 1, 5);
- } else {
- dpp_base->ctx->dc->optimized_required = true;
- dpp_base->deferred_reg_writes.bits.disable_shaper = true;
- }
- }
-}
-
-static void dpp3_configure_blnd_lut(
- struct dpp *dpp_base,
- bool is_ram_a)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_UPDATE_2(CM_BLNDGAM_LUT_CONTROL,
- CM_BLNDGAM_LUT_WRITE_COLOR_MASK, 7,
- CM_BLNDGAM_LUT_HOST_SEL, is_ram_a == true ? 0 : 1);
-
- REG_SET(CM_BLNDGAM_LUT_INDEX, 0, CM_BLNDGAM_LUT_INDEX, 0);
-}
-
-static void dpp3_program_blnd_pwl(
- struct dpp *dpp_base,
- const struct pwl_result_data *rgb,
- uint32_t num)
-{
- uint32_t i;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- uint32_t last_base_value_red = rgb[num-1].red_reg + rgb[num-1].delta_red_reg;
- uint32_t last_base_value_green = rgb[num-1].green_reg + rgb[num-1].delta_green_reg;
- uint32_t last_base_value_blue = rgb[num-1].blue_reg + rgb[num-1].delta_blue_reg;
-
- if (is_rgb_equal(rgb, num)) {
- for (i = 0 ; i < num; i++)
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, rgb[i].red_reg);
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, last_base_value_red);
- } else {
- REG_SET(CM_BLNDGAM_LUT_INDEX, 0, CM_BLNDGAM_LUT_INDEX, 0);
- REG_UPDATE(CM_BLNDGAM_LUT_CONTROL, CM_BLNDGAM_LUT_WRITE_COLOR_MASK, 4);
- for (i = 0 ; i < num; i++)
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, rgb[i].red_reg);
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, last_base_value_red);
-
- REG_SET(CM_BLNDGAM_LUT_INDEX, 0, CM_BLNDGAM_LUT_INDEX, 0);
- REG_UPDATE(CM_BLNDGAM_LUT_CONTROL, CM_BLNDGAM_LUT_WRITE_COLOR_MASK, 2);
- for (i = 0 ; i < num; i++)
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, rgb[i].green_reg);
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, last_base_value_green);
-
- REG_SET(CM_BLNDGAM_LUT_INDEX, 0, CM_BLNDGAM_LUT_INDEX, 0);
- REG_UPDATE(CM_BLNDGAM_LUT_CONTROL, CM_BLNDGAM_LUT_WRITE_COLOR_MASK, 1);
- for (i = 0 ; i < num; i++)
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, rgb[i].blue_reg);
- REG_SET(CM_BLNDGAM_LUT_DATA, 0, CM_BLNDGAM_LUT_DATA, last_base_value_blue);
- }
-}
-
-static void dcn3_dpp_cm_get_reg_field(
- struct dcn3_dpp *dpp,
- struct dcn3_xfer_func_reg *reg)
-{
- reg->shifts.exp_region0_lut_offset = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->masks.exp_region0_lut_offset = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->shifts.exp_region0_num_segments = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->masks.exp_region0_num_segments = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->shifts.exp_region1_lut_offset = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->masks.exp_region1_lut_offset = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->shifts.exp_region1_num_segments = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION1_NUM_SEGMENTS;
- reg->masks.exp_region1_num_segments = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION1_NUM_SEGMENTS;
-
- reg->shifts.field_region_end = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION_END_B;
- reg->masks.field_region_end = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION_END_B;
- reg->shifts.field_region_end_slope = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION_END_SLOPE_B;
- reg->masks.field_region_end_slope = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION_END_SLOPE_B;
- reg->shifts.field_region_end_base = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION_END_BASE_B;
- reg->masks.field_region_end_base = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION_END_BASE_B;
- reg->shifts.field_region_linear_slope = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_B;
- reg->masks.field_region_linear_slope = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_B;
- reg->shifts.exp_region_start = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION_START_B;
- reg->masks.exp_region_start = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION_START_B;
- reg->shifts.exp_resion_start_segment = dpp->tf_shift->CM_BLNDGAM_RAMA_EXP_REGION_START_SEGMENT_B;
- reg->masks.exp_resion_start_segment = dpp->tf_mask->CM_BLNDGAM_RAMA_EXP_REGION_START_SEGMENT_B;
-}
-
-/*program blnd lut RAM A*/
-static void dpp3_program_blnd_luta_settings(
- struct dpp *dpp_base,
- const struct pwl_params *params)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- struct dcn3_xfer_func_reg gam_regs;
-
- dcn3_dpp_cm_get_reg_field(dpp, &gam_regs);
-
- gam_regs.start_cntl_b = REG(CM_BLNDGAM_RAMA_START_CNTL_B);
- gam_regs.start_cntl_g = REG(CM_BLNDGAM_RAMA_START_CNTL_G);
- gam_regs.start_cntl_r = REG(CM_BLNDGAM_RAMA_START_CNTL_R);
- gam_regs.start_slope_cntl_b = REG(CM_BLNDGAM_RAMA_START_SLOPE_CNTL_B);
- gam_regs.start_slope_cntl_g = REG(CM_BLNDGAM_RAMA_START_SLOPE_CNTL_G);
- gam_regs.start_slope_cntl_r = REG(CM_BLNDGAM_RAMA_START_SLOPE_CNTL_R);
- gam_regs.start_end_cntl1_b = REG(CM_BLNDGAM_RAMA_END_CNTL1_B);
- gam_regs.start_end_cntl2_b = REG(CM_BLNDGAM_RAMA_END_CNTL2_B);
- gam_regs.start_end_cntl1_g = REG(CM_BLNDGAM_RAMA_END_CNTL1_G);
- gam_regs.start_end_cntl2_g = REG(CM_BLNDGAM_RAMA_END_CNTL2_G);
- gam_regs.start_end_cntl1_r = REG(CM_BLNDGAM_RAMA_END_CNTL1_R);
- gam_regs.start_end_cntl2_r = REG(CM_BLNDGAM_RAMA_END_CNTL2_R);
- gam_regs.region_start = REG(CM_BLNDGAM_RAMA_REGION_0_1);
- gam_regs.region_end = REG(CM_BLNDGAM_RAMA_REGION_32_33);
-
- cm_helper_program_gamcor_xfer_func(dpp->base.ctx, params, &gam_regs);
-}
-
-/*program blnd lut RAM B*/
-static void dpp3_program_blnd_lutb_settings(
- struct dpp *dpp_base,
- const struct pwl_params *params)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- struct dcn3_xfer_func_reg gam_regs;
-
- dcn3_dpp_cm_get_reg_field(dpp, &gam_regs);
-
- gam_regs.start_cntl_b = REG(CM_BLNDGAM_RAMB_START_CNTL_B);
- gam_regs.start_cntl_g = REG(CM_BLNDGAM_RAMB_START_CNTL_G);
- gam_regs.start_cntl_r = REG(CM_BLNDGAM_RAMB_START_CNTL_R);
- gam_regs.start_slope_cntl_b = REG(CM_BLNDGAM_RAMB_START_SLOPE_CNTL_B);
- gam_regs.start_slope_cntl_g = REG(CM_BLNDGAM_RAMB_START_SLOPE_CNTL_G);
- gam_regs.start_slope_cntl_r = REG(CM_BLNDGAM_RAMB_START_SLOPE_CNTL_R);
- gam_regs.start_end_cntl1_b = REG(CM_BLNDGAM_RAMB_END_CNTL1_B);
- gam_regs.start_end_cntl2_b = REG(CM_BLNDGAM_RAMB_END_CNTL2_B);
- gam_regs.start_end_cntl1_g = REG(CM_BLNDGAM_RAMB_END_CNTL1_G);
- gam_regs.start_end_cntl2_g = REG(CM_BLNDGAM_RAMB_END_CNTL2_G);
- gam_regs.start_end_cntl1_r = REG(CM_BLNDGAM_RAMB_END_CNTL1_R);
- gam_regs.start_end_cntl2_r = REG(CM_BLNDGAM_RAMB_END_CNTL2_R);
- gam_regs.region_start = REG(CM_BLNDGAM_RAMB_REGION_0_1);
- gam_regs.region_end = REG(CM_BLNDGAM_RAMB_REGION_32_33);
-
- cm_helper_program_gamcor_xfer_func(dpp->base.ctx, params, &gam_regs);
-}
-
-static enum dc_lut_mode dpp3_get_blndgam_current(struct dpp *dpp_base)
-{
- enum dc_lut_mode mode;
- uint32_t mode_current = 0;
- uint32_t in_use = 0;
-
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_GET(CM_BLNDGAM_CONTROL, CM_BLNDGAM_MODE_CURRENT, &mode_current);
- REG_GET(CM_BLNDGAM_CONTROL, CM_BLNDGAM_SELECT_CURRENT, &in_use);
-
- switch (mode_current) {
- case 0:
- case 1:
- mode = LUT_BYPASS;
- break;
-
- case 2:
- if (in_use == 0)
- mode = LUT_RAM_A;
- else
- mode = LUT_RAM_B;
- break;
- default:
- mode = LUT_BYPASS;
- break;
- }
-
- return mode;
-}
-
-static bool dpp3_program_blnd_lut(struct dpp *dpp_base,
- const struct pwl_params *params)
-{
- enum dc_lut_mode current_mode;
- enum dc_lut_mode next_mode;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (params == NULL) {
- REG_SET(CM_BLNDGAM_CONTROL, 0, CM_BLNDGAM_MODE, 0);
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm)
- dpp3_power_on_blnd_lut(dpp_base, false);
- return false;
- }
-
- current_mode = dpp3_get_blndgam_current(dpp_base);
- if (current_mode == LUT_BYPASS || current_mode == LUT_RAM_B)
- next_mode = LUT_RAM_A;
- else
- next_mode = LUT_RAM_B;
-
- dpp3_power_on_blnd_lut(dpp_base, true);
- dpp3_configure_blnd_lut(dpp_base, next_mode == LUT_RAM_A);
-
- if (next_mode == LUT_RAM_A)
- dpp3_program_blnd_luta_settings(dpp_base, params);
- else
- dpp3_program_blnd_lutb_settings(dpp_base, params);
-
- dpp3_program_blnd_pwl(
- dpp_base, params->rgb_resulted, params->hw_points_num);
-
- REG_UPDATE_2(CM_BLNDGAM_CONTROL,
- CM_BLNDGAM_MODE, 2,
- CM_BLNDGAM_SELECT, next_mode == LUT_RAM_A ? 0 : 1);
-
- return true;
-}
-
-
-static void dpp3_program_shaper_lut(
- struct dpp *dpp_base,
- const struct pwl_result_data *rgb,
- uint32_t num)
-{
- uint32_t i, red, green, blue;
- uint32_t red_delta, green_delta, blue_delta;
- uint32_t red_value, green_value, blue_value;
-
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- for (i = 0 ; i < num; i++) {
-
- red = rgb[i].red_reg;
- green = rgb[i].green_reg;
- blue = rgb[i].blue_reg;
-
- red_delta = rgb[i].delta_red_reg;
- green_delta = rgb[i].delta_green_reg;
- blue_delta = rgb[i].delta_blue_reg;
-
- red_value = ((red_delta & 0x3ff) << 14) | (red & 0x3fff);
- green_value = ((green_delta & 0x3ff) << 14) | (green & 0x3fff);
- blue_value = ((blue_delta & 0x3ff) << 14) | (blue & 0x3fff);
-
- REG_SET(CM_SHAPER_LUT_DATA, 0, CM_SHAPER_LUT_DATA, red_value);
- REG_SET(CM_SHAPER_LUT_DATA, 0, CM_SHAPER_LUT_DATA, green_value);
- REG_SET(CM_SHAPER_LUT_DATA, 0, CM_SHAPER_LUT_DATA, blue_value);
- }
-
-}
-
-static enum dc_lut_mode dpp3_get_shaper_current(struct dpp *dpp_base)
-{
- enum dc_lut_mode mode;
- uint32_t state_mode;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_GET(CM_SHAPER_CONTROL, CM_SHAPER_MODE_CURRENT, &state_mode);
-
- switch (state_mode) {
- case 0:
- mode = LUT_BYPASS;
- break;
- case 1:
- mode = LUT_RAM_A;
- break;
- case 2:
- mode = LUT_RAM_B;
- break;
- default:
- mode = LUT_BYPASS;
- break;
- }
-
- return mode;
-}
-
-static void dpp3_configure_shaper_lut(
- struct dpp *dpp_base,
- bool is_ram_a)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_UPDATE(CM_SHAPER_LUT_WRITE_EN_MASK,
- CM_SHAPER_LUT_WRITE_EN_MASK, 7);
- REG_UPDATE(CM_SHAPER_LUT_WRITE_EN_MASK,
- CM_SHAPER_LUT_WRITE_SEL, is_ram_a == true ? 0:1);
- REG_SET(CM_SHAPER_LUT_INDEX, 0, CM_SHAPER_LUT_INDEX, 0);
-}
-
-/*program shaper RAM A*/
-
-static void dpp3_program_shaper_luta_settings(
- struct dpp *dpp_base,
- const struct pwl_params *params)
-{
- const struct gamma_curve *curve;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_SET_2(CM_SHAPER_RAMA_START_CNTL_B, 0,
- CM_SHAPER_RAMA_EXP_REGION_START_B, params->corner_points[0].blue.custom_float_x,
- CM_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, 0);
- REG_SET_2(CM_SHAPER_RAMA_START_CNTL_G, 0,
- CM_SHAPER_RAMA_EXP_REGION_START_G, params->corner_points[0].green.custom_float_x,
- CM_SHAPER_RAMA_EXP_REGION_START_SEGMENT_G, 0);
- REG_SET_2(CM_SHAPER_RAMA_START_CNTL_R, 0,
- CM_SHAPER_RAMA_EXP_REGION_START_R, params->corner_points[0].red.custom_float_x,
- CM_SHAPER_RAMA_EXP_REGION_START_SEGMENT_R, 0);
-
- REG_SET_2(CM_SHAPER_RAMA_END_CNTL_B, 0,
- CM_SHAPER_RAMA_EXP_REGION_END_B, params->corner_points[1].blue.custom_float_x,
- CM_SHAPER_RAMA_EXP_REGION_END_BASE_B, params->corner_points[1].blue.custom_float_y);
-
- REG_SET_2(CM_SHAPER_RAMA_END_CNTL_G, 0,
- CM_SHAPER_RAMA_EXP_REGION_END_G, params->corner_points[1].green.custom_float_x,
- CM_SHAPER_RAMA_EXP_REGION_END_BASE_G, params->corner_points[1].green.custom_float_y);
-
- REG_SET_2(CM_SHAPER_RAMA_END_CNTL_R, 0,
- CM_SHAPER_RAMA_EXP_REGION_END_R, params->corner_points[1].red.custom_float_x,
- CM_SHAPER_RAMA_EXP_REGION_END_BASE_R, params->corner_points[1].red.custom_float_y);
-
- curve = params->arr_curve_points;
- REG_SET_4(CM_SHAPER_RAMA_REGION_0_1, 0,
- CM_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_2_3, 0,
- CM_SHAPER_RAMA_EXP_REGION2_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION2_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION3_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION3_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_4_5, 0,
- CM_SHAPER_RAMA_EXP_REGION4_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION4_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION5_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION5_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_6_7, 0,
- CM_SHAPER_RAMA_EXP_REGION6_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION6_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION7_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION7_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_8_9, 0,
- CM_SHAPER_RAMA_EXP_REGION8_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION8_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION9_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION9_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_10_11, 0,
- CM_SHAPER_RAMA_EXP_REGION10_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION10_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION11_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION11_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_12_13, 0,
- CM_SHAPER_RAMA_EXP_REGION12_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION12_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION13_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION13_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_14_15, 0,
- CM_SHAPER_RAMA_EXP_REGION14_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION14_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION15_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION15_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_16_17, 0,
- CM_SHAPER_RAMA_EXP_REGION16_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION16_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION17_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION17_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_18_19, 0,
- CM_SHAPER_RAMA_EXP_REGION18_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION18_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION19_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION19_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_20_21, 0,
- CM_SHAPER_RAMA_EXP_REGION20_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION20_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION21_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION21_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_22_23, 0,
- CM_SHAPER_RAMA_EXP_REGION22_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION22_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION23_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION23_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_24_25, 0,
- CM_SHAPER_RAMA_EXP_REGION24_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION24_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION25_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION25_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_26_27, 0,
- CM_SHAPER_RAMA_EXP_REGION26_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION26_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION27_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION27_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_28_29, 0,
- CM_SHAPER_RAMA_EXP_REGION28_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION28_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION29_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION29_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_30_31, 0,
- CM_SHAPER_RAMA_EXP_REGION30_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION30_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION31_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION31_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMA_REGION_32_33, 0,
- CM_SHAPER_RAMA_EXP_REGION32_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMA_EXP_REGION32_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMA_EXP_REGION33_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMA_EXP_REGION33_NUM_SEGMENTS, curve[1].segments_num);
-}
-
-/*program shaper RAM B*/
-static void dpp3_program_shaper_lutb_settings(
- struct dpp *dpp_base,
- const struct pwl_params *params)
-{
- const struct gamma_curve *curve;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_SET_2(CM_SHAPER_RAMB_START_CNTL_B, 0,
- CM_SHAPER_RAMB_EXP_REGION_START_B, params->corner_points[0].blue.custom_float_x,
- CM_SHAPER_RAMB_EXP_REGION_START_SEGMENT_B, 0);
- REG_SET_2(CM_SHAPER_RAMB_START_CNTL_G, 0,
- CM_SHAPER_RAMB_EXP_REGION_START_G, params->corner_points[0].green.custom_float_x,
- CM_SHAPER_RAMB_EXP_REGION_START_SEGMENT_G, 0);
- REG_SET_2(CM_SHAPER_RAMB_START_CNTL_R, 0,
- CM_SHAPER_RAMB_EXP_REGION_START_R, params->corner_points[0].red.custom_float_x,
- CM_SHAPER_RAMB_EXP_REGION_START_SEGMENT_R, 0);
-
- REG_SET_2(CM_SHAPER_RAMB_END_CNTL_B, 0,
- CM_SHAPER_RAMB_EXP_REGION_END_B, params->corner_points[1].blue.custom_float_x,
- CM_SHAPER_RAMB_EXP_REGION_END_BASE_B, params->corner_points[1].blue.custom_float_y);
-
- REG_SET_2(CM_SHAPER_RAMB_END_CNTL_G, 0,
- CM_SHAPER_RAMB_EXP_REGION_END_G, params->corner_points[1].green.custom_float_x,
- CM_SHAPER_RAMB_EXP_REGION_END_BASE_G, params->corner_points[1].green.custom_float_y);
-
- REG_SET_2(CM_SHAPER_RAMB_END_CNTL_R, 0,
- CM_SHAPER_RAMB_EXP_REGION_END_R, params->corner_points[1].red.custom_float_x,
- CM_SHAPER_RAMB_EXP_REGION_END_BASE_R, params->corner_points[1].red.custom_float_y);
-
- curve = params->arr_curve_points;
- REG_SET_4(CM_SHAPER_RAMB_REGION_0_1, 0,
- CM_SHAPER_RAMB_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_2_3, 0,
- CM_SHAPER_RAMB_EXP_REGION2_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION2_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION3_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION3_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_4_5, 0,
- CM_SHAPER_RAMB_EXP_REGION4_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION4_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION5_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION5_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_6_7, 0,
- CM_SHAPER_RAMB_EXP_REGION6_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION6_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION7_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION7_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_8_9, 0,
- CM_SHAPER_RAMB_EXP_REGION8_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION8_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION9_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION9_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_10_11, 0,
- CM_SHAPER_RAMB_EXP_REGION10_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION10_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION11_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION11_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_12_13, 0,
- CM_SHAPER_RAMB_EXP_REGION12_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION12_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION13_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION13_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_14_15, 0,
- CM_SHAPER_RAMB_EXP_REGION14_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION14_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION15_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION15_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_16_17, 0,
- CM_SHAPER_RAMB_EXP_REGION16_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION16_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION17_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION17_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_18_19, 0,
- CM_SHAPER_RAMB_EXP_REGION18_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION18_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION19_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION19_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_20_21, 0,
- CM_SHAPER_RAMB_EXP_REGION20_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION20_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION21_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION21_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_22_23, 0,
- CM_SHAPER_RAMB_EXP_REGION22_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION22_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION23_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION23_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_24_25, 0,
- CM_SHAPER_RAMB_EXP_REGION24_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION24_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION25_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION25_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_26_27, 0,
- CM_SHAPER_RAMB_EXP_REGION26_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION26_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION27_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION27_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_28_29, 0,
- CM_SHAPER_RAMB_EXP_REGION28_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION28_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION29_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION29_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_30_31, 0,
- CM_SHAPER_RAMB_EXP_REGION30_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION30_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION31_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION31_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(CM_SHAPER_RAMB_REGION_32_33, 0,
- CM_SHAPER_RAMB_EXP_REGION32_LUT_OFFSET, curve[0].offset,
- CM_SHAPER_RAMB_EXP_REGION32_NUM_SEGMENTS, curve[0].segments_num,
- CM_SHAPER_RAMB_EXP_REGION33_LUT_OFFSET, curve[1].offset,
- CM_SHAPER_RAMB_EXP_REGION33_NUM_SEGMENTS, curve[1].segments_num);
-
-}
-
-
-static bool dpp3_program_shaper(struct dpp *dpp_base,
- const struct pwl_params *params)
-{
- enum dc_lut_mode current_mode;
- enum dc_lut_mode next_mode;
-
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (params == NULL) {
- REG_SET(CM_SHAPER_CONTROL, 0, CM_SHAPER_LUT_MODE, 0);
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm)
- dpp3_power_on_shaper(dpp_base, false);
- return false;
- }
-
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm)
- dpp3_power_on_shaper(dpp_base, true);
-
- current_mode = dpp3_get_shaper_current(dpp_base);
-
- if (current_mode == LUT_BYPASS || current_mode == LUT_RAM_A)
- next_mode = LUT_RAM_B;
- else
- next_mode = LUT_RAM_A;
-
- dpp3_configure_shaper_lut(dpp_base, next_mode == LUT_RAM_A);
-
- if (next_mode == LUT_RAM_A)
- dpp3_program_shaper_luta_settings(dpp_base, params);
- else
- dpp3_program_shaper_lutb_settings(dpp_base, params);
-
- dpp3_program_shaper_lut(
- dpp_base, params->rgb_resulted, params->hw_points_num);
-
- REG_SET(CM_SHAPER_CONTROL, 0, CM_SHAPER_LUT_MODE, next_mode == LUT_RAM_A ? 1:2);
-
- return true;
-
-}
-
-static enum dc_lut_mode get3dlut_config(
- struct dpp *dpp_base,
- bool *is_17x17x17,
- bool *is_12bits_color_channel)
-{
- uint32_t i_mode, i_enable_10bits, lut_size;
- enum dc_lut_mode mode;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_GET(CM_3DLUT_READ_WRITE_CONTROL,
- CM_3DLUT_30BIT_EN, &i_enable_10bits);
- REG_GET(CM_3DLUT_MODE,
- CM_3DLUT_MODE_CURRENT, &i_mode);
-
- switch (i_mode) {
- case 0:
- mode = LUT_BYPASS;
- break;
- case 1:
- mode = LUT_RAM_A;
- break;
- case 2:
- mode = LUT_RAM_B;
- break;
- default:
- mode = LUT_BYPASS;
- break;
- }
- if (i_enable_10bits > 0)
- *is_12bits_color_channel = false;
- else
- *is_12bits_color_channel = true;
-
- REG_GET(CM_3DLUT_MODE, CM_3DLUT_SIZE, &lut_size);
-
- if (lut_size == 0)
- *is_17x17x17 = true;
- else
- *is_17x17x17 = false;
-
- return mode;
-}
-/*
- * select ramA or ramB, or bypass
- * select color channel size 10 or 12 bits
- * select 3dlut size 17x17x17 or 9x9x9
- */
-static void dpp3_set_3dlut_mode(
- struct dpp *dpp_base,
- enum dc_lut_mode mode,
- bool is_color_channel_12bits,
- bool is_lut_size17x17x17)
-{
- uint32_t lut_mode;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (mode == LUT_BYPASS)
- lut_mode = 0;
- else if (mode == LUT_RAM_A)
- lut_mode = 1;
- else
- lut_mode = 2;
-
- REG_UPDATE_2(CM_3DLUT_MODE,
- CM_3DLUT_MODE, lut_mode,
- CM_3DLUT_SIZE, is_lut_size17x17x17 == true ? 0 : 1);
-}
-
-static void dpp3_select_3dlut_ram(
- struct dpp *dpp_base,
- enum dc_lut_mode mode,
- bool is_color_channel_12bits)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_UPDATE_2(CM_3DLUT_READ_WRITE_CONTROL,
- CM_3DLUT_RAM_SEL, mode == LUT_RAM_A ? 0 : 1,
- CM_3DLUT_30BIT_EN,
- is_color_channel_12bits == true ? 0:1);
-}
-
-
-
-static void dpp3_set3dlut_ram12(
- struct dpp *dpp_base,
- const struct dc_rgb *lut,
- uint32_t entries)
-{
- uint32_t i, red, green, blue, red1, green1, blue1;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- for (i = 0 ; i < entries; i += 2) {
- red = lut[i].red<<4;
- green = lut[i].green<<4;
- blue = lut[i].blue<<4;
- red1 = lut[i+1].red<<4;
- green1 = lut[i+1].green<<4;
- blue1 = lut[i+1].blue<<4;
-
- REG_SET_2(CM_3DLUT_DATA, 0,
- CM_3DLUT_DATA0, red,
- CM_3DLUT_DATA1, red1);
-
- REG_SET_2(CM_3DLUT_DATA, 0,
- CM_3DLUT_DATA0, green,
- CM_3DLUT_DATA1, green1);
-
- REG_SET_2(CM_3DLUT_DATA, 0,
- CM_3DLUT_DATA0, blue,
- CM_3DLUT_DATA1, blue1);
-
- }
-}
-
-/*
- * load selected lut with 10 bits color channels
- */
-static void dpp3_set3dlut_ram10(
- struct dpp *dpp_base,
- const struct dc_rgb *lut,
- uint32_t entries)
-{
- uint32_t i, red, green, blue, value;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- for (i = 0; i < entries; i++) {
- red = lut[i].red;
- green = lut[i].green;
- blue = lut[i].blue;
-
- value = (red<<20) | (green<<10) | blue;
-
- REG_SET(CM_3DLUT_DATA_30BIT, 0, CM_3DLUT_DATA_30BIT, value);
- }
-
-}
-
-
-static void dpp3_select_3dlut_ram_mask(
- struct dpp *dpp_base,
- uint32_t ram_selection_mask)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_UPDATE(CM_3DLUT_READ_WRITE_CONTROL, CM_3DLUT_WRITE_EN_MASK,
- ram_selection_mask);
- REG_SET(CM_3DLUT_INDEX, 0, CM_3DLUT_INDEX, 0);
-}
-
-static bool dpp3_program_3dlut(struct dpp *dpp_base,
- struct tetrahedral_params *params)
-{
- enum dc_lut_mode mode;
- bool is_17x17x17;
- bool is_12bits_color_channel;
- struct dc_rgb *lut0;
- struct dc_rgb *lut1;
- struct dc_rgb *lut2;
- struct dc_rgb *lut3;
- int lut_size0;
- int lut_size;
-
- if (params == NULL) {
- dpp3_set_3dlut_mode(dpp_base, LUT_BYPASS, false, false);
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm)
- dpp3_power_on_hdr3dlut(dpp_base, false);
- return false;
- }
-
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm)
- dpp3_power_on_hdr3dlut(dpp_base, true);
-
- mode = get3dlut_config(dpp_base, &is_17x17x17, &is_12bits_color_channel);
-
- if (mode == LUT_BYPASS || mode == LUT_RAM_B)
- mode = LUT_RAM_A;
- else
- mode = LUT_RAM_B;
-
- is_17x17x17 = !params->use_tetrahedral_9;
- is_12bits_color_channel = params->use_12bits;
- if (is_17x17x17) {
- lut0 = params->tetrahedral_17.lut0;
- lut1 = params->tetrahedral_17.lut1;
- lut2 = params->tetrahedral_17.lut2;
- lut3 = params->tetrahedral_17.lut3;
- lut_size0 = sizeof(params->tetrahedral_17.lut0)/
- sizeof(params->tetrahedral_17.lut0[0]);
- lut_size = sizeof(params->tetrahedral_17.lut1)/
- sizeof(params->tetrahedral_17.lut1[0]);
- } else {
- lut0 = params->tetrahedral_9.lut0;
- lut1 = params->tetrahedral_9.lut1;
- lut2 = params->tetrahedral_9.lut2;
- lut3 = params->tetrahedral_9.lut3;
- lut_size0 = sizeof(params->tetrahedral_9.lut0)/
- sizeof(params->tetrahedral_9.lut0[0]);
- lut_size = sizeof(params->tetrahedral_9.lut1)/
- sizeof(params->tetrahedral_9.lut1[0]);
- }
-
- dpp3_select_3dlut_ram(dpp_base, mode,
- is_12bits_color_channel);
- dpp3_select_3dlut_ram_mask(dpp_base, 0x1);
- if (is_12bits_color_channel)
- dpp3_set3dlut_ram12(dpp_base, lut0, lut_size0);
- else
- dpp3_set3dlut_ram10(dpp_base, lut0, lut_size0);
-
- dpp3_select_3dlut_ram_mask(dpp_base, 0x2);
- if (is_12bits_color_channel)
- dpp3_set3dlut_ram12(dpp_base, lut1, lut_size);
- else
- dpp3_set3dlut_ram10(dpp_base, lut1, lut_size);
-
- dpp3_select_3dlut_ram_mask(dpp_base, 0x4);
- if (is_12bits_color_channel)
- dpp3_set3dlut_ram12(dpp_base, lut2, lut_size);
- else
- dpp3_set3dlut_ram10(dpp_base, lut2, lut_size);
-
- dpp3_select_3dlut_ram_mask(dpp_base, 0x8);
- if (is_12bits_color_channel)
- dpp3_set3dlut_ram12(dpp_base, lut3, lut_size);
- else
- dpp3_set3dlut_ram10(dpp_base, lut3, lut_size);
-
-
- dpp3_set_3dlut_mode(dpp_base, mode, is_12bits_color_channel,
- is_17x17x17);
-
- return true;
-}
-static struct dpp_funcs dcn30_dpp_funcs = {
- .dpp_program_gamcor_lut = dpp3_program_gamcor_lut,
- .dpp_read_state = dpp30_read_state,
- .dpp_reset = dpp_reset,
- .dpp_set_scaler = dpp1_dscl_set_scaler_manual_scale,
- .dpp_get_optimal_number_of_taps = dpp3_get_optimal_number_of_taps,
- .dpp_set_gamut_remap = dpp3_cm_set_gamut_remap,
- .dpp_set_csc_adjustment = NULL,
- .dpp_set_csc_default = NULL,
- .dpp_program_regamma_pwl = NULL,
- .dpp_set_pre_degam = dpp3_set_pre_degam,
- .dpp_program_input_lut = NULL,
- .dpp_full_bypass = dpp1_full_bypass,
- .dpp_setup = dpp3_cnv_setup,
- .dpp_program_degamma_pwl = NULL,
- .dpp_program_cm_dealpha = dpp3_program_cm_dealpha,
- .dpp_program_cm_bias = dpp3_program_cm_bias,
- .dpp_program_blnd_lut = dpp3_program_blnd_lut,
- .dpp_program_shaper_lut = dpp3_program_shaper,
- .dpp_program_3dlut = dpp3_program_3dlut,
- .dpp_deferred_update = dpp3_deferred_update,
- .dpp_program_bias_and_scale = NULL,
- .dpp_cnv_set_alpha_keyer = dpp2_cnv_set_alpha_keyer,
- .set_cursor_attributes = dpp3_set_cursor_attributes,
- .set_cursor_position = dpp1_set_cursor_position,
- .set_optional_cursor_attributes = dpp1_cnv_set_optional_cursor_attributes,
- .dpp_dppclk_control = dpp1_dppclk_control,
- .dpp_set_hdr_multiplier = dpp3_set_hdr_multiplier,
- .dpp_get_gamut_remap = dpp3_cm_get_gamut_remap,
-};
-
-
-static struct dpp_caps dcn30_dpp_cap = {
- .dscl_data_proc_format = DSCL_DATA_PRCESSING_FLOAT_FORMAT,
- .dscl_calc_lb_num_partitions = dscl2_calc_lb_num_partitions,
-};
-
-bool dpp3_construct(
- struct dcn3_dpp *dpp,
- struct dc_context *ctx,
- uint32_t inst,
- const struct dcn3_dpp_registers *tf_regs,
- const struct dcn3_dpp_shift *tf_shift,
- const struct dcn3_dpp_mask *tf_mask)
-{
- dpp->base.ctx = ctx;
-
- dpp->base.inst = inst;
- dpp->base.funcs = &dcn30_dpp_funcs;
- dpp->base.caps = &dcn30_dpp_cap;
-
- dpp->tf_regs = tf_regs;
- dpp->tf_shift = tf_shift;
- dpp->tf_mask = tf_mask;
-
- return true;
-}
-
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.h
deleted file mode 100644
index 2ac8045a87a1..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp.h
+++ /dev/null
@@ -1,642 +0,0 @@
-/* Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DCN30_DPP_H__
-#define __DCN30_DPP_H__
-
-#include "dcn20/dcn20_dpp.h"
-
-#define TO_DCN30_DPP(dpp)\
- container_of(dpp, struct dcn3_dpp, base)
-
-#define DPP_REG_LIST_DCN30_COMMON(id)\
- SRI(CM_DEALPHA, CM, id),\
- SRI(CM_MEM_PWR_STATUS, CM, id),\
- SRI(CM_BIAS_CR_R, CM, id),\
- SRI(CM_BIAS_Y_G_CB_B, CM, id),\
- SRI(PRE_DEGAM, CNVC_CFG, id),\
- SRI(CM_GAMCOR_CONTROL, CM, id),\
- SRI(CM_GAMCOR_LUT_CONTROL, CM, id),\
- SRI(CM_GAMCOR_LUT_INDEX, CM, id),\
- SRI(CM_GAMCOR_LUT_INDEX, CM, id),\
- SRI(CM_GAMCOR_LUT_DATA, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_CNTL_B, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_CNTL_G, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_CNTL_R, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_SLOPE_CNTL_B, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_SLOPE_CNTL_G, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_SLOPE_CNTL_R, CM, id),\
- SRI(CM_GAMCOR_RAMB_END_CNTL1_B, CM, id),\
- SRI(CM_GAMCOR_RAMB_END_CNTL2_B, CM, id),\
- SRI(CM_GAMCOR_RAMB_END_CNTL1_G, CM, id),\
- SRI(CM_GAMCOR_RAMB_END_CNTL2_G, CM, id),\
- SRI(CM_GAMCOR_RAMB_END_CNTL1_R, CM, id),\
- SRI(CM_GAMCOR_RAMB_END_CNTL2_R, CM, id),\
- SRI(CM_GAMCOR_RAMB_REGION_0_1, CM, id),\
- SRI(CM_GAMCOR_RAMB_REGION_32_33, CM, id),\
- SRI(CM_GAMCOR_RAMB_OFFSET_B, CM, id),\
- SRI(CM_GAMCOR_RAMB_OFFSET_G, CM, id),\
- SRI(CM_GAMCOR_RAMB_OFFSET_R, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_BASE_CNTL_B, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_BASE_CNTL_G, CM, id),\
- SRI(CM_GAMCOR_RAMB_START_BASE_CNTL_R, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_CNTL_B, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_CNTL_G, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_CNTL_R, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_SLOPE_CNTL_B, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_SLOPE_CNTL_G, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_SLOPE_CNTL_R, CM, id),\
- SRI(CM_GAMCOR_RAMA_END_CNTL1_B, CM, id),\
- SRI(CM_GAMCOR_RAMA_END_CNTL2_B, CM, id),\
- SRI(CM_GAMCOR_RAMA_END_CNTL1_G, CM, id),\
- SRI(CM_GAMCOR_RAMA_END_CNTL2_G, CM, id),\
- SRI(CM_GAMCOR_RAMA_END_CNTL1_R, CM, id),\
- SRI(CM_GAMCOR_RAMA_END_CNTL2_R, CM, id),\
- SRI(CM_GAMCOR_RAMA_REGION_0_1, CM, id),\
- SRI(CM_GAMCOR_RAMA_REGION_32_33, CM, id),\
- SRI(CM_GAMCOR_RAMA_OFFSET_B, CM, id),\
- SRI(CM_GAMCOR_RAMA_OFFSET_G, CM, id),\
- SRI(CM_GAMCOR_RAMA_OFFSET_R, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_BASE_CNTL_B, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_BASE_CNTL_G, CM, id),\
- SRI(CM_GAMCOR_RAMA_START_BASE_CNTL_R, CM, id),\
- SRI(CM_GAMUT_REMAP_CONTROL, CM, id),\
- SRI(CM_GAMUT_REMAP_C11_C12, CM, id),\
- SRI(CM_GAMUT_REMAP_C13_C14, CM, id),\
- SRI(CM_GAMUT_REMAP_C21_C22, CM, id),\
- SRI(CM_GAMUT_REMAP_C23_C24, CM, id),\
- SRI(CM_GAMUT_REMAP_C31_C32, CM, id),\
- SRI(CM_GAMUT_REMAP_C33_C34, CM, id),\
- SRI(CM_GAMUT_REMAP_B_C11_C12, CM, id),\
- SRI(CM_GAMUT_REMAP_B_C13_C14, CM, id),\
- SRI(CM_GAMUT_REMAP_B_C21_C22, CM, id),\
- SRI(CM_GAMUT_REMAP_B_C23_C24, CM, id),\
- SRI(CM_GAMUT_REMAP_B_C31_C32, CM, id),\
- SRI(CM_GAMUT_REMAP_B_C33_C34, CM, id),\
- SRI(DSCL_EXT_OVERSCAN_LEFT_RIGHT, DSCL, id), \
- SRI(DSCL_EXT_OVERSCAN_TOP_BOTTOM, DSCL, id), \
- SRI(OTG_H_BLANK, DSCL, id), \
- SRI(OTG_V_BLANK, DSCL, id), \
- SRI(SCL_MODE, DSCL, id), \
- SRI(LB_DATA_FORMAT, DSCL, id), \
- SRI(LB_MEMORY_CTRL, DSCL, id), \
- SRI(DSCL_AUTOCAL, DSCL, id), \
- SRI(DSCL_CONTROL, DSCL, id), \
- SRI(SCL_TAP_CONTROL, DSCL, id), \
- SRI(SCL_COEF_RAM_TAP_SELECT, DSCL, id), \
- SRI(SCL_COEF_RAM_TAP_DATA, DSCL, id), \
- SRI(DSCL_2TAP_CONTROL, DSCL, id), \
- SRI(MPC_SIZE, DSCL, id), \
- SRI(SCL_HORZ_FILTER_SCALE_RATIO, DSCL, id), \
- SRI(SCL_VERT_FILTER_SCALE_RATIO, DSCL, id), \
- SRI(SCL_HORZ_FILTER_SCALE_RATIO_C, DSCL, id), \
- SRI(SCL_VERT_FILTER_SCALE_RATIO_C, DSCL, id), \
- SRI(SCL_HORZ_FILTER_INIT, DSCL, id), \
- SRI(SCL_HORZ_FILTER_INIT_C, DSCL, id), \
- SRI(SCL_VERT_FILTER_INIT, DSCL, id), \
- SRI(SCL_VERT_FILTER_INIT_C, DSCL, id), \
- SRI(RECOUT_START, DSCL, id), \
- SRI(RECOUT_SIZE, DSCL, id), \
- SRI(PRE_DEALPHA, CNVC_CFG, id), \
- SRI(PRE_REALPHA, CNVC_CFG, id), \
- SRI(PRE_CSC_MODE, CNVC_CFG, id), \
- SRI(PRE_CSC_C11_C12, CNVC_CFG, id), \
- SRI(PRE_CSC_C33_C34, CNVC_CFG, id), \
- SRI(PRE_CSC_B_C11_C12, CNVC_CFG, id), \
- SRI(PRE_CSC_B_C33_C34, CNVC_CFG, id), \
- SRI(CM_POST_CSC_CONTROL, CM, id), \
- SRI(CM_POST_CSC_C11_C12, CM, id), \
- SRI(CM_POST_CSC_C33_C34, CM, id), \
- SRI(CM_POST_CSC_B_C11_C12, CM, id), \
- SRI(CM_POST_CSC_B_C33_C34, CM, id), \
- SRI(CM_MEM_PWR_CTRL, CM, id), \
- SRI(CM_CONTROL, CM, id), \
- SRI(FORMAT_CONTROL, CNVC_CFG, id), \
- SRI(CNVC_SURFACE_PIXEL_FORMAT, CNVC_CFG, id), \
- SRI(CURSOR0_CONTROL, CNVC_CUR, id), \
- SRI(CURSOR0_COLOR0, CNVC_CUR, id), \
- SRI(CURSOR0_COLOR1, CNVC_CUR, id), \
- SRI(CURSOR0_FP_SCALE_BIAS, CNVC_CUR, id), \
- SRI(DPP_CONTROL, DPP_TOP, id), \
- SRI(CM_HDR_MULT_COEF, CM, id), \
- SRI(CURSOR_CONTROL, CURSOR0_, id), \
- SRI(ALPHA_2BIT_LUT, CNVC_CFG, id), \
- SRI(FCNV_FP_BIAS_R, CNVC_CFG, id), \
- SRI(FCNV_FP_BIAS_G, CNVC_CFG, id), \
- SRI(FCNV_FP_BIAS_B, CNVC_CFG, id), \
- SRI(FCNV_FP_SCALE_R, CNVC_CFG, id), \
- SRI(FCNV_FP_SCALE_G, CNVC_CFG, id), \
- SRI(FCNV_FP_SCALE_B, CNVC_CFG, id), \
- SRI(COLOR_KEYER_CONTROL, CNVC_CFG, id), \
- SRI(COLOR_KEYER_ALPHA, CNVC_CFG, id), \
- SRI(COLOR_KEYER_RED, CNVC_CFG, id), \
- SRI(COLOR_KEYER_GREEN, CNVC_CFG, id), \
- SRI(COLOR_KEYER_BLUE, CNVC_CFG, id), \
- SRI(CURSOR_CONTROL, CURSOR0_, id),\
- SRI(OBUF_MEM_PWR_CTRL, DSCL, id),\
- SRI(DSCL_MEM_PWR_STATUS, DSCL, id), \
- SRI(DSCL_MEM_PWR_CTRL, DSCL, id)
-
-#define DPP_REG_LIST_DCN30(id)\
- DPP_REG_LIST_DCN30_COMMON(id), \
- TF_REG_LIST_DCN20_COMMON(id), \
- SRI(CM_BLNDGAM_CONTROL, CM, id), \
- SRI(CM_SHAPER_LUT_DATA, CM, id),\
- SRI(CM_MEM_PWR_CTRL2, CM, id), \
- SRI(CM_MEM_PWR_STATUS2, CM, id), \
- SRI(CM_BLNDGAM_RAMA_START_SLOPE_CNTL_B, CM, id),\
- SRI(CM_BLNDGAM_RAMA_START_SLOPE_CNTL_G, CM, id),\
- SRI(CM_BLNDGAM_RAMA_START_SLOPE_CNTL_R, CM, id),\
- SRI(CM_BLNDGAM_RAMB_START_SLOPE_CNTL_B, CM, id),\
- SRI(CM_BLNDGAM_RAMB_START_SLOPE_CNTL_G, CM, id),\
- SRI(CM_BLNDGAM_RAMB_START_SLOPE_CNTL_R, CM, id),\
- SRI(CM_BLNDGAM_LUT_CONTROL, CM, id)
-
-
-
-#define DPP_REG_LIST_SH_MASK_DCN30_COMMON(mask_sh)\
- TF_SF(CM0_CM_MEM_PWR_STATUS, GAMCOR_MEM_PWR_STATE, mask_sh),\
- TF_SF(CM0_CM_DEALPHA, CM_DEALPHA_EN, mask_sh),\
- TF_SF(CM0_CM_DEALPHA, CM_DEALPHA_ABLND, mask_sh),\
- TF_SF(CM0_CM_BIAS_CR_R, CM_BIAS_CR_R, mask_sh),\
- TF_SF(CM0_CM_BIAS_Y_G_CB_B, CM_BIAS_Y_G, mask_sh),\
- TF_SF(CM0_CM_BIAS_Y_G_CB_B, CM_BIAS_CB_B, mask_sh),\
- TF_SF(CM0_CM_MEM_PWR_CTRL, GAMCOR_MEM_PWR_DIS, mask_sh),\
- TF_SF(CM0_CM_MEM_PWR_CTRL, GAMCOR_MEM_PWR_FORCE, mask_sh),\
- TF_SF(CNVC_CFG0_PRE_DEGAM, PRE_DEGAM_MODE, mask_sh),\
- TF_SF(CNVC_CFG0_PRE_DEGAM, PRE_DEGAM_SELECT, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_CONTROL, CM_GAMCOR_MODE, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_CONTROL, CM_GAMCOR_SELECT, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_CONTROL, CM_GAMCOR_PWL_DISABLE, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_CONTROL, CM_GAMCOR_MODE_CURRENT, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_CONTROL, CM_GAMCOR_SELECT_CURRENT, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_LUT_INDEX, CM_GAMCOR_LUT_INDEX, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_LUT_DATA, CM_GAMCOR_LUT_DATA, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_LUT_CONTROL, CM_GAMCOR_LUT_WRITE_COLOR_MASK, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_LUT_CONTROL, CM_GAMCOR_LUT_READ_COLOR_SEL, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_LUT_CONTROL, CM_GAMCOR_LUT_HOST_SEL, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_LUT_CONTROL, CM_GAMCOR_LUT_CONFIG_MODE, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_START_CNTL_B, CM_GAMCOR_RAMA_EXP_REGION_START_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_START_CNTL_B, CM_GAMCOR_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_START_SLOPE_CNTL_B, CM_GAMCOR_RAMA_EXP_REGION_START_SLOPE_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_START_BASE_CNTL_B, CM_GAMCOR_RAMA_EXP_REGION_START_BASE_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_END_CNTL1_B, CM_GAMCOR_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_END_CNTL2_B, CM_GAMCOR_RAMA_EXP_REGION_END_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_END_CNTL2_B, CM_GAMCOR_RAMA_EXP_REGION_END_SLOPE_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_OFFSET_B, CM_GAMCOR_RAMA_OFFSET_B, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_REGION_0_1, CM_GAMCOR_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_REGION_0_1, CM_GAMCOR_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_REGION_0_1, CM_GAMCOR_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- TF_SF(CM0_CM_GAMCOR_RAMA_REGION_0_1, CM_GAMCOR_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_CONTROL, CM_GAMUT_REMAP_MODE, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_CONTROL, CM_GAMUT_REMAP_MODE_CURRENT, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C11_C12, CM_GAMUT_REMAP_C11, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C11_C12, CM_GAMUT_REMAP_C12, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C13_C14, CM_GAMUT_REMAP_C13, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C13_C14, CM_GAMUT_REMAP_C14, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C21_C22, CM_GAMUT_REMAP_C21, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C21_C22, CM_GAMUT_REMAP_C22, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C23_C24, CM_GAMUT_REMAP_C23, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C23_C24, CM_GAMUT_REMAP_C24, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C31_C32, CM_GAMUT_REMAP_C31, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C31_C32, CM_GAMUT_REMAP_C32, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C33_C34, CM_GAMUT_REMAP_C33, mask_sh),\
- TF_SF(CM0_CM_GAMUT_REMAP_C33_C34, CM_GAMUT_REMAP_C34, mask_sh),\
- TF_SF(DSCL0_DSCL_EXT_OVERSCAN_LEFT_RIGHT, EXT_OVERSCAN_LEFT, mask_sh),\
- TF_SF(DSCL0_DSCL_EXT_OVERSCAN_LEFT_RIGHT, EXT_OVERSCAN_RIGHT, mask_sh),\
- TF_SF(DSCL0_DSCL_EXT_OVERSCAN_TOP_BOTTOM, EXT_OVERSCAN_BOTTOM, mask_sh),\
- TF_SF(DSCL0_DSCL_EXT_OVERSCAN_TOP_BOTTOM, EXT_OVERSCAN_TOP, mask_sh),\
- TF_SF(DSCL0_OTG_H_BLANK, OTG_H_BLANK_START, mask_sh),\
- TF_SF(DSCL0_OTG_H_BLANK, OTG_H_BLANK_END, mask_sh),\
- TF_SF(DSCL0_OTG_V_BLANK, OTG_V_BLANK_START, mask_sh),\
- TF_SF(DSCL0_OTG_V_BLANK, OTG_V_BLANK_END, mask_sh),\
- TF_SF(DSCL0_LB_DATA_FORMAT, INTERLEAVE_EN, mask_sh),\
- TF2_SF(DSCL0, LB_DATA_FORMAT__ALPHA_EN, mask_sh),\
- TF_SF(DSCL0_LB_MEMORY_CTRL, MEMORY_CONFIG, mask_sh),\
- TF_SF(DSCL0_LB_MEMORY_CTRL, LB_MAX_PARTITIONS, mask_sh),\
- TF_SF(DSCL0_DSCL_AUTOCAL, AUTOCAL_MODE, mask_sh),\
- TF_SF(DSCL0_DSCL_AUTOCAL, AUTOCAL_NUM_PIPE, mask_sh),\
- TF_SF(DSCL0_DSCL_CONTROL, SCL_BOUNDARY_MODE, mask_sh),\
- TF_SF(DSCL0_DSCL_AUTOCAL, AUTOCAL_PIPE_ID, mask_sh),\
- TF_SF(DSCL0_SCL_TAP_CONTROL, SCL_V_NUM_TAPS, mask_sh),\
- TF_SF(DSCL0_SCL_TAP_CONTROL, SCL_H_NUM_TAPS, mask_sh),\
- TF_SF(DSCL0_SCL_TAP_CONTROL, SCL_V_NUM_TAPS_C, mask_sh),\
- TF_SF(DSCL0_SCL_TAP_CONTROL, SCL_H_NUM_TAPS_C, mask_sh),\
- TF_SF(DSCL0_SCL_COEF_RAM_TAP_SELECT, SCL_COEF_RAM_TAP_PAIR_IDX, mask_sh),\
- TF_SF(DSCL0_SCL_COEF_RAM_TAP_SELECT, SCL_COEF_RAM_PHASE, mask_sh),\
- TF_SF(DSCL0_SCL_COEF_RAM_TAP_SELECT, SCL_COEF_RAM_FILTER_TYPE, mask_sh),\
- TF_SF(DSCL0_SCL_COEF_RAM_TAP_DATA, SCL_COEF_RAM_EVEN_TAP_COEF, mask_sh),\
- TF_SF(DSCL0_SCL_COEF_RAM_TAP_DATA, SCL_COEF_RAM_EVEN_TAP_COEF_EN, mask_sh),\
- TF_SF(DSCL0_SCL_COEF_RAM_TAP_DATA, SCL_COEF_RAM_ODD_TAP_COEF, mask_sh),\
- TF_SF(DSCL0_SCL_COEF_RAM_TAP_DATA, SCL_COEF_RAM_ODD_TAP_COEF_EN, mask_sh),\
- TF_SF(DSCL0_DSCL_2TAP_CONTROL, SCL_H_2TAP_HARDCODE_COEF_EN, mask_sh),\
- TF_SF(DSCL0_DSCL_2TAP_CONTROL, SCL_H_2TAP_SHARP_EN, mask_sh),\
- TF_SF(DSCL0_DSCL_2TAP_CONTROL, SCL_H_2TAP_SHARP_FACTOR, mask_sh),\
- TF_SF(DSCL0_DSCL_2TAP_CONTROL, SCL_V_2TAP_HARDCODE_COEF_EN, mask_sh),\
- TF_SF(DSCL0_DSCL_2TAP_CONTROL, SCL_V_2TAP_SHARP_EN, mask_sh),\
- TF_SF(DSCL0_DSCL_2TAP_CONTROL, SCL_V_2TAP_SHARP_FACTOR, mask_sh),\
- TF_SF(DSCL0_SCL_MODE, SCL_COEF_RAM_SELECT, mask_sh),\
- TF_SF(DSCL0_SCL_MODE, DSCL_MODE, mask_sh),\
- TF_SF(DSCL0_RECOUT_START, RECOUT_START_X, mask_sh),\
- TF_SF(DSCL0_RECOUT_START, RECOUT_START_Y, mask_sh),\
- TF_SF(DSCL0_RECOUT_SIZE, RECOUT_WIDTH, mask_sh),\
- TF_SF(DSCL0_RECOUT_SIZE, RECOUT_HEIGHT, mask_sh),\
- TF_SF(DSCL0_MPC_SIZE, MPC_WIDTH, mask_sh),\
- TF_SF(DSCL0_MPC_SIZE, MPC_HEIGHT, mask_sh),\
- TF_SF(DSCL0_SCL_HORZ_FILTER_SCALE_RATIO, SCL_H_SCALE_RATIO, mask_sh),\
- TF_SF(DSCL0_SCL_VERT_FILTER_SCALE_RATIO, SCL_V_SCALE_RATIO, mask_sh),\
- TF_SF(DSCL0_SCL_HORZ_FILTER_SCALE_RATIO_C, SCL_H_SCALE_RATIO_C, mask_sh),\
- TF_SF(DSCL0_SCL_VERT_FILTER_SCALE_RATIO_C, SCL_V_SCALE_RATIO_C, mask_sh),\
- TF_SF(DSCL0_SCL_HORZ_FILTER_INIT, SCL_H_INIT_FRAC, mask_sh),\
- TF_SF(DSCL0_SCL_HORZ_FILTER_INIT, SCL_H_INIT_INT, mask_sh),\
- TF_SF(DSCL0_SCL_HORZ_FILTER_INIT_C, SCL_H_INIT_FRAC_C, mask_sh),\
- TF_SF(DSCL0_SCL_HORZ_FILTER_INIT_C, SCL_H_INIT_INT_C, mask_sh),\
- TF_SF(DSCL0_SCL_VERT_FILTER_INIT, SCL_V_INIT_FRAC, mask_sh),\
- TF_SF(DSCL0_SCL_VERT_FILTER_INIT, SCL_V_INIT_INT, mask_sh),\
- TF_SF(DSCL0_SCL_VERT_FILTER_INIT_C, SCL_V_INIT_FRAC_C, mask_sh),\
- TF_SF(DSCL0_SCL_VERT_FILTER_INIT_C, SCL_V_INIT_INT_C, mask_sh),\
- TF_SF(DSCL0_SCL_MODE, SCL_CHROMA_COEF_MODE, mask_sh),\
- TF_SF(DSCL0_SCL_MODE, SCL_COEF_RAM_SELECT_CURRENT, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_DEALPHA, PRE_DEALPHA_EN, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_DEALPHA, PRE_DEALPHA_ABLND_EN, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_REALPHA, PRE_REALPHA_EN, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_REALPHA, PRE_REALPHA_ABLND_EN, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_CSC_MODE, PRE_CSC_MODE, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_CSC_MODE, PRE_CSC_MODE_CURRENT, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_CSC_C11_C12, PRE_CSC_C11, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_CSC_C11_C12, PRE_CSC_C12, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_CSC_C33_C34, PRE_CSC_C33, mask_sh), \
- TF_SF(CNVC_CFG0_PRE_CSC_C33_C34, PRE_CSC_C34, mask_sh), \
- TF_SF(CM0_CM_POST_CSC_CONTROL, CM_POST_CSC_MODE, mask_sh), \
- TF_SF(CM0_CM_POST_CSC_CONTROL, CM_POST_CSC_MODE_CURRENT, mask_sh), \
- TF_SF(CM0_CM_POST_CSC_C11_C12, CM_POST_CSC_C11, mask_sh), \
- TF_SF(CM0_CM_POST_CSC_C11_C12, CM_POST_CSC_C12, mask_sh), \
- TF_SF(CM0_CM_POST_CSC_C33_C34, CM_POST_CSC_C33, mask_sh), \
- TF_SF(CM0_CM_POST_CSC_C33_C34, CM_POST_CSC_C34, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, CNVC_BYPASS, mask_sh), \
- TF2_SF(CNVC_CFG0, FORMAT_CONTROL__ALPHA_EN, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, FORMAT_EXPANSION_MODE, mask_sh), \
- TF_SF(CNVC_CFG0_CNVC_SURFACE_PIXEL_FORMAT, CNVC_SURFACE_PIXEL_FORMAT, mask_sh), \
- TF_SF(CNVC_CFG0_CNVC_SURFACE_PIXEL_FORMAT, CNVC_ALPHA_PLANE_ENABLE, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_CONTROL, CUR0_MODE, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_CONTROL, CUR0_EXPANSION_MODE, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_CONTROL, CUR0_ENABLE, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_COLOR0, CUR0_COLOR0, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_COLOR1, CUR0_COLOR1, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_FP_SCALE_BIAS, CUR0_FP_BIAS, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_FP_SCALE_BIAS, CUR0_FP_SCALE, mask_sh), \
- TF_SF(DPP_TOP0_DPP_CONTROL, DPP_CLOCK_ENABLE, mask_sh), \
- TF_SF(CM0_CM_HDR_MULT_COEF, CM_HDR_MULT_COEF, mask_sh), \
- TF_SF(CM0_CM_CONTROL, CM_BYPASS, mask_sh), \
- TF_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_MODE, mask_sh), \
- TF_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_PITCH, mask_sh), \
- TF_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_LINES_PER_CHUNK, mask_sh), \
- TF_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_ENABLE, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, FORMAT_CNV16, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, CNVC_BYPASS_MSB_ALIGN, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, CLAMP_POSITIVE, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, CLAMP_POSITIVE_C, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, FORMAT_CROSSBAR_R, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, FORMAT_CROSSBAR_G, mask_sh), \
- TF_SF(CNVC_CFG0_FORMAT_CONTROL, FORMAT_CROSSBAR_B, mask_sh), \
- TF_SF(CNVC_CFG0_ALPHA_2BIT_LUT, ALPHA_2BIT_LUT0, mask_sh), \
- TF_SF(CNVC_CFG0_ALPHA_2BIT_LUT, ALPHA_2BIT_LUT1, mask_sh), \
- TF_SF(CNVC_CFG0_ALPHA_2BIT_LUT, ALPHA_2BIT_LUT2, mask_sh), \
- TF_SF(CNVC_CFG0_ALPHA_2BIT_LUT, ALPHA_2BIT_LUT3, mask_sh), \
- TF_SF(CNVC_CFG0_FCNV_FP_BIAS_R, FCNV_FP_BIAS_R, mask_sh), \
- TF_SF(CNVC_CFG0_FCNV_FP_BIAS_G, FCNV_FP_BIAS_G, mask_sh), \
- TF_SF(CNVC_CFG0_FCNV_FP_BIAS_B, FCNV_FP_BIAS_B, mask_sh), \
- TF_SF(CNVC_CFG0_FCNV_FP_SCALE_R, FCNV_FP_SCALE_R, mask_sh), \
- TF_SF(CNVC_CFG0_FCNV_FP_SCALE_G, FCNV_FP_SCALE_G, mask_sh), \
- TF_SF(CNVC_CFG0_FCNV_FP_SCALE_B, FCNV_FP_SCALE_B, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_CONTROL, COLOR_KEYER_EN, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_CONTROL, COLOR_KEYER_MODE, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_ALPHA, COLOR_KEYER_ALPHA_LOW, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_ALPHA, COLOR_KEYER_ALPHA_HIGH, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_RED, COLOR_KEYER_RED_LOW, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_RED, COLOR_KEYER_RED_HIGH, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_GREEN, COLOR_KEYER_GREEN_LOW, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_GREEN, COLOR_KEYER_GREEN_HIGH, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_BLUE, COLOR_KEYER_BLUE_LOW, mask_sh), \
- TF_SF(CNVC_CFG0_COLOR_KEYER_BLUE, COLOR_KEYER_BLUE_HIGH, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_CONTROL, CUR0_PIX_INV_MODE, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_CONTROL, CUR0_PIXEL_ALPHA_MOD_EN, mask_sh), \
- TF_SF(CNVC_CUR0_CURSOR0_CONTROL, CUR0_ROM_EN, mask_sh),\
- TF_SF(DSCL0_OBUF_MEM_PWR_CTRL, OBUF_MEM_PWR_FORCE, mask_sh),\
- TF_SF(DSCL0_DSCL_MEM_PWR_CTRL, LUT_MEM_PWR_FORCE, mask_sh),\
- TF_SF(DSCL0_DSCL_MEM_PWR_STATUS, LUT_MEM_PWR_STATE, mask_sh)
-
-#define DPP_REG_LIST_SH_MASK_DCN30_UPDATED(mask_sh)\
- TF_SF(CM0_CM_MEM_PWR_STATUS, BLNDGAM_MEM_PWR_STATE, mask_sh), \
- TF_SF(CM0_CM_MEM_PWR_CTRL2, HDR3DLUT_MEM_PWR_FORCE, mask_sh),\
- TF_SF(CM0_CM_MEM_PWR_CTRL2, SHAPER_MEM_PWR_FORCE, mask_sh),\
- TF_SF(CM0_CM_MEM_PWR_STATUS2, HDR3DLUT_MEM_PWR_STATE, mask_sh),\
- TF_SF(CM0_CM_MEM_PWR_STATUS2, SHAPER_MEM_PWR_STATE, mask_sh),\
- TF_SF(CM0_CM_BLNDGAM_CONTROL, CM_BLNDGAM_MODE, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_CONTROL, CM_BLNDGAM_MODE_CURRENT, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_CONTROL, CM_BLNDGAM_SELECT_CURRENT, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_CONTROL, CM_BLNDGAM_SELECT, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMB_START_SLOPE_CNTL_B, CM_BLNDGAM_RAMB_EXP_REGION_START_SLOPE_B, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMB_START_SLOPE_CNTL_G, CM_BLNDGAM_RAMB_EXP_REGION_START_SLOPE_G, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMB_START_SLOPE_CNTL_R, CM_BLNDGAM_RAMB_EXP_REGION_START_SLOPE_R, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMB_END_CNTL1_B, CM_BLNDGAM_RAMB_EXP_REGION_END_BASE_B, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMB_END_CNTL1_G, CM_BLNDGAM_RAMB_EXP_REGION_END_BASE_G, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMB_END_CNTL1_R, CM_BLNDGAM_RAMB_EXP_REGION_END_BASE_R, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_START_SLOPE_CNTL_B, CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_B, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_START_SLOPE_CNTL_G, CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_G, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_START_SLOPE_CNTL_R, CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_R, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_END_CNTL1_B, CM_BLNDGAM_RAMA_EXP_REGION_END_BASE_B, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_END_CNTL1_G, CM_BLNDGAM_RAMA_EXP_REGION_END_BASE_G, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_END_CNTL1_R, CM_BLNDGAM_RAMA_EXP_REGION_END_BASE_R, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_END_CNTL2_B, CM_BLNDGAM_RAMA_EXP_REGION_END_B, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_END_CNTL2_G, CM_BLNDGAM_RAMA_EXP_REGION_END_G, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_RAMA_END_CNTL2_R, CM_BLNDGAM_RAMA_EXP_REGION_END_R, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_LUT_CONTROL, CM_BLNDGAM_LUT_WRITE_COLOR_MASK, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_LUT_CONTROL, CM_BLNDGAM_LUT_HOST_SEL, mask_sh), \
- TF_SF(CM0_CM_BLNDGAM_LUT_CONTROL, CM_BLNDGAM_LUT_CONFIG_MODE, mask_sh), \
- TF_SF(CM0_CM_3DLUT_MODE, CM_3DLUT_MODE_CURRENT, mask_sh), \
- TF_SF(CM0_CM_SHAPER_CONTROL, CM_SHAPER_MODE_CURRENT, mask_sh)
-
-
-#define DPP_REG_LIST_SH_MASK_DCN30(mask_sh)\
- DPP_REG_LIST_SH_MASK_DCN30_COMMON(mask_sh), \
- TF_REG_LIST_SH_MASK_DCN20_COMMON(mask_sh), \
- DPP_REG_LIST_SH_MASK_DCN30_UPDATED(mask_sh)
-
-#define DPP_REG_FIELD_LIST_DCN3(type) \
- TF_REG_FIELD_LIST_DCN2_0(type); \
- type FORMAT_CROSSBAR_R; \
- type FORMAT_CROSSBAR_G; \
- type FORMAT_CROSSBAR_B; \
- type CM_DEALPHA_EN;\
- type CM_DEALPHA_ABLND;\
- type CM_BIAS_Y_G;\
- type CM_BIAS_CB_B;\
- type CM_BIAS_CR_R;\
- type GAMCOR_MEM_PWR_DIS; \
- type GAMCOR_MEM_PWR_FORCE; \
- type HDR3DLUT_MEM_PWR_FORCE; \
- type SHAPER_MEM_PWR_FORCE; \
- type PRE_DEGAM_MODE;\
- type PRE_DEGAM_SELECT;\
- type CNVC_ALPHA_PLANE_ENABLE; \
- type PRE_DEALPHA_EN; \
- type PRE_DEALPHA_ABLND_EN; \
- type PRE_REALPHA_EN; \
- type PRE_REALPHA_ABLND_EN; \
- type PRE_CSC_MODE; \
- type PRE_CSC_MODE_CURRENT; \
- type PRE_CSC_C11; \
- type PRE_CSC_C12; \
- type PRE_CSC_C33; \
- type PRE_CSC_C34; \
- type CM_POST_CSC_MODE; \
- type CM_POST_CSC_MODE_CURRENT; \
- type CM_POST_CSC_C11; \
- type CM_POST_CSC_C12; \
- type CM_POST_CSC_C33; \
- type CM_POST_CSC_C34; \
- type CM_GAMCOR_MODE; \
- type CM_GAMCOR_SELECT; \
- type CM_GAMCOR_PWL_DISABLE; \
- type CM_GAMCOR_MODE_CURRENT; \
- type CM_GAMCOR_SELECT_CURRENT; \
- type CM_GAMCOR_LUT_INDEX; \
- type CM_GAMCOR_LUT_DATA; \
- type CM_GAMCOR_LUT_WRITE_COLOR_MASK; \
- type CM_GAMCOR_LUT_READ_COLOR_SEL; \
- type CM_GAMCOR_LUT_HOST_SEL; \
- type CM_GAMCOR_LUT_CONFIG_MODE; \
- type CM_GAMCOR_LUT_STATUS; \
- type CM_GAMCOR_RAMA_EXP_REGION_START_B; \
- type CM_GAMCOR_RAMA_EXP_REGION_START_SEGMENT_B; \
- type CM_GAMCOR_RAMA_EXP_REGION_START_SLOPE_B; \
- type CM_GAMCOR_RAMA_EXP_REGION_START_BASE_B; \
- type CM_GAMCOR_RAMA_EXP_REGION_END_BASE_B; \
- type CM_GAMCOR_RAMA_EXP_REGION_END_B; \
- type CM_GAMCOR_RAMA_EXP_REGION_END_SLOPE_B; \
- type CM_GAMCOR_RAMA_OFFSET_B; \
- type CM_GAMCOR_RAMA_EXP_REGION0_LUT_OFFSET; \
- type CM_GAMCOR_RAMA_EXP_REGION0_NUM_SEGMENTS; \
- type CM_GAMCOR_RAMA_EXP_REGION1_LUT_OFFSET; \
- type CM_GAMCOR_RAMA_EXP_REGION1_NUM_SEGMENTS;\
- type CM_GAMUT_REMAP_MODE_CURRENT;\
- type CM_BLNDGAM_RAMB_EXP_REGION_START_SLOPE_B; \
- type CM_BLNDGAM_RAMB_EXP_REGION_START_SLOPE_G; \
- type CM_BLNDGAM_RAMB_EXP_REGION_START_SLOPE_R; \
- type CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_B; \
- type CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_G; \
- type CM_BLNDGAM_RAMA_EXP_REGION_START_SLOPE_R; \
- type CM_BLNDGAM_LUT_WRITE_COLOR_MASK; \
- type CM_BLNDGAM_LUT_HOST_SEL; \
- type CM_BLNDGAM_LUT_CONFIG_MODE; \
- type CM_3DLUT_MODE_CURRENT; \
- type CM_SHAPER_MODE_CURRENT; \
- type CM_BLNDGAM_MODE; \
- type CM_BLNDGAM_MODE_CURRENT; \
- type CM_BLNDGAM_SELECT_CURRENT; \
- type CM_BLNDGAM_SELECT; \
- type GAMCOR_MEM_PWR_STATE; \
- type BLNDGAM_MEM_PWR_STATE; \
- type HDR3DLUT_MEM_PWR_STATE; \
- type SHAPER_MEM_PWR_STATE
-
-struct dcn3_dpp_shift {
- DPP_REG_FIELD_LIST_DCN3(uint8_t);
-};
-
-struct dcn3_dpp_mask {
- DPP_REG_FIELD_LIST_DCN3(uint32_t);
-};
-
-#define DPP_DCN3_REG_VARIABLE_LIST_COMMON \
- DPP_DCN2_REG_VARIABLE_LIST; \
- uint32_t CM_MEM_PWR_STATUS;\
- uint32_t CM_MEM_PWR_STATUS2;\
- uint32_t CM_MEM_PWR_CTRL2;\
- uint32_t CM_DEALPHA;\
- uint32_t CM_BIAS_CR_R;\
- uint32_t CM_BIAS_Y_G_CB_B;\
- uint32_t PRE_DEGAM;\
- uint32_t PRE_DEALPHA; \
- uint32_t PRE_REALPHA; \
- uint32_t PRE_CSC_MODE; \
- uint32_t PRE_CSC_C11_C12; \
- uint32_t PRE_CSC_C33_C34; \
- uint32_t PRE_CSC_B_C11_C12; \
- uint32_t PRE_CSC_B_C33_C34; \
- uint32_t CM_POST_CSC_CONTROL; \
- uint32_t CM_POST_CSC_C11_C12; \
- uint32_t CM_POST_CSC_C33_C34; \
- uint32_t CM_POST_CSC_B_C11_C12; \
- uint32_t CM_POST_CSC_B_C33_C34; \
- uint32_t CM_GAMUT_REMAP_B_C11_C12; \
- uint32_t CM_GAMUT_REMAP_B_C13_C14; \
- uint32_t CM_GAMUT_REMAP_B_C21_C22; \
- uint32_t CM_GAMUT_REMAP_B_C23_C24; \
- uint32_t CM_GAMUT_REMAP_B_C31_C32; \
- uint32_t CM_GAMUT_REMAP_B_C33_C34; \
- uint32_t CM_GAMCOR_CONTROL; \
- uint32_t CM_GAMCOR_LUT_CONTROL; \
- uint32_t CM_GAMCOR_LUT_INDEX; \
- uint32_t CM_GAMCOR_LUT_DATA; \
- uint32_t CM_GAMCOR_RAMB_START_CNTL_B; \
- uint32_t CM_GAMCOR_RAMB_START_CNTL_G; \
- uint32_t CM_GAMCOR_RAMB_START_CNTL_R; \
- uint32_t CM_GAMCOR_RAMB_START_SLOPE_CNTL_B; \
- uint32_t CM_GAMCOR_RAMB_START_SLOPE_CNTL_G; \
- uint32_t CM_GAMCOR_RAMB_START_SLOPE_CNTL_R; \
- uint32_t CM_GAMCOR_RAMB_END_CNTL1_B; \
- uint32_t CM_GAMCOR_RAMB_END_CNTL2_B; \
- uint32_t CM_GAMCOR_RAMB_END_CNTL1_G; \
- uint32_t CM_GAMCOR_RAMB_END_CNTL2_G; \
- uint32_t CM_GAMCOR_RAMB_END_CNTL1_R; \
- uint32_t CM_GAMCOR_RAMB_END_CNTL2_R; \
- uint32_t CM_GAMCOR_RAMB_REGION_0_1; \
- uint32_t CM_GAMCOR_RAMB_REGION_32_33; \
- uint32_t CM_GAMCOR_RAMB_OFFSET_B; \
- uint32_t CM_GAMCOR_RAMB_OFFSET_G; \
- uint32_t CM_GAMCOR_RAMB_OFFSET_R; \
- uint32_t CM_GAMCOR_RAMB_START_BASE_CNTL_B; \
- uint32_t CM_GAMCOR_RAMB_START_BASE_CNTL_G; \
- uint32_t CM_GAMCOR_RAMB_START_BASE_CNTL_R; \
- uint32_t CM_GAMCOR_RAMA_START_CNTL_B; \
- uint32_t CM_GAMCOR_RAMA_START_CNTL_G; \
- uint32_t CM_GAMCOR_RAMA_START_CNTL_R; \
- uint32_t CM_GAMCOR_RAMA_START_SLOPE_CNTL_B; \
- uint32_t CM_GAMCOR_RAMA_START_SLOPE_CNTL_G; \
- uint32_t CM_GAMCOR_RAMA_START_SLOPE_CNTL_R; \
- uint32_t CM_GAMCOR_RAMA_END_CNTL1_B; \
- uint32_t CM_GAMCOR_RAMA_END_CNTL2_B; \
- uint32_t CM_GAMCOR_RAMA_END_CNTL1_G; \
- uint32_t CM_GAMCOR_RAMA_END_CNTL2_G; \
- uint32_t CM_GAMCOR_RAMA_END_CNTL1_R; \
- uint32_t CM_GAMCOR_RAMA_END_CNTL2_R; \
- uint32_t CM_GAMCOR_RAMA_REGION_0_1; \
- uint32_t CM_GAMCOR_RAMA_REGION_32_33; \
- uint32_t CM_GAMCOR_RAMA_OFFSET_B; \
- uint32_t CM_GAMCOR_RAMA_OFFSET_G; \
- uint32_t CM_GAMCOR_RAMA_OFFSET_R; \
- uint32_t CM_GAMCOR_RAMA_START_BASE_CNTL_B; \
- uint32_t CM_GAMCOR_RAMA_START_BASE_CNTL_G; \
- uint32_t CM_GAMCOR_RAMA_START_BASE_CNTL_R; \
- uint32_t CM_BLNDGAM_RAMA_START_SLOPE_CNTL_B; \
- uint32_t CM_BLNDGAM_RAMA_START_SLOPE_CNTL_G; \
- uint32_t CM_BLNDGAM_RAMA_START_SLOPE_CNTL_R; \
- uint32_t CM_BLNDGAM_RAMB_START_SLOPE_CNTL_B; \
- uint32_t CM_BLNDGAM_RAMB_START_SLOPE_CNTL_G; \
- uint32_t CM_BLNDGAM_RAMB_START_SLOPE_CNTL_R; \
- uint32_t CM_BLNDGAM_LUT_CONTROL
-
-
-struct dcn3_dpp_registers {
- DPP_DCN3_REG_VARIABLE_LIST_COMMON;
-};
-
-
-struct dcn3_dpp {
- struct dpp base;
-
- const struct dcn3_dpp_registers *tf_regs;
- const struct dcn3_dpp_shift *tf_shift;
- const struct dcn3_dpp_mask *tf_mask;
-
- const uint16_t *filter_v;
- const uint16_t *filter_h;
- const uint16_t *filter_v_c;
- const uint16_t *filter_h_c;
- int lb_pixel_depth_supported;
- int lb_memory_size;
- int lb_bits_per_entry;
- bool is_write_to_ram_a_safe;
- struct scaler_data scl_data;
- struct pwl_params pwl_data;
-};
-
-bool dpp3_construct(struct dcn3_dpp *dpp3,
- struct dc_context *ctx,
- uint32_t inst,
- const struct dcn3_dpp_registers *tf_regs,
- const struct dcn3_dpp_shift *tf_shift,
- const struct dcn3_dpp_mask *tf_mask);
-
-bool dpp3_program_gamcor_lut(
- struct dpp *dpp_base, const struct pwl_params *params);
-
-void dpp3_program_CM_dealpha(
- struct dpp *dpp_base,
- uint32_t enable, uint32_t additive_blending);
-
-void dpp30_read_state(struct dpp *dpp_base,
- struct dcn_dpp_state *s);
-
-bool dpp3_get_optimal_number_of_taps(
- struct dpp *dpp,
- struct scaler_data *scl_data,
- const struct scaling_taps *in_taps);
-
-void dpp3_cnv_setup (
- struct dpp *dpp_base,
- enum surface_pixel_format format,
- enum expansion_mode mode,
- struct dc_csc_transform input_csc_color_matrix,
- enum dc_color_space input_color_space,
- struct cnv_alpha_2bit_lut *alpha_2bit_lut);
-
-void dpp3_program_CM_bias(
- struct dpp *dpp_base,
- struct CM_bias_params *bias_params);
-
-void dpp3_set_hdr_multiplier(
- struct dpp *dpp_base,
- uint32_t multiplier);
-
-void dpp3_cm_set_gamut_remap(
- struct dpp *dpp_base,
- const struct dpp_grph_csc_adjustment *adjust);
-
-void dpp3_set_pre_degam(struct dpp *dpp_base,
- enum dc_transfer_func_predefined tr);
-
-void dpp3_set_cursor_attributes(
- struct dpp *dpp_base,
- struct dc_cursor_attributes *cursor_attributes);
-
-void dpp3_program_post_csc(
- struct dpp *dpp_base,
- enum dc_color_space color_space,
- enum dcn10_input_csc_select input_select,
- const struct out_csc_color_matrix *tbl_entry);
-
-void dpp3_program_cm_bias(
- struct dpp *dpp_base,
- struct CM_bias_params *bias_params);
-
-void dpp3_program_cm_dealpha(
- struct dpp *dpp_base,
- uint32_t enable, uint32_t additive_blending);
-
-void dpp3_cm_get_gamut_remap(struct dpp *dpp_base,
- struct dpp_grph_csc_adjustment *adjust);
-#endif /* __DC_HWSS_DCN30_H__ */
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp_cm.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp_cm.c
deleted file mode 100644
index 2f5b3fbd3507..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dpp_cm.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "dm_services.h"
-#include "core_types.h"
-#include "reg_helper.h"
-#include "dcn30_dpp.h"
-#include "basics/conversion.h"
-#include "dcn30_cm_common.h"
-
-#define REG(reg)\
- dpp->tf_regs->reg
-
-#define CTX \
- dpp->base.ctx
-
-#undef FN
-#define FN(reg_name, field_name) \
- dpp->tf_shift->field_name, dpp->tf_mask->field_name
-
-static void dpp3_enable_cm_block(
- struct dpp *dpp_base)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- unsigned int cm_bypass_mode = 0;
-
- // debug option: put CM in bypass mode
- if (dpp_base->ctx->dc->debug.cm_in_bypass)
- cm_bypass_mode = 1;
-
- REG_UPDATE(CM_CONTROL, CM_BYPASS, cm_bypass_mode);
-}
-
-static enum dc_lut_mode dpp30_get_gamcor_current(struct dpp *dpp_base)
-{
- enum dc_lut_mode mode = LUT_BYPASS;
- uint32_t state_mode;
- uint32_t lut_mode;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_GET(CM_GAMCOR_CONTROL, CM_GAMCOR_MODE_CURRENT, &state_mode);
-
- if (state_mode == 2) {//Programmable RAM LUT
- REG_GET(CM_GAMCOR_CONTROL, CM_GAMCOR_SELECT_CURRENT, &lut_mode);
- if (lut_mode == 0)
- mode = LUT_RAM_A;
- else
- mode = LUT_RAM_B;
- }
-
- return mode;
-}
-
-static void dpp3_program_gammcor_lut(
- struct dpp *dpp_base,
- const struct pwl_result_data *rgb,
- uint32_t num,
- bool is_ram_a)
-{
- uint32_t i;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- uint32_t last_base_value_red = rgb[num-1].red_reg + rgb[num-1].delta_red_reg;
- uint32_t last_base_value_green = rgb[num-1].green_reg + rgb[num-1].delta_green_reg;
- uint32_t last_base_value_blue = rgb[num-1].blue_reg + rgb[num-1].delta_blue_reg;
-
- /*fill in the LUT with all base values to be used by pwl module
- * HW auto increments the LUT index: back-to-back write
- */
- if (is_rgb_equal(rgb, num)) {
- for (i = 0 ; i < num; i++)
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, rgb[i].red_reg);
-
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, last_base_value_red);
-
- } else {
- REG_UPDATE(CM_GAMCOR_LUT_CONTROL,
- CM_GAMCOR_LUT_WRITE_COLOR_MASK, 4);
- for (i = 0 ; i < num; i++)
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, rgb[i].red_reg);
-
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, last_base_value_red);
-
- REG_SET(CM_GAMCOR_LUT_INDEX, 0, CM_GAMCOR_LUT_INDEX, 0);
-
- REG_UPDATE(CM_GAMCOR_LUT_CONTROL,
- CM_GAMCOR_LUT_WRITE_COLOR_MASK, 2);
- for (i = 0 ; i < num; i++)
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, rgb[i].green_reg);
-
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, last_base_value_green);
-
- REG_SET(CM_GAMCOR_LUT_INDEX, 0, CM_GAMCOR_LUT_INDEX, 0);
-
- REG_UPDATE(CM_GAMCOR_LUT_CONTROL,
- CM_GAMCOR_LUT_WRITE_COLOR_MASK, 1);
- for (i = 0 ; i < num; i++)
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, rgb[i].blue_reg);
-
- REG_SET(CM_GAMCOR_LUT_DATA, 0, CM_GAMCOR_LUT_DATA, last_base_value_blue);
- }
-}
-
-static void dpp3_power_on_gamcor_lut(
- struct dpp *dpp_base,
- bool power_on)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm) {
- if (power_on) {
- REG_UPDATE(CM_MEM_PWR_CTRL, GAMCOR_MEM_PWR_FORCE, 0);
- REG_WAIT(CM_MEM_PWR_STATUS, GAMCOR_MEM_PWR_STATE, 0, 1, 5);
- } else {
- dpp_base->ctx->dc->optimized_required = true;
- dpp_base->deferred_reg_writes.bits.disable_gamcor = true;
- }
- } else
- REG_SET(CM_MEM_PWR_CTRL, 0,
- GAMCOR_MEM_PWR_DIS, power_on == true ? 0:1);
-}
-
-void dpp3_program_cm_dealpha(
- struct dpp *dpp_base,
- uint32_t enable, uint32_t additive_blending)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_SET_2(CM_DEALPHA, 0,
- CM_DEALPHA_EN, enable,
- CM_DEALPHA_ABLND, additive_blending);
-}
-
-void dpp3_program_cm_bias(
- struct dpp *dpp_base,
- struct CM_bias_params *bias_params)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_SET(CM_BIAS_CR_R, 0, CM_BIAS_CR_R, bias_params->cm_bias_cr_r);
- REG_SET_2(CM_BIAS_Y_G_CB_B, 0,
- CM_BIAS_Y_G, bias_params->cm_bias_y_g,
- CM_BIAS_CB_B, bias_params->cm_bias_cb_b);
-}
-
-static void dpp3_gamcor_reg_field(
- struct dcn3_dpp *dpp,
- struct dcn3_xfer_func_reg *reg)
-{
-
- reg->shifts.field_region_start_base = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION_START_BASE_B;
- reg->masks.field_region_start_base = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION_START_BASE_B;
- reg->shifts.field_offset = dpp->tf_shift->CM_GAMCOR_RAMA_OFFSET_B;
- reg->masks.field_offset = dpp->tf_mask->CM_GAMCOR_RAMA_OFFSET_B;
-
- reg->shifts.exp_region0_lut_offset = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->masks.exp_region0_lut_offset = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->shifts.exp_region0_num_segments = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->masks.exp_region0_num_segments = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->shifts.exp_region1_lut_offset = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->masks.exp_region1_lut_offset = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->shifts.exp_region1_num_segments = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION1_NUM_SEGMENTS;
- reg->masks.exp_region1_num_segments = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION1_NUM_SEGMENTS;
-
- reg->shifts.field_region_end = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION_END_B;
- reg->masks.field_region_end = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION_END_B;
- reg->shifts.field_region_end_slope = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION_END_SLOPE_B;
- reg->masks.field_region_end_slope = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION_END_SLOPE_B;
- reg->shifts.field_region_end_base = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION_END_BASE_B;
- reg->masks.field_region_end_base = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION_END_BASE_B;
- reg->shifts.field_region_linear_slope = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION_START_SLOPE_B;
- reg->masks.field_region_linear_slope = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION_START_SLOPE_B;
- reg->shifts.exp_region_start = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION_START_B;
- reg->masks.exp_region_start = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION_START_B;
- reg->shifts.exp_resion_start_segment = dpp->tf_shift->CM_GAMCOR_RAMA_EXP_REGION_START_SEGMENT_B;
- reg->masks.exp_resion_start_segment = dpp->tf_mask->CM_GAMCOR_RAMA_EXP_REGION_START_SEGMENT_B;
-}
-
-static void dpp3_configure_gamcor_lut(
- struct dpp *dpp_base,
- bool is_ram_a)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_UPDATE(CM_GAMCOR_LUT_CONTROL,
- CM_GAMCOR_LUT_WRITE_COLOR_MASK, 7);
- REG_UPDATE(CM_GAMCOR_LUT_CONTROL,
- CM_GAMCOR_LUT_HOST_SEL, is_ram_a == true ? 0:1);
- REG_SET(CM_GAMCOR_LUT_INDEX, 0, CM_GAMCOR_LUT_INDEX, 0);
-}
-
-
-bool dpp3_program_gamcor_lut(
- struct dpp *dpp_base, const struct pwl_params *params)
-{
- enum dc_lut_mode current_mode;
- enum dc_lut_mode next_mode;
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- struct dcn3_xfer_func_reg gam_regs;
-
- dpp3_enable_cm_block(dpp_base);
-
- if (params == NULL) { //bypass if we have no pwl data
- REG_SET(CM_GAMCOR_CONTROL, 0, CM_GAMCOR_MODE, 0);
- if (dpp_base->ctx->dc->debug.enable_mem_low_power.bits.cm)
- dpp3_power_on_gamcor_lut(dpp_base, false);
- return false;
- }
- dpp3_power_on_gamcor_lut(dpp_base, true);
- REG_SET(CM_GAMCOR_CONTROL, 0, CM_GAMCOR_MODE, 2);
-
- current_mode = dpp30_get_gamcor_current(dpp_base);
- if (current_mode == LUT_BYPASS || current_mode == LUT_RAM_A)
- next_mode = LUT_RAM_B;
- else
- next_mode = LUT_RAM_A;
-
- dpp3_power_on_gamcor_lut(dpp_base, true);
- dpp3_configure_gamcor_lut(dpp_base, next_mode == LUT_RAM_A);
-
- if (next_mode == LUT_RAM_B) {
- gam_regs.start_cntl_b = REG(CM_GAMCOR_RAMB_START_CNTL_B);
- gam_regs.start_cntl_g = REG(CM_GAMCOR_RAMB_START_CNTL_G);
- gam_regs.start_cntl_r = REG(CM_GAMCOR_RAMB_START_CNTL_R);
- gam_regs.start_slope_cntl_b = REG(CM_GAMCOR_RAMB_START_SLOPE_CNTL_B);
- gam_regs.start_slope_cntl_g = REG(CM_GAMCOR_RAMB_START_SLOPE_CNTL_G);
- gam_regs.start_slope_cntl_r = REG(CM_GAMCOR_RAMB_START_SLOPE_CNTL_R);
- gam_regs.start_end_cntl1_b = REG(CM_GAMCOR_RAMB_END_CNTL1_B);
- gam_regs.start_end_cntl2_b = REG(CM_GAMCOR_RAMB_END_CNTL2_B);
- gam_regs.start_end_cntl1_g = REG(CM_GAMCOR_RAMB_END_CNTL1_G);
- gam_regs.start_end_cntl2_g = REG(CM_GAMCOR_RAMB_END_CNTL2_G);
- gam_regs.start_end_cntl1_r = REG(CM_GAMCOR_RAMB_END_CNTL1_R);
- gam_regs.start_end_cntl2_r = REG(CM_GAMCOR_RAMB_END_CNTL2_R);
- gam_regs.region_start = REG(CM_GAMCOR_RAMB_REGION_0_1);
- gam_regs.region_end = REG(CM_GAMCOR_RAMB_REGION_32_33);
- //New registers in DCN3AG/DCN GAMCOR block
- gam_regs.offset_b = REG(CM_GAMCOR_RAMB_OFFSET_B);
- gam_regs.offset_g = REG(CM_GAMCOR_RAMB_OFFSET_G);
- gam_regs.offset_r = REG(CM_GAMCOR_RAMB_OFFSET_R);
- gam_regs.start_base_cntl_b = REG(CM_GAMCOR_RAMB_START_BASE_CNTL_B);
- gam_regs.start_base_cntl_g = REG(CM_GAMCOR_RAMB_START_BASE_CNTL_G);
- gam_regs.start_base_cntl_r = REG(CM_GAMCOR_RAMB_START_BASE_CNTL_R);
- } else {
- gam_regs.start_cntl_b = REG(CM_GAMCOR_RAMA_START_CNTL_B);
- gam_regs.start_cntl_g = REG(CM_GAMCOR_RAMA_START_CNTL_G);
- gam_regs.start_cntl_r = REG(CM_GAMCOR_RAMA_START_CNTL_R);
- gam_regs.start_slope_cntl_b = REG(CM_GAMCOR_RAMA_START_SLOPE_CNTL_B);
- gam_regs.start_slope_cntl_g = REG(CM_GAMCOR_RAMA_START_SLOPE_CNTL_G);
- gam_regs.start_slope_cntl_r = REG(CM_GAMCOR_RAMA_START_SLOPE_CNTL_R);
- gam_regs.start_end_cntl1_b = REG(CM_GAMCOR_RAMA_END_CNTL1_B);
- gam_regs.start_end_cntl2_b = REG(CM_GAMCOR_RAMA_END_CNTL2_B);
- gam_regs.start_end_cntl1_g = REG(CM_GAMCOR_RAMA_END_CNTL1_G);
- gam_regs.start_end_cntl2_g = REG(CM_GAMCOR_RAMA_END_CNTL2_G);
- gam_regs.start_end_cntl1_r = REG(CM_GAMCOR_RAMA_END_CNTL1_R);
- gam_regs.start_end_cntl2_r = REG(CM_GAMCOR_RAMA_END_CNTL2_R);
- gam_regs.region_start = REG(CM_GAMCOR_RAMA_REGION_0_1);
- gam_regs.region_end = REG(CM_GAMCOR_RAMA_REGION_32_33);
- //New registers in DCN3AG/DCN GAMCOR block
- gam_regs.offset_b = REG(CM_GAMCOR_RAMA_OFFSET_B);
- gam_regs.offset_g = REG(CM_GAMCOR_RAMA_OFFSET_G);
- gam_regs.offset_r = REG(CM_GAMCOR_RAMA_OFFSET_R);
- gam_regs.start_base_cntl_b = REG(CM_GAMCOR_RAMA_START_BASE_CNTL_B);
- gam_regs.start_base_cntl_g = REG(CM_GAMCOR_RAMA_START_BASE_CNTL_G);
- gam_regs.start_base_cntl_r = REG(CM_GAMCOR_RAMA_START_BASE_CNTL_R);
- }
-
- //get register fields
- dpp3_gamcor_reg_field(dpp, &gam_regs);
-
- //program register set for LUTA/LUTB
- cm_helper_program_gamcor_xfer_func(dpp_base->ctx, params, &gam_regs);
-
- dpp3_program_gammcor_lut(dpp_base, params->rgb_resulted, params->hw_points_num,
- next_mode == LUT_RAM_A);
-
- //select Gamma LUT to use for next frame
- REG_UPDATE(CM_GAMCOR_CONTROL, CM_GAMCOR_SELECT, next_mode == LUT_RAM_A ? 0:1);
-
- return true;
-}
-
-void dpp3_set_hdr_multiplier(
- struct dpp *dpp_base,
- uint32_t multiplier)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
-
- REG_UPDATE(CM_HDR_MULT_COEF, CM_HDR_MULT_COEF, multiplier);
-}
-
-
-static void program_gamut_remap(
- struct dcn3_dpp *dpp,
- const uint16_t *regval,
- int select)
-{
- uint16_t selection = 0;
- struct color_matrices_reg gam_regs;
-
- if (regval == NULL || select == GAMUT_REMAP_BYPASS) {
- REG_SET(CM_GAMUT_REMAP_CONTROL, 0,
- CM_GAMUT_REMAP_MODE, 0);
- return;
- }
- switch (select) {
- case GAMUT_REMAP_COEFF:
- selection = 1;
- break;
- /*this corresponds to GAMUT_REMAP coefficients set B
- *we don't have common coefficient sets in dcn3ag/dcn3
- */
- case GAMUT_REMAP_COMA_COEFF:
- selection = 2;
- break;
- default:
- break;
- }
-
- gam_regs.shifts.csc_c11 = dpp->tf_shift->CM_GAMUT_REMAP_C11;
- gam_regs.masks.csc_c11 = dpp->tf_mask->CM_GAMUT_REMAP_C11;
- gam_regs.shifts.csc_c12 = dpp->tf_shift->CM_GAMUT_REMAP_C12;
- gam_regs.masks.csc_c12 = dpp->tf_mask->CM_GAMUT_REMAP_C12;
-
-
- if (select == GAMUT_REMAP_COEFF) {
- gam_regs.csc_c11_c12 = REG(CM_GAMUT_REMAP_C11_C12);
- gam_regs.csc_c33_c34 = REG(CM_GAMUT_REMAP_C33_C34);
-
- cm_helper_program_color_matrices(
- dpp->base.ctx,
- regval,
- &gam_regs);
-
- } else if (select == GAMUT_REMAP_COMA_COEFF) {
-
- gam_regs.csc_c11_c12 = REG(CM_GAMUT_REMAP_B_C11_C12);
- gam_regs.csc_c33_c34 = REG(CM_GAMUT_REMAP_B_C33_C34);
-
- cm_helper_program_color_matrices(
- dpp->base.ctx,
- regval,
- &gam_regs);
-
- }
- //select coefficient set to use
- REG_SET(
- CM_GAMUT_REMAP_CONTROL, 0,
- CM_GAMUT_REMAP_MODE, selection);
-}
-
-void dpp3_cm_set_gamut_remap(
- struct dpp *dpp_base,
- const struct dpp_grph_csc_adjustment *adjust)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- int i = 0;
- int gamut_mode;
-
- if (adjust->gamut_adjust_type != GRAPHICS_GAMUT_ADJUST_TYPE_SW)
- /* Bypass if type is bypass or hw */
- program_gamut_remap(dpp, NULL, GAMUT_REMAP_BYPASS);
- else {
- struct fixed31_32 arr_matrix[12];
- uint16_t arr_reg_val[12];
-
- for (i = 0; i < 12; i++)
- arr_matrix[i] = adjust->temperature_matrix[i];
-
- convert_float_matrix(
- arr_reg_val, arr_matrix, 12);
-
- //current coefficient set in use
- REG_GET(CM_GAMUT_REMAP_CONTROL, CM_GAMUT_REMAP_MODE_CURRENT, &gamut_mode);
-
- if (gamut_mode == 0)
- gamut_mode = 1; //use coefficient set A
- else if (gamut_mode == 1)
- gamut_mode = 2;
- else
- gamut_mode = 1;
-
- //follow dcn2 approach for now - using only coefficient set A
- program_gamut_remap(dpp, arr_reg_val, gamut_mode);
- }
-}
-
-static void read_gamut_remap(struct dcn3_dpp *dpp,
- uint16_t *regval,
- int *select)
-{
- struct color_matrices_reg gam_regs;
- uint32_t selection;
-
- //current coefficient set in use
- REG_GET(CM_GAMUT_REMAP_CONTROL, CM_GAMUT_REMAP_MODE_CURRENT, &selection);
-
- *select = selection;
-
- gam_regs.shifts.csc_c11 = dpp->tf_shift->CM_GAMUT_REMAP_C11;
- gam_regs.masks.csc_c11 = dpp->tf_mask->CM_GAMUT_REMAP_C11;
- gam_regs.shifts.csc_c12 = dpp->tf_shift->CM_GAMUT_REMAP_C12;
- gam_regs.masks.csc_c12 = dpp->tf_mask->CM_GAMUT_REMAP_C12;
-
- if (*select == GAMUT_REMAP_COEFF) {
- gam_regs.csc_c11_c12 = REG(CM_GAMUT_REMAP_C11_C12);
- gam_regs.csc_c33_c34 = REG(CM_GAMUT_REMAP_C33_C34);
-
- cm_helper_read_color_matrices(dpp->base.ctx,
- regval,
- &gam_regs);
-
- } else if (*select == GAMUT_REMAP_COMA_COEFF) {
- gam_regs.csc_c11_c12 = REG(CM_GAMUT_REMAP_B_C11_C12);
- gam_regs.csc_c33_c34 = REG(CM_GAMUT_REMAP_B_C33_C34);
-
- cm_helper_read_color_matrices(dpp->base.ctx,
- regval,
- &gam_regs);
- }
-}
-
-void dpp3_cm_get_gamut_remap(struct dpp *dpp_base,
- struct dpp_grph_csc_adjustment *adjust)
-{
- struct dcn3_dpp *dpp = TO_DCN30_DPP(dpp_base);
- uint16_t arr_reg_val[12];
- int select;
-
- read_gamut_remap(dpp, arr_reg_val, &select);
-
- if (select == GAMUT_REMAP_BYPASS) {
- adjust->gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_BYPASS;
- return;
- }
-
- adjust->gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_SW;
- convert_hw_matrix(adjust->temperature_matrix,
- arr_reg_val, ARRAY_SIZE(arr_reg_val));
-}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.c
deleted file mode 100644
index 1b9d9495f76d..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-
-#include "reg_helper.h"
-#include "resource.h"
-#include "dwb.h"
-#include "dcn30_dwb.h"
-
-
-#define REG(reg)\
- dwbc30->dwbc_regs->reg
-
-#define CTX \
- dwbc30->base.ctx
-
-#undef FN
-#define FN(reg_name, field_name) \
- dwbc30->dwbc_shift->field_name, dwbc30->dwbc_mask->field_name
-
-#define DC_LOGGER \
- dwbc30->base.ctx->logger
-
-static bool dwb3_get_caps(struct dwbc *dwbc, struct dwb_caps *caps)
-{
- if (caps) {
- caps->adapter_id = 0; /* we only support 1 adapter currently */
- caps->hw_version = DCN_VERSION_3_0;
- caps->num_pipes = 2;
- memset(&caps->reserved, 0, sizeof(caps->reserved));
- memset(&caps->reserved2, 0, sizeof(caps->reserved2));
- caps->sw_version = dwb_ver_2_0;
- caps->caps.support_dwb = true;
- caps->caps.support_ogam = true;
- caps->caps.support_wbscl = true;
- caps->caps.support_ocsc = false;
- caps->caps.support_stereo = true;
- return true;
- } else {
- return false;
- }
-}
-
-void dwb3_config_fc(struct dwbc *dwbc, struct dc_dwb_params *params)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- /* Set DWB source size */
- REG_UPDATE_2(FC_SOURCE_SIZE, FC_SOURCE_WIDTH, params->cnv_params.src_width,
- FC_SOURCE_HEIGHT, params->cnv_params.src_height);
-
- /* source size is not equal the source size, then enable cropping. */
- if (params->cnv_params.crop_en) {
- REG_UPDATE(FC_MODE_CTRL, FC_WINDOW_CROP_EN, 1);
- REG_UPDATE(FC_WINDOW_START, FC_WINDOW_START_X, params->cnv_params.crop_x);
- REG_UPDATE(FC_WINDOW_START, FC_WINDOW_START_Y, params->cnv_params.crop_y);
- REG_UPDATE(FC_WINDOW_SIZE, FC_WINDOW_WIDTH, params->cnv_params.crop_width);
- REG_UPDATE(FC_WINDOW_SIZE, FC_WINDOW_HEIGHT, params->cnv_params.crop_height);
- } else {
- REG_UPDATE(FC_MODE_CTRL, FC_WINDOW_CROP_EN, 0);
- }
-
- /* Set CAPTURE_RATE */
- REG_UPDATE(FC_MODE_CTRL, FC_FRAME_CAPTURE_RATE, params->capture_rate);
-
- dwb3_set_stereo(dwbc, &params->stereo_params);
-}
-
-bool dwb3_enable(struct dwbc *dwbc, struct dc_dwb_params *params)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
- DC_LOG_DWB("%s dwb3_enabled at inst = %d", __func__, dwbc->inst);
-
- /* Set WB_ENABLE (not double buffered; capture not enabled) */
- REG_UPDATE(DWB_ENABLE_CLK_CTRL, DWB_ENABLE, 1);
-
- /* Set FC parameters */
- dwb3_config_fc(dwbc, params);
-
- /* Program color processing unit */
- dwb3_program_hdr_mult(dwbc, params);
- dwb3_set_gamut_remap(dwbc, params);
- dwb3_ogam_set_input_transfer_func(dwbc, params->out_transfer_func);
-
- /* Program output denorm */
- dwb3_set_denorm(dwbc, params);
-
- /* Enable DWB capture enable (double buffered) */
- REG_UPDATE(FC_MODE_CTRL, FC_FRAME_CAPTURE_EN, DWB_FRAME_CAPTURE_ENABLE);
-
- /* First pixel count */
- REG_UPDATE(FC_FLOW_CTRL, FC_FIRST_PIXEL_DELAY_COUNT, 96);
-
- return true;
-}
-
-bool dwb3_disable(struct dwbc *dwbc)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- /* disable FC */
- REG_UPDATE(FC_MODE_CTRL, FC_FRAME_CAPTURE_EN, DWB_FRAME_CAPTURE_DISABLE);
-
- /* disable WB */
- REG_UPDATE(DWB_ENABLE_CLK_CTRL, DWB_ENABLE, 0);
-
- DC_LOG_DWB("%s dwb3_disabled at inst = %d", __func__, dwbc->inst);
- return true;
-}
-
-void dwb3_set_fc_enable(struct dwbc *dwbc, enum dwb_frame_capture_enable enable)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
- unsigned int pre_locked;
-
- REG_GET(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, &pre_locked);
-
- /* Lock DWB registers */
- if (pre_locked == 0)
- REG_UPDATE(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, 1);
-
- /* Disable FC */
- REG_UPDATE(FC_MODE_CTRL, FC_FRAME_CAPTURE_EN, enable);
-
- /* Unlock DWB registers */
- if (pre_locked == 0)
- REG_UPDATE(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, 0);
-
- DC_LOG_DWB("%s dwb3_fc_disabled at inst = %d", __func__, dwbc->inst);
-}
-
-
-bool dwb3_update(struct dwbc *dwbc, struct dc_dwb_params *params)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
- unsigned int pre_locked;
-
- /*
- * Check if the caller has already locked DWB registers.
- * If so: assume the caller will unlock, so don't touch the lock.
- * If not: lock them for this update, then unlock after the
- * update is complete.
- */
- REG_GET(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, &pre_locked);
- DC_LOG_DWB("%s dwb update, inst = %d", __func__, dwbc->inst);
-
- if (pre_locked == 0) {
- /* Lock DWB registers */
- REG_UPDATE(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, 1);
- }
-
- /* Set FC parameters */
- dwb3_config_fc(dwbc, params);
-
- /* Program color processing unit */
- dwb3_program_hdr_mult(dwbc, params);
- dwb3_set_gamut_remap(dwbc, params);
- dwb3_ogam_set_input_transfer_func(dwbc, params->out_transfer_func);
-
- /* Program output denorm */
- dwb3_set_denorm(dwbc, params);
-
- if (pre_locked == 0) {
- /* Unlock DWB registers */
- REG_UPDATE(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, 0);
- }
-
- return true;
-}
-
-bool dwb3_is_enabled(struct dwbc *dwbc)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
- unsigned int dwb_enabled = 0;
- unsigned int fc_frame_capture_en = 0;
-
- REG_GET(DWB_ENABLE_CLK_CTRL, DWB_ENABLE, &dwb_enabled);
- REG_GET(FC_MODE_CTRL, FC_FRAME_CAPTURE_EN, &fc_frame_capture_en);
-
- return ((dwb_enabled != 0) && (fc_frame_capture_en != 0));
-}
-
-void dwb3_set_stereo(struct dwbc *dwbc,
- struct dwb_stereo_params *stereo_params)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- if (stereo_params->stereo_enabled) {
- REG_UPDATE(FC_MODE_CTRL, FC_EYE_SELECTION, stereo_params->stereo_eye_select);
- REG_UPDATE(FC_MODE_CTRL, FC_STEREO_EYE_POLARITY, stereo_params->stereo_polarity);
- DC_LOG_DWB("%s dwb stereo enabled", __func__);
- } else {
- REG_UPDATE(FC_MODE_CTRL, FC_EYE_SELECTION, 0);
- DC_LOG_DWB("%s dwb stereo disabled", __func__);
- }
-}
-
-void dwb3_set_new_content(struct dwbc *dwbc,
- bool is_new_content)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- REG_UPDATE(FC_MODE_CTRL, FC_NEW_CONTENT, is_new_content);
-}
-
-void dwb3_set_denorm(struct dwbc *dwbc, struct dc_dwb_params *params)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- /* Set output format*/
- REG_UPDATE(DWB_OUT_CTRL, OUT_FORMAT, params->cnv_params.fc_out_format);
-
- /* Set output denorm */
- if (params->cnv_params.fc_out_format == DWB_OUT_FORMAT_32BPP_ARGB ||
- params->cnv_params.fc_out_format == DWB_OUT_FORMAT_32BPP_RGBA) {
- REG_UPDATE(DWB_OUT_CTRL, OUT_DENORM, params->cnv_params.out_denorm_mode);
- REG_UPDATE(DWB_OUT_CTRL, OUT_MAX, params->cnv_params.out_max_pix_val);
- REG_UPDATE(DWB_OUT_CTRL, OUT_MIN, params->cnv_params.out_min_pix_val);
- }
-}
-
-
-static const struct dwbc_funcs dcn30_dwbc_funcs = {
- .get_caps = dwb3_get_caps,
- .enable = dwb3_enable,
- .disable = dwb3_disable,
- .update = dwb3_update,
- .is_enabled = dwb3_is_enabled,
- .set_fc_enable = dwb3_set_fc_enable,
- .set_stereo = dwb3_set_stereo,
- .set_new_content = dwb3_set_new_content,
- .dwb_program_output_csc = NULL,
- .dwb_ogam_set_input_transfer_func = dwb3_ogam_set_input_transfer_func, //TODO: rename
- .dwb_set_scaler = NULL,
-};
-
-void dcn30_dwbc_construct(struct dcn30_dwbc *dwbc30,
- struct dc_context *ctx,
- const struct dcn30_dwbc_registers *dwbc_regs,
- const struct dcn30_dwbc_shift *dwbc_shift,
- const struct dcn30_dwbc_mask *dwbc_mask,
- int inst)
-{
- dwbc30->base.ctx = ctx;
-
- dwbc30->base.inst = inst;
- dwbc30->base.funcs = &dcn30_dwbc_funcs;
-
- dwbc30->dwbc_regs = dwbc_regs;
- dwbc30->dwbc_shift = dwbc_shift;
- dwbc30->dwbc_mask = dwbc_mask;
-}
-
-void dwb3_set_host_read_rate_control(struct dwbc *dwbc, bool host_read_delay)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- /*
- * Set maximum delay of host read access to DWBSCL LUT or OGAM LUT if there are no
- * idle cycles in HW pipeline (in number of clock cycles times 4)
- */
- REG_UPDATE(DWB_HOST_READ_CONTROL, DWB_HOST_READ_RATE_CONTROL, host_read_delay);
-
- DC_LOG_DWB("%s dwb3_rate_control at inst = %d", __func__, dwbc->inst);
-}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.h
deleted file mode 100644
index 332634b76aac..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.h
+++ /dev/null
@@ -1,908 +0,0 @@
-/* Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-#ifndef __DC_DWBC_DCN30_H__
-#define __DC_DWBC_DCN30_H__
-
-#define TO_DCN30_DWBC(dwbc_base) \
- container_of(dwbc_base, struct dcn30_dwbc, base)
-
-#define DWBC_COMMON_REG_LIST_DCN30(inst) \
- SR(DWB_ENABLE_CLK_CTRL),\
- SR(DWB_MEM_PWR_CTRL),\
- SR(FC_MODE_CTRL),\
- SR(FC_FLOW_CTRL),\
- SR(FC_WINDOW_START),\
- SR(FC_WINDOW_SIZE),\
- SR(FC_SOURCE_SIZE),\
- SR(DWB_UPDATE_CTRL),\
- SR(DWB_CRC_CTRL),\
- SR(DWB_CRC_MASK_R_G),\
- SR(DWB_CRC_MASK_B_A),\
- SR(DWB_CRC_VAL_R_G),\
- SR(DWB_CRC_VAL_B_A),\
- SR(DWB_OUT_CTRL),\
- SR(DWB_MMHUBBUB_BACKPRESSURE_CNT_EN),\
- SR(DWB_MMHUBBUB_BACKPRESSURE_CNT),\
- SR(DWB_HOST_READ_CONTROL),\
- SR(DWB_SOFT_RESET),\
- SR(DWB_HDR_MULT_COEF),\
- SR(DWB_GAMUT_REMAP_MODE),\
- SR(DWB_GAMUT_REMAP_COEF_FORMAT),\
- SR(DWB_GAMUT_REMAPA_C11_C12),\
- SR(DWB_GAMUT_REMAPA_C13_C14),\
- SR(DWB_GAMUT_REMAPA_C21_C22),\
- SR(DWB_GAMUT_REMAPA_C23_C24),\
- SR(DWB_GAMUT_REMAPA_C31_C32),\
- SR(DWB_GAMUT_REMAPA_C33_C34),\
- SR(DWB_GAMUT_REMAPB_C11_C12),\
- SR(DWB_GAMUT_REMAPB_C13_C14),\
- SR(DWB_GAMUT_REMAPB_C21_C22),\
- SR(DWB_GAMUT_REMAPB_C23_C24),\
- SR(DWB_GAMUT_REMAPB_C31_C32),\
- SR(DWB_GAMUT_REMAPB_C33_C34),\
- SR(DWB_OGAM_CONTROL),\
- SR(DWB_OGAM_LUT_INDEX),\
- SR(DWB_OGAM_LUT_DATA),\
- SR(DWB_OGAM_LUT_CONTROL),\
- SR(DWB_OGAM_RAMA_START_CNTL_B),\
- SR(DWB_OGAM_RAMA_START_CNTL_G),\
- SR(DWB_OGAM_RAMA_START_CNTL_R),\
- SR(DWB_OGAM_RAMA_START_BASE_CNTL_B),\
- SR(DWB_OGAM_RAMA_START_SLOPE_CNTL_B),\
- SR(DWB_OGAM_RAMA_START_BASE_CNTL_G),\
- SR(DWB_OGAM_RAMA_START_SLOPE_CNTL_G),\
- SR(DWB_OGAM_RAMA_START_BASE_CNTL_R),\
- SR(DWB_OGAM_RAMA_START_SLOPE_CNTL_R),\
- SR(DWB_OGAM_RAMA_END_CNTL1_B),\
- SR(DWB_OGAM_RAMA_END_CNTL2_B),\
- SR(DWB_OGAM_RAMA_END_CNTL1_G),\
- SR(DWB_OGAM_RAMA_END_CNTL2_G),\
- SR(DWB_OGAM_RAMA_END_CNTL1_R),\
- SR(DWB_OGAM_RAMA_END_CNTL2_R),\
- SR(DWB_OGAM_RAMA_OFFSET_B),\
- SR(DWB_OGAM_RAMA_OFFSET_G),\
- SR(DWB_OGAM_RAMA_OFFSET_R),\
- SR(DWB_OGAM_RAMA_REGION_0_1),\
- SR(DWB_OGAM_RAMA_REGION_2_3),\
- SR(DWB_OGAM_RAMA_REGION_4_5),\
- SR(DWB_OGAM_RAMA_REGION_6_7),\
- SR(DWB_OGAM_RAMA_REGION_8_9),\
- SR(DWB_OGAM_RAMA_REGION_10_11),\
- SR(DWB_OGAM_RAMA_REGION_12_13),\
- SR(DWB_OGAM_RAMA_REGION_14_15),\
- SR(DWB_OGAM_RAMA_REGION_16_17),\
- SR(DWB_OGAM_RAMA_REGION_18_19),\
- SR(DWB_OGAM_RAMA_REGION_20_21),\
- SR(DWB_OGAM_RAMA_REGION_22_23),\
- SR(DWB_OGAM_RAMA_REGION_24_25),\
- SR(DWB_OGAM_RAMA_REGION_26_27),\
- SR(DWB_OGAM_RAMA_REGION_28_29),\
- SR(DWB_OGAM_RAMA_REGION_30_31),\
- SR(DWB_OGAM_RAMA_REGION_32_33),\
- SR(DWB_OGAM_RAMB_START_CNTL_B),\
- SR(DWB_OGAM_RAMB_START_CNTL_G),\
- SR(DWB_OGAM_RAMB_START_CNTL_R),\
- SR(DWB_OGAM_RAMB_START_BASE_CNTL_B),\
- SR(DWB_OGAM_RAMB_START_SLOPE_CNTL_B),\
- SR(DWB_OGAM_RAMB_START_BASE_CNTL_G),\
- SR(DWB_OGAM_RAMB_START_SLOPE_CNTL_G),\
- SR(DWB_OGAM_RAMB_START_BASE_CNTL_R),\
- SR(DWB_OGAM_RAMB_START_SLOPE_CNTL_R),\
- SR(DWB_OGAM_RAMB_END_CNTL1_B),\
- SR(DWB_OGAM_RAMB_END_CNTL2_B),\
- SR(DWB_OGAM_RAMB_END_CNTL1_G),\
- SR(DWB_OGAM_RAMB_END_CNTL2_G),\
- SR(DWB_OGAM_RAMB_END_CNTL1_R),\
- SR(DWB_OGAM_RAMB_END_CNTL2_R),\
- SR(DWB_OGAM_RAMB_OFFSET_B),\
- SR(DWB_OGAM_RAMB_OFFSET_G),\
- SR(DWB_OGAM_RAMB_OFFSET_R),\
- SR(DWB_OGAM_RAMB_REGION_0_1),\
- SR(DWB_OGAM_RAMB_REGION_2_3),\
- SR(DWB_OGAM_RAMB_REGION_4_5),\
- SR(DWB_OGAM_RAMB_REGION_6_7),\
- SR(DWB_OGAM_RAMB_REGION_8_9),\
- SR(DWB_OGAM_RAMB_REGION_10_11),\
- SR(DWB_OGAM_RAMB_REGION_12_13),\
- SR(DWB_OGAM_RAMB_REGION_14_15),\
- SR(DWB_OGAM_RAMB_REGION_16_17),\
- SR(DWB_OGAM_RAMB_REGION_18_19),\
- SR(DWB_OGAM_RAMB_REGION_20_21),\
- SR(DWB_OGAM_RAMB_REGION_22_23),\
- SR(DWB_OGAM_RAMB_REGION_24_25),\
- SR(DWB_OGAM_RAMB_REGION_26_27),\
- SR(DWB_OGAM_RAMB_REGION_28_29),\
- SR(DWB_OGAM_RAMB_REGION_30_31),\
- SR(DWB_OGAM_RAMB_REGION_32_33)
-
-
-#define DWBC_COMMON_MASK_SH_LIST_DCN30(mask_sh) \
- SF_DWB2(DWB_ENABLE_CLK_CTRL, DWB_TOP, 0, DWB_ENABLE, mask_sh),\
- SF_DWB2(DWB_ENABLE_CLK_CTRL, DWB_TOP, 0, DISPCLK_R_DWB_GATE_DIS, mask_sh),\
- SF_DWB2(DWB_ENABLE_CLK_CTRL, DWB_TOP, 0, DISPCLK_G_DWB_GATE_DIS, mask_sh),\
- SF_DWB2(DWB_ENABLE_CLK_CTRL, DWB_TOP, 0, DWB_TEST_CLK_SEL, mask_sh),\
- SF_DWB2(DWB_MEM_PWR_CTRL, DWB_TOP, 0, DWB_OGAM_LUT_MEM_PWR_FORCE, mask_sh),\
- SF_DWB2(DWB_MEM_PWR_CTRL, DWB_TOP, 0, DWB_OGAM_LUT_MEM_PWR_DIS, mask_sh),\
- SF_DWB2(DWB_MEM_PWR_CTRL, DWB_TOP, 0, DWB_OGAM_LUT_MEM_PWR_STATE, mask_sh),\
- SF_DWB2(FC_MODE_CTRL, DWB_TOP, 0, FC_FRAME_CAPTURE_EN, mask_sh),\
- SF_DWB2(FC_MODE_CTRL, DWB_TOP, 0, FC_FRAME_CAPTURE_RATE, mask_sh),\
- SF_DWB2(FC_MODE_CTRL, DWB_TOP, 0, FC_WINDOW_CROP_EN, mask_sh),\
- SF_DWB2(FC_MODE_CTRL, DWB_TOP, 0, FC_EYE_SELECTION, mask_sh),\
- SF_DWB2(FC_MODE_CTRL, DWB_TOP, 0, FC_STEREO_EYE_POLARITY, mask_sh),\
- SF_DWB2(FC_MODE_CTRL, DWB_TOP, 0, FC_NEW_CONTENT, mask_sh),\
- SF_DWB2(FC_MODE_CTRL, DWB_TOP, 0, FC_FRAME_CAPTURE_EN_CURRENT, mask_sh),\
- SF_DWB2(FC_FLOW_CTRL, DWB_TOP, 0, FC_FIRST_PIXEL_DELAY_COUNT, mask_sh),\
- SF_DWB2(FC_WINDOW_START, DWB_TOP, 0, FC_WINDOW_START_X, mask_sh),\
- SF_DWB2(FC_WINDOW_START, DWB_TOP, 0, FC_WINDOW_START_Y, mask_sh),\
- SF_DWB2(FC_WINDOW_SIZE, DWB_TOP, 0, FC_WINDOW_WIDTH, mask_sh),\
- SF_DWB2(FC_WINDOW_SIZE, DWB_TOP, 0, FC_WINDOW_HEIGHT, mask_sh),\
- SF_DWB2(FC_SOURCE_SIZE, DWB_TOP, 0, FC_SOURCE_WIDTH, mask_sh),\
- SF_DWB2(FC_SOURCE_SIZE, DWB_TOP, 0, FC_SOURCE_HEIGHT, mask_sh),\
- SF_DWB2(DWB_UPDATE_CTRL, DWB_TOP, 0, DWB_UPDATE_LOCK, mask_sh),\
- SF_DWB2(DWB_UPDATE_CTRL, DWB_TOP, 0, DWB_UPDATE_PENDING, mask_sh),\
- SF_DWB2(DWB_CRC_CTRL, DWB_TOP, 0, DWB_CRC_EN, mask_sh),\
- SF_DWB2(DWB_CRC_CTRL, DWB_TOP, 0, DWB_CRC_CONT_EN, mask_sh),\
- SF_DWB2(DWB_CRC_CTRL, DWB_TOP, 0, DWB_CRC_SRC_SEL, mask_sh),\
- SF_DWB2(DWB_CRC_MASK_R_G, DWB_TOP, 0, DWB_CRC_RED_MASK, mask_sh),\
- SF_DWB2(DWB_CRC_MASK_R_G, DWB_TOP, 0, DWB_CRC_GREEN_MASK, mask_sh),\
- SF_DWB2(DWB_CRC_MASK_B_A, DWB_TOP, 0, DWB_CRC_BLUE_MASK, mask_sh),\
- SF_DWB2(DWB_CRC_MASK_B_A, DWB_TOP, 0, DWB_CRC_A_MASK, mask_sh),\
- SF_DWB2(DWB_CRC_VAL_R_G, DWB_TOP, 0, DWB_CRC_SIG_RED, mask_sh),\
- SF_DWB2(DWB_CRC_VAL_R_G, DWB_TOP, 0, DWB_CRC_SIG_GREEN, mask_sh),\
- SF_DWB2(DWB_CRC_VAL_B_A, DWB_TOP, 0, DWB_CRC_SIG_BLUE, mask_sh),\
- SF_DWB2(DWB_CRC_VAL_B_A, DWB_TOP, 0, DWB_CRC_SIG_A, mask_sh),\
- SF_DWB2(DWB_OUT_CTRL, DWB_TOP, 0, OUT_FORMAT, mask_sh),\
- SF_DWB2(DWB_OUT_CTRL, DWB_TOP, 0, OUT_DENORM, mask_sh),\
- SF_DWB2(DWB_OUT_CTRL, DWB_TOP, 0, OUT_MAX, mask_sh),\
- SF_DWB2(DWB_OUT_CTRL, DWB_TOP, 0, OUT_MIN, mask_sh),\
- SF_DWB2(DWB_MMHUBBUB_BACKPRESSURE_CNT_EN, DWB_TOP, 0, DWB_MMHUBBUB_BACKPRESSURE_CNT_EN, mask_sh),\
- SF_DWB2(DWB_MMHUBBUB_BACKPRESSURE_CNT, DWB_TOP, 0, DWB_MMHUBBUB_MAX_BACKPRESSURE, mask_sh),\
- SF_DWB2(DWB_HOST_READ_CONTROL, DWB_TOP, 0, DWB_HOST_READ_RATE_CONTROL, mask_sh),\
- SF_DWB2(DWB_SOFT_RESET, DWB_TOP, 0, DWB_SOFT_RESET, mask_sh),\
- SF_DWB2(DWB_HDR_MULT_COEF, DWBCP, 0, DWB_HDR_MULT_COEF, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAP_MODE, DWBCP, 0, DWB_GAMUT_REMAP_MODE, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAP_MODE, DWBCP, 0, DWB_GAMUT_REMAP_MODE_CURRENT, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAP_COEF_FORMAT, DWBCP, 0, DWB_GAMUT_REMAP_COEF_FORMAT, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C11_C12, DWBCP, 0, DWB_GAMUT_REMAPA_C11, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C11_C12, DWBCP, 0, DWB_GAMUT_REMAPA_C12, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C13_C14, DWBCP, 0, DWB_GAMUT_REMAPA_C13, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C13_C14, DWBCP, 0, DWB_GAMUT_REMAPA_C14, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C21_C22, DWBCP, 0, DWB_GAMUT_REMAPA_C21, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C21_C22, DWBCP, 0, DWB_GAMUT_REMAPA_C22, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C23_C24, DWBCP, 0, DWB_GAMUT_REMAPA_C23, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C23_C24, DWBCP, 0, DWB_GAMUT_REMAPA_C24, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C31_C32, DWBCP, 0, DWB_GAMUT_REMAPA_C31, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C31_C32, DWBCP, 0, DWB_GAMUT_REMAPA_C32, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C33_C34, DWBCP, 0, DWB_GAMUT_REMAPA_C33, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPA_C33_C34, DWBCP, 0, DWB_GAMUT_REMAPA_C34, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C11_C12, DWBCP, 0, DWB_GAMUT_REMAPB_C11, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C11_C12, DWBCP, 0, DWB_GAMUT_REMAPB_C12, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C13_C14, DWBCP, 0, DWB_GAMUT_REMAPB_C13, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C13_C14, DWBCP, 0, DWB_GAMUT_REMAPB_C14, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C21_C22, DWBCP, 0, DWB_GAMUT_REMAPB_C21, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C21_C22, DWBCP, 0, DWB_GAMUT_REMAPB_C22, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C23_C24, DWBCP, 0, DWB_GAMUT_REMAPB_C23, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C23_C24, DWBCP, 0, DWB_GAMUT_REMAPB_C24, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C31_C32, DWBCP, 0, DWB_GAMUT_REMAPB_C31, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C31_C32, DWBCP, 0, DWB_GAMUT_REMAPB_C32, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C33_C34, DWBCP, 0, DWB_GAMUT_REMAPB_C33, mask_sh),\
- SF_DWB2(DWB_GAMUT_REMAPB_C33_C34, DWBCP, 0, DWB_GAMUT_REMAPB_C34, mask_sh),\
- SF_DWB2(DWB_OGAM_CONTROL, DWBCP, 0, DWB_OGAM_MODE, mask_sh),\
- SF_DWB2(DWB_OGAM_CONTROL, DWBCP, 0, DWB_OGAM_SELECT, mask_sh),\
- SF_DWB2(DWB_OGAM_CONTROL, DWBCP, 0, DWB_OGAM_PWL_DISABLE, mask_sh),\
- SF_DWB2(DWB_OGAM_CONTROL, DWBCP, 0, DWB_OGAM_MODE_CURRENT, mask_sh),\
- SF_DWB2(DWB_OGAM_CONTROL, DWBCP, 0, DWB_OGAM_SELECT_CURRENT, mask_sh),\
- SF_DWB2(DWB_OGAM_LUT_INDEX, DWBCP, 0, DWB_OGAM_LUT_INDEX, mask_sh),\
- SF_DWB2(DWB_OGAM_LUT_DATA, DWBCP, 0, DWB_OGAM_LUT_DATA, mask_sh),\
- SF_DWB2(DWB_OGAM_LUT_CONTROL, DWBCP, 0, DWB_OGAM_LUT_WRITE_COLOR_MASK, mask_sh),\
- SF_DWB2(DWB_OGAM_LUT_CONTROL, DWBCP, 0, DWB_OGAM_LUT_READ_COLOR_SEL, mask_sh),\
- SF_DWB2(DWB_OGAM_LUT_CONTROL, DWBCP, 0, DWB_OGAM_LUT_HOST_SEL, mask_sh),\
- SF_DWB2(DWB_OGAM_LUT_CONTROL, DWBCP, 0, DWB_OGAM_LUT_CONFIG_MODE, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_CNTL_B, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_CNTL_B, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_CNTL_G, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_CNTL_G, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_CNTL_R, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_CNTL_R, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_BASE_CNTL_B, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_BASE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_SLOPE_CNTL_B, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_BASE_CNTL_G, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_BASE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_SLOPE_CNTL_G, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_BASE_CNTL_R, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_BASE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_START_SLOPE_CNTL_R, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL1_B, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL2_B, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL2_B, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL1_G, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_BASE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL2_G, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL2_G, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL1_R, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_BASE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL2_R, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_END_CNTL2_R, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_OFFSET_B, DWBCP, 0, DWB_OGAM_RAMA_OFFSET_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_OFFSET_G, DWBCP, 0, DWB_OGAM_RAMA_OFFSET_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_OFFSET_R, DWBCP, 0, DWB_OGAM_RAMA_OFFSET_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION2_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION2_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION3_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION3_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION4_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION4_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION5_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION5_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION6_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION6_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION7_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION7_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION8_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION8_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION9_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION9_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION10_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION10_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION11_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION11_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION12_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION12_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION13_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION13_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION14_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION14_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION15_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION15_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION16_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION16_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION17_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION17_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION18_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION18_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION19_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION19_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION20_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION20_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION21_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION21_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION22_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION22_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION23_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION23_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION24_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION24_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION25_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION25_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION26_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION26_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION27_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION27_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION28_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION28_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION29_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION29_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION30_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION30_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION31_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION31_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION32_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION32_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION33_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMA_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMA_EXP_REGION33_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_CNTL_B, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_CNTL_B, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_CNTL_G, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_CNTL_G, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_SEGMENT_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_CNTL_R, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_CNTL_R, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_SEGMENT_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_BASE_CNTL_B, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_BASE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_SLOPE_CNTL_B, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_SLOPE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_BASE_CNTL_G, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_BASE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_SLOPE_CNTL_G, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_SLOPE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_BASE_CNTL_R, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_BASE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_START_SLOPE_CNTL_R, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_START_SLOPE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL1_B, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_BASE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL2_B, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL2_B, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_SLOPE_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL1_G, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_BASE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL2_G, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL2_G, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_SLOPE_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL1_R, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_BASE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL2_R, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_END_CNTL2_R, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION_END_SLOPE_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_OFFSET_B, DWBCP, 0, DWB_OGAM_RAMB_OFFSET_B, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_OFFSET_G, DWBCP, 0, DWB_OGAM_RAMB_OFFSET_G, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_OFFSET_R, DWBCP, 0, DWB_OGAM_RAMB_OFFSET_R, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_0_1, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION2_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION2_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION3_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_2_3, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION3_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION4_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION4_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION5_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_4_5, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION5_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION6_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION6_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION7_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_6_7, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION7_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION8_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION8_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION9_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_8_9, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION9_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION10_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION10_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION11_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_10_11, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION11_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION12_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION12_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION13_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_12_13, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION13_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION14_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION14_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION15_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_14_15, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION15_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION16_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION16_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION17_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_16_17, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION17_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION18_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION18_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION19_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_18_19, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION19_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION20_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION20_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION21_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_20_21, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION21_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION22_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION22_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION23_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_22_23, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION23_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION24_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION24_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION25_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_24_25, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION25_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION26_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION26_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION27_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_26_27, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION27_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION28_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION28_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION29_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_28_29, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION29_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION30_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION30_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION31_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_30_31, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION31_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION32_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION32_NUM_SEGMENTS, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION33_LUT_OFFSET, mask_sh),\
- SF_DWB2(DWB_OGAM_RAMB_REGION_32_33, DWBCP, 0, DWB_OGAM_RAMB_EXP_REGION33_NUM_SEGMENTS, mask_sh)
-
-
-#define DWBC_REG_FIELD_LIST_DCN3_0(type) \
- type DWB_ENABLE;\
- type DISPCLK_R_DWB_GATE_DIS;\
- type DISPCLK_G_DWB_GATE_DIS;\
- type DWB_TEST_CLK_SEL;\
- type DWBSCL_LUT_MEM_PWR_FORCE;\
- type DWBSCL_LUT_MEM_PWR_DIS;\
- type DWBSCL_LUT_MEM_PWR_STATE;\
- type DWBSCL_LB_MEM_PWR_FORCE;\
- type DWBSCL_LB_MEM_PWR_DIS;\
- type DWBSCL_LB_MEM_PWR_STATE;\
- type DWB_OGAM_LUT_MEM_PWR_FORCE;\
- type DWB_OGAM_LUT_MEM_PWR_DIS;\
- type DWB_OGAM_LUT_MEM_PWR_STATE;\
- type FC_FRAME_CAPTURE_EN;\
- type FC_FRAME_CAPTURE_RATE;\
- type FC_WINDOW_CROP_EN;\
- type FC_EYE_SELECTION;\
- type FC_STEREO_EYE_POLARITY;\
- type FC_NEW_CONTENT;\
- type FC_FI_EN;\
- type FC_FI_PHASE;\
- type FC_FRAME_CAPTURE_EN_CURRENT;\
- type FC_FIRST_PIXEL_DELAY_COUNT;\
- type FC_WINDOW_START_X;\
- type FC_WINDOW_START_Y;\
- type FC_WINDOW_WIDTH;\
- type FC_WINDOW_HEIGHT;\
- type FC_SOURCE_WIDTH;\
- type FC_SOURCE_HEIGHT;\
- type DWB_UPDATE_LOCK;\
- type DWB_UPDATE_PENDING;\
- type DWB_CRC_EN;\
- type DWB_CRC_CONT_EN;\
- type DWB_CRC_SRC_SEL;\
- type DWB_CRC_RED_MASK;\
- type DWB_CRC_GREEN_MASK;\
- type DWB_CRC_BLUE_MASK;\
- type DWB_CRC_A_MASK;\
- type DWB_CRC_SIG_RED;\
- type DWB_CRC_SIG_GREEN;\
- type DWB_CRC_SIG_BLUE;\
- type DWB_CRC_SIG_A;\
- type OUT_FORMAT;\
- type OUT_DENORM;\
- type OUT_MAX;\
- type OUT_MIN;\
- type DWB_MMHUBBUB_BACKPRESSURE_CNT_EN;\
- type DWB_MMHUBBUB_MAX_BACKPRESSURE;\
- type DWB_HOST_READ_RATE_CONTROL;\
- type DWBSCL_DATA_OVERFLOW_FLAG;\
- type DWBSCL_DATA_OVERFLOW_ACK;\
- type DWBSCL_DATA_OVERFLOW_MASK;\
- type DWBSCL_DATA_OVERFLOW_INT_STATUS;\
- type DWBSCL_DATA_OVERFLOW_INT_TYPE;\
- type DWBSCL_DATA_OVERFLOW_TYPE;\
- type DWBSCL_DATA_OVERFLOW_OUT_X_CNT;\
- type DWBSCL_DATA_OVERFLOW_OUT_Y_CNT;\
- type DWB_SOFT_RESET;\
- type DWBSCL_COEF_RAM_TAP_PAIR_IDX;\
- type DWBSCL_COEF_RAM_PHASE;\
- type DWBSCL_COEF_RAM_FILTER_TYPE;\
- type DWBSCL_COEF_RAM_SELECT_RD;\
- type DWBSCL_COEF_RAM_EVEN_TAP_COEF;\
- type DWBSCL_COEF_RAM_EVEN_TAP_COEF_EN;\
- type DWBSCL_COEF_RAM_ODD_TAP_COEF;\
- type DWBSCL_COEF_RAM_ODD_TAP_COEF_EN;\
- type DWBSCL_MODE;\
- type DWBSCL_COEF_RAM_SELECT;\
- type DWBSCL_COEF_RAM_SELECT_CURRENT;\
- type DWBSCL_H_NUM_OF_TAPS;\
- type DWBSCL_V_NUM_OF_TAPS;\
- type DWBSCL_H_SCALE_RATIO;\
- type DWBSCL_H_INIT_FRAC;\
- type DWBSCL_H_INIT_INT;\
- type DWBSCL_V_SCALE_RATIO;\
- type DWBSCL_V_INIT_FRAC;\
- type DWBSCL_V_INIT_INT;\
- type DWBSCL_BOUNDARY_MODE;\
- type DWBSCL_BLACK_COLOR_RGB;\
- type DWBSCL_DEST_WIDTH;\
- type DWBSCL_DEST_HEIGHT;\
- type DWB_HDR_MULT_COEF;\
- type DWB_GAMUT_REMAP_MODE;\
- type DWB_GAMUT_REMAP_MODE_CURRENT;\
- type DWB_GAMUT_REMAP_COEF_FORMAT;\
- type DWB_GAMUT_REMAPA_C11;\
- type DWB_GAMUT_REMAPA_C12;\
- type DWB_GAMUT_REMAPA_C13;\
- type DWB_GAMUT_REMAPA_C14;\
- type DWB_GAMUT_REMAPA_C21;\
- type DWB_GAMUT_REMAPA_C22;\
- type DWB_GAMUT_REMAPA_C23;\
- type DWB_GAMUT_REMAPA_C24;\
- type DWB_GAMUT_REMAPA_C31;\
- type DWB_GAMUT_REMAPA_C32;\
- type DWB_GAMUT_REMAPA_C33;\
- type DWB_GAMUT_REMAPA_C34;\
- type DWB_GAMUT_REMAPB_C11;\
- type DWB_GAMUT_REMAPB_C12;\
- type DWB_GAMUT_REMAPB_C13;\
- type DWB_GAMUT_REMAPB_C14;\
- type DWB_GAMUT_REMAPB_C21;\
- type DWB_GAMUT_REMAPB_C22;\
- type DWB_GAMUT_REMAPB_C23;\
- type DWB_GAMUT_REMAPB_C24;\
- type DWB_GAMUT_REMAPB_C31;\
- type DWB_GAMUT_REMAPB_C32;\
- type DWB_GAMUT_REMAPB_C33;\
- type DWB_GAMUT_REMAPB_C34;\
- type DWB_OGAM_MODE;\
- type DWB_OGAM_SELECT;\
- type DWB_OGAM_PWL_DISABLE;\
- type DWB_OGAM_MODE_CURRENT;\
- type DWB_OGAM_SELECT_CURRENT;\
- type DWB_OGAM_LUT_INDEX;\
- type DWB_OGAM_LUT_DATA;\
- type DWB_OGAM_LUT_WRITE_COLOR_MASK;\
- type DWB_OGAM_LUT_READ_COLOR_SEL;\
- type DWB_OGAM_LUT_HOST_SEL;\
- type DWB_OGAM_LUT_CONFIG_MODE;\
- type DWB_OGAM_LUT_STATUS;\
- type DWB_OGAM_RAMA_EXP_REGION_START_B;\
- type DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_B;\
- type DWB_OGAM_RAMA_EXP_REGION_START_G;\
- type DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_G;\
- type DWB_OGAM_RAMA_EXP_REGION_START_R;\
- type DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_R;\
- type DWB_OGAM_RAMA_EXP_REGION_START_BASE_B;\
- type DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_B;\
- type DWB_OGAM_RAMA_EXP_REGION_START_BASE_G;\
- type DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_G;\
- type DWB_OGAM_RAMA_EXP_REGION_START_BASE_R;\
- type DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_R;\
- type DWB_OGAM_RAMA_EXP_REGION_END_BASE_B;\
- type DWB_OGAM_RAMA_EXP_REGION_END_B;\
- type DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_B;\
- type DWB_OGAM_RAMA_EXP_REGION_END_BASE_G;\
- type DWB_OGAM_RAMA_EXP_REGION_END_G;\
- type DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_G;\
- type DWB_OGAM_RAMA_EXP_REGION_END_BASE_R;\
- type DWB_OGAM_RAMA_EXP_REGION_END_R;\
- type DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_R;\
- type DWB_OGAM_RAMA_OFFSET_B;\
- type DWB_OGAM_RAMA_OFFSET_G;\
- type DWB_OGAM_RAMA_OFFSET_R;\
- type DWB_OGAM_RAMA_EXP_REGION0_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION1_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION2_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION2_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION3_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION3_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION4_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION4_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION5_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION5_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION6_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION6_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION7_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION7_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION8_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION8_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION9_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION9_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION10_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION10_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION11_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION11_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION12_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION12_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION13_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION13_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION14_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION14_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION15_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION15_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION16_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION16_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION17_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION17_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION18_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION18_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION19_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION19_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION20_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION20_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION21_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION21_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION22_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION22_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION23_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION23_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION24_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION24_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION25_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION25_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION26_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION26_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION27_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION27_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION28_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION28_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION29_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION29_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION30_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION30_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION31_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION31_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION32_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION32_NUM_SEGMENTS;\
- type DWB_OGAM_RAMA_EXP_REGION33_LUT_OFFSET;\
- type DWB_OGAM_RAMA_EXP_REGION33_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION_START_B;\
- type DWB_OGAM_RAMB_EXP_REGION_START_SEGMENT_B;\
- type DWB_OGAM_RAMB_EXP_REGION_START_G;\
- type DWB_OGAM_RAMB_EXP_REGION_START_SEGMENT_G;\
- type DWB_OGAM_RAMB_EXP_REGION_START_R;\
- type DWB_OGAM_RAMB_EXP_REGION_START_SEGMENT_R;\
- type DWB_OGAM_RAMB_EXP_REGION_START_BASE_B;\
- type DWB_OGAM_RAMB_EXP_REGION_START_SLOPE_B;\
- type DWB_OGAM_RAMB_EXP_REGION_START_BASE_G;\
- type DWB_OGAM_RAMB_EXP_REGION_START_SLOPE_G;\
- type DWB_OGAM_RAMB_EXP_REGION_START_BASE_R;\
- type DWB_OGAM_RAMB_EXP_REGION_START_SLOPE_R;\
- type DWB_OGAM_RAMB_EXP_REGION_END_BASE_B;\
- type DWB_OGAM_RAMB_EXP_REGION_END_B;\
- type DWB_OGAM_RAMB_EXP_REGION_END_SLOPE_B;\
- type DWB_OGAM_RAMB_EXP_REGION_END_BASE_G;\
- type DWB_OGAM_RAMB_EXP_REGION_END_G;\
- type DWB_OGAM_RAMB_EXP_REGION_END_SLOPE_G;\
- type DWB_OGAM_RAMB_EXP_REGION_END_BASE_R;\
- type DWB_OGAM_RAMB_EXP_REGION_END_R;\
- type DWB_OGAM_RAMB_EXP_REGION_END_SLOPE_R;\
- type DWB_OGAM_RAMB_OFFSET_B;\
- type DWB_OGAM_RAMB_OFFSET_G;\
- type DWB_OGAM_RAMB_OFFSET_R;\
- type DWB_OGAM_RAMB_EXP_REGION0_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION0_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION1_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION1_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION2_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION2_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION3_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION3_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION4_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION4_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION5_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION5_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION6_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION6_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION7_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION7_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION8_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION8_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION9_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION9_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION10_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION10_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION11_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION11_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION12_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION12_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION13_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION13_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION14_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION14_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION15_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION15_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION16_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION16_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION17_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION17_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION18_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION18_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION19_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION19_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION20_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION20_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION21_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION21_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION22_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION22_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION23_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION23_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION24_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION24_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION25_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION25_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION26_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION26_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION27_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION27_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION28_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION28_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION29_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION29_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION30_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION30_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION31_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION31_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION32_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION32_NUM_SEGMENTS;\
- type DWB_OGAM_RAMB_EXP_REGION33_LUT_OFFSET;\
- type DWB_OGAM_RAMB_EXP_REGION33_NUM_SEGMENTS;
-
-struct dcn30_dwbc_registers {
- /* DCN3AG */
- /* DWB_TOP */
- uint32_t DWB_ENABLE_CLK_CTRL;
- uint32_t DWB_MEM_PWR_CTRL;
- uint32_t FC_MODE_CTRL;
- uint32_t FC_FLOW_CTRL;
- uint32_t FC_WINDOW_START;
- uint32_t FC_WINDOW_SIZE;
- uint32_t FC_SOURCE_SIZE;
- uint32_t DWB_UPDATE_CTRL;
- uint32_t DWB_CRC_CTRL;
- uint32_t DWB_CRC_MASK_R_G;
- uint32_t DWB_CRC_MASK_B_A;
- uint32_t DWB_CRC_VAL_R_G;
- uint32_t DWB_CRC_VAL_B_A;
- uint32_t DWB_OUT_CTRL;
- uint32_t DWB_MMHUBBUB_BACKPRESSURE_CNT_EN;
- uint32_t DWB_MMHUBBUB_BACKPRESSURE_CNT;
- uint32_t DWB_HOST_READ_CONTROL;
- uint32_t DWB_SOFT_RESET;
-
- /* DWBSCL */
- uint32_t DWBSCL_COEF_RAM_TAP_SELECT;
- uint32_t DWBSCL_COEF_RAM_TAP_DATA;
- uint32_t DWBSCL_MODE;
- uint32_t DWBSCL_TAP_CONTROL;
- uint32_t DWBSCL_HORZ_FILTER_SCALE_RATIO;
- uint32_t DWBSCL_HORZ_FILTER_INIT;
- uint32_t DWBSCL_VERT_FILTER_SCALE_RATIO;
- uint32_t DWBSCL_VERT_FILTER_INIT;
- uint32_t DWBSCL_BOUNDARY_CTRL;
- uint32_t DWBSCL_DEST_SIZE;
- uint32_t DWBSCL_OVERFLOW_STATUS;
- uint32_t DWBSCL_OVERFLOW_COUNTER;
-
- /* DWBCP */
- uint32_t DWB_HDR_MULT_COEF;
- uint32_t DWB_GAMUT_REMAP_MODE;
- uint32_t DWB_GAMUT_REMAP_COEF_FORMAT;
- uint32_t DWB_GAMUT_REMAPA_C11_C12;
- uint32_t DWB_GAMUT_REMAPA_C13_C14;
- uint32_t DWB_GAMUT_REMAPA_C21_C22;
- uint32_t DWB_GAMUT_REMAPA_C23_C24;
- uint32_t DWB_GAMUT_REMAPA_C31_C32;
- uint32_t DWB_GAMUT_REMAPA_C33_C34;
- uint32_t DWB_GAMUT_REMAPB_C11_C12;
- uint32_t DWB_GAMUT_REMAPB_C13_C14;
- uint32_t DWB_GAMUT_REMAPB_C21_C22;
- uint32_t DWB_GAMUT_REMAPB_C23_C24;
- uint32_t DWB_GAMUT_REMAPB_C31_C32;
- uint32_t DWB_GAMUT_REMAPB_C33_C34;
- uint32_t DWB_OGAM_CONTROL;
- uint32_t DWB_OGAM_LUT_INDEX;
- uint32_t DWB_OGAM_LUT_DATA;
- uint32_t DWB_OGAM_LUT_CONTROL;
- uint32_t DWB_OGAM_RAMA_START_CNTL_B;
- uint32_t DWB_OGAM_RAMA_START_CNTL_G;
- uint32_t DWB_OGAM_RAMA_START_CNTL_R;
- uint32_t DWB_OGAM_RAMA_START_BASE_CNTL_B;
- uint32_t DWB_OGAM_RAMA_START_SLOPE_CNTL_B;
- uint32_t DWB_OGAM_RAMA_START_BASE_CNTL_G;
- uint32_t DWB_OGAM_RAMA_START_SLOPE_CNTL_G;
- uint32_t DWB_OGAM_RAMA_START_BASE_CNTL_R;
- uint32_t DWB_OGAM_RAMA_START_SLOPE_CNTL_R;
- uint32_t DWB_OGAM_RAMA_END_CNTL1_B;
- uint32_t DWB_OGAM_RAMA_END_CNTL2_B;
- uint32_t DWB_OGAM_RAMA_END_CNTL1_G;
- uint32_t DWB_OGAM_RAMA_END_CNTL2_G;
- uint32_t DWB_OGAM_RAMA_END_CNTL1_R;
- uint32_t DWB_OGAM_RAMA_END_CNTL2_R;
- uint32_t DWB_OGAM_RAMA_OFFSET_B;
- uint32_t DWB_OGAM_RAMA_OFFSET_G;
- uint32_t DWB_OGAM_RAMA_OFFSET_R;
- uint32_t DWB_OGAM_RAMA_REGION_0_1;
- uint32_t DWB_OGAM_RAMA_REGION_2_3;
- uint32_t DWB_OGAM_RAMA_REGION_4_5;
- uint32_t DWB_OGAM_RAMA_REGION_6_7;
- uint32_t DWB_OGAM_RAMA_REGION_8_9;
- uint32_t DWB_OGAM_RAMA_REGION_10_11;
- uint32_t DWB_OGAM_RAMA_REGION_12_13;
- uint32_t DWB_OGAM_RAMA_REGION_14_15;
- uint32_t DWB_OGAM_RAMA_REGION_16_17;
- uint32_t DWB_OGAM_RAMA_REGION_18_19;
- uint32_t DWB_OGAM_RAMA_REGION_20_21;
- uint32_t DWB_OGAM_RAMA_REGION_22_23;
- uint32_t DWB_OGAM_RAMA_REGION_24_25;
- uint32_t DWB_OGAM_RAMA_REGION_26_27;
- uint32_t DWB_OGAM_RAMA_REGION_28_29;
- uint32_t DWB_OGAM_RAMA_REGION_30_31;
- uint32_t DWB_OGAM_RAMA_REGION_32_33;
- uint32_t DWB_OGAM_RAMB_START_CNTL_B;
- uint32_t DWB_OGAM_RAMB_START_CNTL_G;
- uint32_t DWB_OGAM_RAMB_START_CNTL_R;
- uint32_t DWB_OGAM_RAMB_START_BASE_CNTL_B;
- uint32_t DWB_OGAM_RAMB_START_SLOPE_CNTL_B;
- uint32_t DWB_OGAM_RAMB_START_BASE_CNTL_G;
- uint32_t DWB_OGAM_RAMB_START_SLOPE_CNTL_G;
- uint32_t DWB_OGAM_RAMB_START_BASE_CNTL_R;
- uint32_t DWB_OGAM_RAMB_START_SLOPE_CNTL_R;
- uint32_t DWB_OGAM_RAMB_END_CNTL1_B;
- uint32_t DWB_OGAM_RAMB_END_CNTL2_B;
- uint32_t DWB_OGAM_RAMB_END_CNTL1_G;
- uint32_t DWB_OGAM_RAMB_END_CNTL2_G;
- uint32_t DWB_OGAM_RAMB_END_CNTL1_R;
- uint32_t DWB_OGAM_RAMB_END_CNTL2_R;
- uint32_t DWB_OGAM_RAMB_OFFSET_B;
- uint32_t DWB_OGAM_RAMB_OFFSET_G;
- uint32_t DWB_OGAM_RAMB_OFFSET_R;
- uint32_t DWB_OGAM_RAMB_REGION_0_1;
- uint32_t DWB_OGAM_RAMB_REGION_2_3;
- uint32_t DWB_OGAM_RAMB_REGION_4_5;
- uint32_t DWB_OGAM_RAMB_REGION_6_7;
- uint32_t DWB_OGAM_RAMB_REGION_8_9;
- uint32_t DWB_OGAM_RAMB_REGION_10_11;
- uint32_t DWB_OGAM_RAMB_REGION_12_13;
- uint32_t DWB_OGAM_RAMB_REGION_14_15;
- uint32_t DWB_OGAM_RAMB_REGION_16_17;
- uint32_t DWB_OGAM_RAMB_REGION_18_19;
- uint32_t DWB_OGAM_RAMB_REGION_20_21;
- uint32_t DWB_OGAM_RAMB_REGION_22_23;
- uint32_t DWB_OGAM_RAMB_REGION_24_25;
- uint32_t DWB_OGAM_RAMB_REGION_26_27;
- uint32_t DWB_OGAM_RAMB_REGION_28_29;
- uint32_t DWB_OGAM_RAMB_REGION_30_31;
- uint32_t DWB_OGAM_RAMB_REGION_32_33;
-};
-
-/* Internal enums / structs */
-enum dwbscl_coef_filter_type_sel {
- DWBSCL_COEF_RAM_FILTER_TYPE_VERT_RGB = 0,
- DWBSCL_COEF_RAM_FILTER_TYPE_HORZ_RGB = 1
-};
-
-
-struct dcn30_dwbc_mask {
- DWBC_REG_FIELD_LIST_DCN3_0(uint32_t);
-};
-
-struct dcn30_dwbc_shift {
- DWBC_REG_FIELD_LIST_DCN3_0(uint8_t);
-};
-
-struct dcn30_dwbc {
- struct dwbc base;
- const struct dcn30_dwbc_registers *dwbc_regs;
- const struct dcn30_dwbc_shift *dwbc_shift;
- const struct dcn30_dwbc_mask *dwbc_mask;
-};
-
-void dcn30_dwbc_construct(struct dcn30_dwbc *dwbc30,
- struct dc_context *ctx,
- const struct dcn30_dwbc_registers *dwbc_regs,
- const struct dcn30_dwbc_shift *dwbc_shift,
- const struct dcn30_dwbc_mask *dwbc_mask,
- int inst);
-
-bool dwb3_enable(struct dwbc *dwbc, struct dc_dwb_params *params);
-
-bool dwb3_disable(struct dwbc *dwbc);
-
-bool dwb3_update(struct dwbc *dwbc, struct dc_dwb_params *params);
-
-bool dwb3_is_enabled(struct dwbc *dwbc);
-
-void dwb3_set_fc_enable(struct dwbc *dwbc, enum dwb_frame_capture_enable enable);
-
-void dwb3_set_stereo(struct dwbc *dwbc,
- struct dwb_stereo_params *stereo_params);
-
-void dwb3_set_new_content(struct dwbc *dwbc,
- bool is_new_content);
-
-void dwb3_config_fc(struct dwbc *dwbc,
- struct dc_dwb_params *params);
-
-void dwb3_set_denorm(struct dwbc *dwbc, struct dc_dwb_params *params);
-
-void dwb3_program_hdr_mult(
- struct dwbc *dwbc,
- const struct dc_dwb_params *params);
-
-void dwb3_set_gamut_remap(
- struct dwbc *dwbc,
- const struct dc_dwb_params *params);
-
-bool dwb3_ogam_set_input_transfer_func(
- struct dwbc *dwbc,
- const struct dc_transfer_func *in_transfer_func_dwb_ogam);
-
-void dwb3_set_host_read_rate_control(struct dwbc *dwbc, bool host_read_delay);
-#endif
-
-
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb_cm.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb_cm.c
deleted file mode 100644
index 03a50c32fcfe..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb_cm.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "reg_helper.h"
-#include "fixed31_32.h"
-#include "resource.h"
-#include "basics/conversion.h"
-#include "dwb.h"
-#include "dcn30_dwb.h"
-#include "dcn30_cm_common.h"
-#include "dcn10/dcn10_cm_common.h"
-
-
-#define REG(reg)\
- dwbc30->dwbc_regs->reg
-
-#define CTX \
- dwbc30->base.ctx
-
-#undef FN
-#define FN(reg_name, field_name) \
- dwbc30->dwbc_shift->field_name, dwbc30->dwbc_mask->field_name
-
-#define TO_DCN30_DWBC(dwbc_base) \
- container_of(dwbc_base, struct dcn30_dwbc, base)
-
-static void dwb3_get_reg_field_ogam(struct dcn30_dwbc *dwbc30,
- struct dcn3_xfer_func_reg *reg)
-{
- reg->shifts.field_region_start_base = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION_START_BASE_B;
- reg->masks.field_region_start_base = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION_START_BASE_B;
- reg->shifts.field_offset = dwbc30->dwbc_shift->DWB_OGAM_RAMA_OFFSET_B;
- reg->masks.field_offset = dwbc30->dwbc_mask->DWB_OGAM_RAMA_OFFSET_B;
-
- reg->shifts.exp_region0_lut_offset = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->masks.exp_region0_lut_offset = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->shifts.exp_region0_num_segments = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->masks.exp_region0_num_segments = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->shifts.exp_region1_lut_offset = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->masks.exp_region1_lut_offset = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->shifts.exp_region1_num_segments = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS;
- reg->masks.exp_region1_num_segments = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS;
-
- reg->shifts.field_region_end = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION_END_B;
- reg->masks.field_region_end = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION_END_B;
- reg->shifts.field_region_end_slope = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_B;
- reg->masks.field_region_end_slope = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION_END_SLOPE_B;
- reg->shifts.field_region_end_base = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION_END_BASE_B;
- reg->masks.field_region_end_base = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION_END_BASE_B;
- reg->shifts.field_region_linear_slope = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_B;
- reg->masks.field_region_linear_slope = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION_START_SLOPE_B;
- reg->shifts.exp_region_start = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION_START_B;
- reg->masks.exp_region_start = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION_START_B;
- reg->shifts.exp_resion_start_segment = dwbc30->dwbc_shift->DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_B;
- reg->masks.exp_resion_start_segment = dwbc30->dwbc_mask->DWB_OGAM_RAMA_EXP_REGION_START_SEGMENT_B;
-}
-
-/*program dwb ogam RAM A*/
-static void dwb3_program_ogam_luta_settings(
- struct dcn30_dwbc *dwbc30,
- const struct pwl_params *params)
-{
- struct dcn3_xfer_func_reg gam_regs;
-
- dwb3_get_reg_field_ogam(dwbc30, &gam_regs);
-
- gam_regs.start_cntl_b = REG(DWB_OGAM_RAMA_START_CNTL_B);
- gam_regs.start_cntl_g = REG(DWB_OGAM_RAMA_START_CNTL_G);
- gam_regs.start_cntl_r = REG(DWB_OGAM_RAMA_START_CNTL_R);
- gam_regs.start_base_cntl_b = REG(DWB_OGAM_RAMA_START_BASE_CNTL_B);
- gam_regs.start_base_cntl_g = REG(DWB_OGAM_RAMA_START_BASE_CNTL_G);
- gam_regs.start_base_cntl_r = REG(DWB_OGAM_RAMA_START_BASE_CNTL_R);
- gam_regs.start_slope_cntl_b = REG(DWB_OGAM_RAMA_START_SLOPE_CNTL_B);
- gam_regs.start_slope_cntl_g = REG(DWB_OGAM_RAMA_START_SLOPE_CNTL_G);
- gam_regs.start_slope_cntl_r = REG(DWB_OGAM_RAMA_START_SLOPE_CNTL_R);
- gam_regs.start_end_cntl1_b = REG(DWB_OGAM_RAMA_END_CNTL1_B);
- gam_regs.start_end_cntl2_b = REG(DWB_OGAM_RAMA_END_CNTL2_B);
- gam_regs.start_end_cntl1_g = REG(DWB_OGAM_RAMA_END_CNTL1_G);
- gam_regs.start_end_cntl2_g = REG(DWB_OGAM_RAMA_END_CNTL2_G);
- gam_regs.start_end_cntl1_r = REG(DWB_OGAM_RAMA_END_CNTL1_R);
- gam_regs.start_end_cntl2_r = REG(DWB_OGAM_RAMA_END_CNTL2_R);
- gam_regs.offset_b = REG(DWB_OGAM_RAMA_OFFSET_B);
- gam_regs.offset_g = REG(DWB_OGAM_RAMA_OFFSET_G);
- gam_regs.offset_r = REG(DWB_OGAM_RAMA_OFFSET_R);
- gam_regs.region_start = REG(DWB_OGAM_RAMA_REGION_0_1);
- gam_regs.region_end = REG(DWB_OGAM_RAMA_REGION_32_33);
- /*todo*/
- cm_helper_program_gamcor_xfer_func(dwbc30->base.ctx, params, &gam_regs);
-}
-
-/*program dwb ogam RAM B*/
-static void dwb3_program_ogam_lutb_settings(
- struct dcn30_dwbc *dwbc30,
- const struct pwl_params *params)
-{
- struct dcn3_xfer_func_reg gam_regs;
-
- dwb3_get_reg_field_ogam(dwbc30, &gam_regs);
-
- gam_regs.start_cntl_b = REG(DWB_OGAM_RAMB_START_CNTL_B);
- gam_regs.start_cntl_g = REG(DWB_OGAM_RAMB_START_CNTL_G);
- gam_regs.start_cntl_r = REG(DWB_OGAM_RAMB_START_CNTL_R);
- gam_regs.start_base_cntl_b = REG(DWB_OGAM_RAMB_START_BASE_CNTL_B);
- gam_regs.start_base_cntl_g = REG(DWB_OGAM_RAMB_START_BASE_CNTL_G);
- gam_regs.start_base_cntl_r = REG(DWB_OGAM_RAMB_START_BASE_CNTL_R);
- gam_regs.start_slope_cntl_b = REG(DWB_OGAM_RAMB_START_SLOPE_CNTL_B);
- gam_regs.start_slope_cntl_g = REG(DWB_OGAM_RAMB_START_SLOPE_CNTL_G);
- gam_regs.start_slope_cntl_r = REG(DWB_OGAM_RAMB_START_SLOPE_CNTL_R);
- gam_regs.start_end_cntl1_b = REG(DWB_OGAM_RAMB_END_CNTL1_B);
- gam_regs.start_end_cntl2_b = REG(DWB_OGAM_RAMB_END_CNTL2_B);
- gam_regs.start_end_cntl1_g = REG(DWB_OGAM_RAMB_END_CNTL1_G);
- gam_regs.start_end_cntl2_g = REG(DWB_OGAM_RAMB_END_CNTL2_G);
- gam_regs.start_end_cntl1_r = REG(DWB_OGAM_RAMB_END_CNTL1_R);
- gam_regs.start_end_cntl2_r = REG(DWB_OGAM_RAMB_END_CNTL2_R);
- gam_regs.offset_b = REG(DWB_OGAM_RAMB_OFFSET_B);
- gam_regs.offset_g = REG(DWB_OGAM_RAMB_OFFSET_G);
- gam_regs.offset_r = REG(DWB_OGAM_RAMB_OFFSET_R);
- gam_regs.region_start = REG(DWB_OGAM_RAMB_REGION_0_1);
- gam_regs.region_end = REG(DWB_OGAM_RAMB_REGION_32_33);
-
- cm_helper_program_gamcor_xfer_func(dwbc30->base.ctx, params, &gam_regs);
-}
-
-static enum dc_lut_mode dwb3_get_ogam_current(
- struct dcn30_dwbc *dwbc30)
-{
- enum dc_lut_mode mode;
- uint32_t state_mode;
- uint32_t ram_select;
-
- REG_GET_2(DWB_OGAM_CONTROL,
- DWB_OGAM_MODE_CURRENT, &state_mode,
- DWB_OGAM_SELECT_CURRENT, &ram_select);
-
- if (state_mode == 0) {
- mode = LUT_BYPASS;
- } else if (state_mode == 2) {
- if (ram_select == 0)
- mode = LUT_RAM_A;
- else if (ram_select == 1)
- mode = LUT_RAM_B;
- else
- mode = LUT_BYPASS;
- } else {
- // Reserved value
- mode = LUT_BYPASS;
- BREAK_TO_DEBUGGER();
- return mode;
- }
- return mode;
-}
-
-static void dwb3_configure_ogam_lut(
- struct dcn30_dwbc *dwbc30,
- bool is_ram_a)
-{
- REG_UPDATE_2(DWB_OGAM_LUT_CONTROL,
- DWB_OGAM_LUT_WRITE_COLOR_MASK, 7,
- DWB_OGAM_LUT_HOST_SEL, (is_ram_a == true) ? 0 : 1);
-
- REG_SET(DWB_OGAM_LUT_INDEX, 0, DWB_OGAM_LUT_INDEX, 0);
-}
-
-static void dwb3_program_ogam_pwl(struct dcn30_dwbc *dwbc30,
- const struct pwl_result_data *rgb,
- uint32_t num)
-{
- uint32_t i;
-
- uint32_t last_base_value_red = rgb[num-1].red_reg + rgb[num-1].delta_red_reg;
- uint32_t last_base_value_green = rgb[num-1].green_reg + rgb[num-1].delta_green_reg;
- uint32_t last_base_value_blue = rgb[num-1].blue_reg + rgb[num-1].delta_blue_reg;
-
- if (is_rgb_equal(rgb, num)) {
- for (i = 0 ; i < num; i++)
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, rgb[i].red_reg);
-
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, last_base_value_red);
-
- } else {
-
- REG_UPDATE(DWB_OGAM_LUT_CONTROL,
- DWB_OGAM_LUT_WRITE_COLOR_MASK, 4);
-
- for (i = 0 ; i < num; i++)
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, rgb[i].red_reg);
-
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, last_base_value_red);
-
- REG_SET(DWB_OGAM_LUT_INDEX, 0, DWB_OGAM_LUT_INDEX, 0);
-
- REG_UPDATE(DWB_OGAM_LUT_CONTROL,
- DWB_OGAM_LUT_WRITE_COLOR_MASK, 2);
-
- for (i = 0 ; i < num; i++)
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, rgb[i].green_reg);
-
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, last_base_value_green);
-
- REG_SET(DWB_OGAM_LUT_INDEX, 0, DWB_OGAM_LUT_INDEX, 0);
-
- REG_UPDATE(DWB_OGAM_LUT_CONTROL,
- DWB_OGAM_LUT_WRITE_COLOR_MASK, 1);
-
- for (i = 0 ; i < num; i++)
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, rgb[i].blue_reg);
-
- REG_SET(DWB_OGAM_LUT_DATA, 0, DWB_OGAM_LUT_DATA, last_base_value_blue);
- }
-}
-
-static bool dwb3_program_ogam_lut(
- struct dcn30_dwbc *dwbc30,
- const struct pwl_params *params)
-{
- enum dc_lut_mode current_mode;
- enum dc_lut_mode next_mode;
-
- if (params == NULL) {
- REG_SET(DWB_OGAM_CONTROL, 0, DWB_OGAM_MODE, 0);
- return false;
- }
-
- if (params->hw_points_num == 0)
- return false;
-
- REG_SET(DWB_OGAM_CONTROL, 0, DWB_OGAM_MODE, 2);
-
- current_mode = dwb3_get_ogam_current(dwbc30);
- if (current_mode == LUT_BYPASS || current_mode == LUT_RAM_A)
- next_mode = LUT_RAM_B;
- else
- next_mode = LUT_RAM_A;
-
- dwb3_configure_ogam_lut(dwbc30, next_mode == LUT_RAM_A);
-
- if (next_mode == LUT_RAM_A)
- dwb3_program_ogam_luta_settings(dwbc30, params);
- else
- dwb3_program_ogam_lutb_settings(dwbc30, params);
-
- dwb3_program_ogam_pwl(
- dwbc30, params->rgb_resulted, params->hw_points_num);
-
- REG_UPDATE(DWB_OGAM_CONTROL, DWB_OGAM_SELECT, next_mode == LUT_RAM_A ? 0 : 1);
-
- return true;
-}
-
-bool dwb3_ogam_set_input_transfer_func(
- struct dwbc *dwbc,
- const struct dc_transfer_func *in_transfer_func_dwb_ogam)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
- bool result = false;
- struct pwl_params *dwb_ogam_lut = NULL;
-
- if (in_transfer_func_dwb_ogam == NULL)
- return result;
-
- dwb_ogam_lut = kzalloc(sizeof(*dwb_ogam_lut), GFP_KERNEL);
-
- if (dwb_ogam_lut) {
- cm_helper_translate_curve_to_hw_format(dwbc->ctx,
- in_transfer_func_dwb_ogam,
- dwb_ogam_lut, false);
-
- result = dwb3_program_ogam_lut(
- dwbc30,
- dwb_ogam_lut);
- kfree(dwb_ogam_lut);
- dwb_ogam_lut = NULL;
- }
-
- return result;
-}
-
-static void dwb3_program_gamut_remap(
- struct dwbc *dwbc,
- const uint16_t *regval,
- enum cm_gamut_coef_format coef_format,
- enum cm_gamut_remap_select select)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- struct color_matrices_reg gam_regs;
-
- if (regval == NULL || select == CM_GAMUT_REMAP_MODE_BYPASS) {
- REG_SET(DWB_GAMUT_REMAP_MODE, 0,
- DWB_GAMUT_REMAP_MODE, 0);
- return;
- }
-
- REG_UPDATE(DWB_GAMUT_REMAP_COEF_FORMAT, DWB_GAMUT_REMAP_COEF_FORMAT, coef_format);
-
- gam_regs.shifts.csc_c11 = dwbc30->dwbc_shift->DWB_GAMUT_REMAPA_C11;
- gam_regs.masks.csc_c11 = dwbc30->dwbc_mask->DWB_GAMUT_REMAPA_C11;
- gam_regs.shifts.csc_c12 = dwbc30->dwbc_shift->DWB_GAMUT_REMAPA_C12;
- gam_regs.masks.csc_c12 = dwbc30->dwbc_mask->DWB_GAMUT_REMAPA_C12;
-
- switch (select) {
- case CM_GAMUT_REMAP_MODE_RAMA_COEFF:
- gam_regs.csc_c11_c12 = REG(DWB_GAMUT_REMAPA_C11_C12);
- gam_regs.csc_c33_c34 = REG(DWB_GAMUT_REMAPA_C33_C34);
-
- cm_helper_program_color_matrices(
- dwbc30->base.ctx,
- regval,
- &gam_regs);
- break;
- case CM_GAMUT_REMAP_MODE_RAMB_COEFF:
- gam_regs.csc_c11_c12 = REG(DWB_GAMUT_REMAPB_C11_C12);
- gam_regs.csc_c33_c34 = REG(DWB_GAMUT_REMAPB_C33_C34);
-
- cm_helper_program_color_matrices(
- dwbc30->base.ctx,
- regval,
- &gam_regs);
- break;
- case CM_GAMUT_REMAP_MODE_RESERVED:
- /* should never happen, bug */
- BREAK_TO_DEBUGGER();
- return;
- default:
- break;
- }
-
- REG_SET(DWB_GAMUT_REMAP_MODE, 0,
- DWB_GAMUT_REMAP_MODE, select);
-
-}
-
-void dwb3_set_gamut_remap(
- struct dwbc *dwbc,
- const struct dc_dwb_params *params)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
- struct cm_grph_csc_adjustment adjust = params->csc_params;
- int i = 0;
-
- if (adjust.gamut_adjust_type != CM_GAMUT_ADJUST_TYPE_SW) {
- /* Bypass if type is bypass or hw */
- dwb3_program_gamut_remap(dwbc, NULL, adjust.gamut_coef_format, CM_GAMUT_REMAP_MODE_BYPASS);
- } else {
- struct fixed31_32 arr_matrix[12];
- uint16_t arr_reg_val[12];
- unsigned int current_mode;
-
- for (i = 0; i < 12; i++)
- arr_matrix[i] = adjust.temperature_matrix[i];
-
- convert_float_matrix(arr_reg_val, arr_matrix, 12);
-
- REG_GET(DWB_GAMUT_REMAP_MODE, DWB_GAMUT_REMAP_MODE_CURRENT, &current_mode);
-
- if (current_mode == CM_GAMUT_REMAP_MODE_RAMA_COEFF) {
- dwb3_program_gamut_remap(dwbc, arr_reg_val,
- adjust.gamut_coef_format, CM_GAMUT_REMAP_MODE_RAMB_COEFF);
- } else {
- dwb3_program_gamut_remap(dwbc, arr_reg_val,
- adjust.gamut_coef_format, CM_GAMUT_REMAP_MODE_RAMA_COEFF);
- }
- }
-}
-
-void dwb3_program_hdr_mult(
- struct dwbc *dwbc,
- const struct dc_dwb_params *params)
-{
- struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
-
- REG_UPDATE(DWB_HDR_MULT_COEF, DWB_HDR_MULT_COEF, params->hdr_mult);
-}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c
deleted file mode 100644
index 152c9c5733f1..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-
-#include "dm_services.h"
-#include "reg_helper.h"
-#include "dcn30_hubbub.h"
-
-
-#define CTX \
- hubbub1->base.ctx
-#define DC_LOGGER \
- hubbub1->base.ctx->logger
-#define REG(reg)\
- hubbub1->regs->reg
-
-#undef FN
-#define FN(reg_name, field_name) \
- hubbub1->shifts->field_name, hubbub1->masks->field_name
-
-#ifdef NUM_VMID
-#undef NUM_VMID
-#endif
-#define NUM_VMID 16
-
-
-static uint32_t convert_and_clamp(
- uint32_t wm_ns,
- uint32_t refclk_mhz,
- uint32_t clamp_value)
-{
- uint32_t ret_val = 0;
- ret_val = wm_ns * refclk_mhz;
- ret_val /= 1000;
-
- if (ret_val > clamp_value)
- ret_val = clamp_value;
-
- return ret_val;
-}
-
-int hubbub3_init_dchub_sys_ctx(struct hubbub *hubbub,
- struct dcn_hubbub_phys_addr_config *pa_config)
-{
- struct dcn20_hubbub *hubbub1 = TO_DCN20_HUBBUB(hubbub);
- struct dcn_vmid_page_table_config phys_config;
-
- REG_SET(DCN_VM_FB_LOCATION_BASE, 0,
- FB_BASE, pa_config->system_aperture.fb_base >> 24);
- REG_SET(DCN_VM_FB_LOCATION_TOP, 0,
- FB_TOP, pa_config->system_aperture.fb_top >> 24);
- REG_SET(DCN_VM_FB_OFFSET, 0,
- FB_OFFSET, pa_config->system_aperture.fb_offset >> 24);
- REG_SET(DCN_VM_AGP_BOT, 0,
- AGP_BOT, pa_config->system_aperture.agp_bot >> 24);
- REG_SET(DCN_VM_AGP_TOP, 0,
- AGP_TOP, pa_config->system_aperture.agp_top >> 24);
- REG_SET(DCN_VM_AGP_BASE, 0,
- AGP_BASE, pa_config->system_aperture.agp_base >> 24);
-
- if (pa_config->gart_config.page_table_start_addr != pa_config->gart_config.page_table_end_addr) {
- phys_config.page_table_start_addr = pa_config->gart_config.page_table_start_addr >> 12;
- phys_config.page_table_end_addr = pa_config->gart_config.page_table_end_addr >> 12;
- phys_config.page_table_base_addr = pa_config->gart_config.page_table_base_addr;
- phys_config.depth = 0;
- phys_config.block_size = 0;
- // Init VMID 0 based on PA config
- dcn20_vmid_setup(&hubbub1->vmid[0], &phys_config);
- }
-
- return NUM_VMID;
-}
-
-bool hubbub3_program_watermarks(
- struct hubbub *hubbub,
- struct dcn_watermark_set *watermarks,
- unsigned int refclk_mhz,
- bool safe_to_lower)
-{
- struct dcn20_hubbub *hubbub1 = TO_DCN20_HUBBUB(hubbub);
- bool wm_pending = false;
-
- if (hubbub21_program_urgent_watermarks(hubbub, watermarks, refclk_mhz, safe_to_lower))
- wm_pending = true;
-
- if (hubbub21_program_stutter_watermarks(hubbub, watermarks, refclk_mhz, safe_to_lower))
- wm_pending = true;
-
- if (hubbub21_program_pstate_watermarks(hubbub, watermarks, refclk_mhz, safe_to_lower))
- wm_pending = true;
-
- /*
- * The DCHub arbiter has a mechanism to dynamically rate limit the DCHub request stream to the fabric.
- * If the memory controller is fully utilized and the DCHub requestors are
- * well ahead of their amortized schedule, then it is safe to prevent the next winner
- * from being committed and sent to the fabric.
- * The utilization of the memory controller is approximated by ensuring that
- * the number of outstanding requests is greater than a threshold specified
- * by the ARB_MIN_REQ_OUTSTANDING. To determine that the DCHub requestors are well ahead of the amortized schedule,
- * the slack of the next winner is compared with the ARB_SAT_LEVEL in DLG RefClk cycles.
- *
- * TODO: Revisit request limit after figure out right number. request limit for Renoir isn't decided yet, set maximum value (0x1FF)
- * to turn off it for now.
- */
- REG_SET(DCHUBBUB_ARB_SAT_LEVEL, 0,
- DCHUBBUB_ARB_SAT_LEVEL, 60 * refclk_mhz);
- REG_UPDATE(DCHUBBUB_ARB_DF_REQ_OUTSTAND,
- DCHUBBUB_ARB_MIN_REQ_OUTSTAND, 0x1FF);
-
- hubbub1_allow_self_refresh_control(hubbub, !hubbub->ctx->dc->debug.disable_stutter);
-
- return wm_pending;
-}
-
-bool hubbub3_dcc_support_swizzle(
- enum swizzle_mode_values swizzle,
- unsigned int bytes_per_element,
- enum segment_order *segment_order_horz,
- enum segment_order *segment_order_vert)
-{
- bool standard_swizzle = false;
- bool display_swizzle = false;
- bool render_swizzle = false;
-
- switch (swizzle) {
- case DC_SW_4KB_S:
- case DC_SW_64KB_S:
- case DC_SW_VAR_S:
- case DC_SW_4KB_S_X:
- case DC_SW_64KB_S_X:
- case DC_SW_VAR_S_X:
- standard_swizzle = true;
- break;
- case DC_SW_4KB_R:
- case DC_SW_64KB_R:
- case DC_SW_VAR_R:
- case DC_SW_4KB_R_X:
- case DC_SW_64KB_R_X:
- case DC_SW_VAR_R_X:
- render_swizzle = true;
- break;
- case DC_SW_4KB_D:
- case DC_SW_64KB_D:
- case DC_SW_VAR_D:
- case DC_SW_4KB_D_X:
- case DC_SW_64KB_D_X:
- case DC_SW_VAR_D_X:
- display_swizzle = true;
- break;
- default:
- break;
- }
-
- if (standard_swizzle) {
- if (bytes_per_element == 1) {
- *segment_order_horz = segment_order__contiguous;
- *segment_order_vert = segment_order__na;
- return true;
- }
- if (bytes_per_element == 2) {
- *segment_order_horz = segment_order__non_contiguous;
- *segment_order_vert = segment_order__contiguous;
- return true;
- }
- if (bytes_per_element == 4) {
- *segment_order_horz = segment_order__non_contiguous;
- *segment_order_vert = segment_order__contiguous;
- return true;
- }
- if (bytes_per_element == 8) {
- *segment_order_horz = segment_order__na;
- *segment_order_vert = segment_order__contiguous;
- return true;
- }
- }
- if (render_swizzle) {
- if (bytes_per_element == 1) {
- *segment_order_horz = segment_order__contiguous;
- *segment_order_vert = segment_order__na;
- return true;
- }
- if (bytes_per_element == 2) {
- *segment_order_horz = segment_order__non_contiguous;
- *segment_order_vert = segment_order__contiguous;
- return true;
- }
- if (bytes_per_element == 4) {
- *segment_order_horz = segment_order__contiguous;
- *segment_order_vert = segment_order__non_contiguous;
- return true;
- }
- if (bytes_per_element == 8) {
- *segment_order_horz = segment_order__contiguous;
- *segment_order_vert = segment_order__non_contiguous;
- return true;
- }
- }
- if (display_swizzle && bytes_per_element == 8) {
- *segment_order_horz = segment_order__contiguous;
- *segment_order_vert = segment_order__non_contiguous;
- return true;
- }
-
- return false;
-}
-
-static void hubbub3_get_blk256_size(unsigned int *blk256_width, unsigned int *blk256_height,
- unsigned int bytes_per_element)
-{
- /* copied from DML. might want to refactor DML to leverage from DML */
- /* DML : get_blk256_size */
- if (bytes_per_element == 1) {
- *blk256_width = 16;
- *blk256_height = 16;
- } else if (bytes_per_element == 2) {
- *blk256_width = 16;
- *blk256_height = 8;
- } else if (bytes_per_element == 4) {
- *blk256_width = 8;
- *blk256_height = 8;
- } else if (bytes_per_element == 8) {
- *blk256_width = 8;
- *blk256_height = 4;
- }
-}
-
-static void hubbub3_det_request_size(
- unsigned int detile_buf_size,
- unsigned int height,
- unsigned int width,
- unsigned int bpe,
- bool *req128_horz_wc,
- bool *req128_vert_wc)
-{
- unsigned int blk256_height = 0;
- unsigned int blk256_width = 0;
- unsigned int swath_bytes_horz_wc, swath_bytes_vert_wc;
-
- hubbub3_get_blk256_size(&blk256_width, &blk256_height, bpe);
-
- swath_bytes_horz_wc = width * blk256_height * bpe;
- swath_bytes_vert_wc = height * blk256_width * bpe;
-
- *req128_horz_wc = (2 * swath_bytes_horz_wc <= detile_buf_size) ?
- false : /* full 256B request */
- true; /* half 128b request */
-
- *req128_vert_wc = (2 * swath_bytes_vert_wc <= detile_buf_size) ?
- false : /* full 256B request */
- true; /* half 128b request */
-}
-
-bool hubbub3_get_dcc_compression_cap(struct hubbub *hubbub,
- const struct dc_dcc_surface_param *input,
- struct dc_surface_dcc_cap *output)
-{
- struct dc *dc = hubbub->ctx->dc;
- /* implement section 1.6.2.1 of DCN1_Programming_Guide.docx */
- enum dcc_control dcc_control;
- unsigned int bpe;
- enum segment_order segment_order_horz, segment_order_vert;
- bool req128_horz_wc, req128_vert_wc;
-
- memset(output, 0, sizeof(*output));
-
- if (dc->debug.disable_dcc == DCC_DISABLE)
- return false;
-
- if (!hubbub->funcs->dcc_support_pixel_format(input->format,
- &bpe))
- return false;
-
- if (!hubbub->funcs->dcc_support_swizzle(input->swizzle_mode, bpe,
- &segment_order_horz, &segment_order_vert))
- return false;
-
- hubbub3_det_request_size(TO_DCN20_HUBBUB(hubbub)->detile_buf_size,
- input->surface_size.height, input->surface_size.width,
- bpe, &req128_horz_wc, &req128_vert_wc);
-
- if (!req128_horz_wc && !req128_vert_wc) {
- dcc_control = dcc_control__256_256_xxx;
- } else if (input->scan == SCAN_DIRECTION_HORIZONTAL) {
- if (!req128_horz_wc)
- dcc_control = dcc_control__256_256_xxx;
- else if (segment_order_horz == segment_order__contiguous)
- dcc_control = dcc_control__128_128_xxx;
- else
- dcc_control = dcc_control__256_64_64;
- } else if (input->scan == SCAN_DIRECTION_VERTICAL) {
- if (!req128_vert_wc)
- dcc_control = dcc_control__256_256_xxx;
- else if (segment_order_vert == segment_order__contiguous)
- dcc_control = dcc_control__128_128_xxx;
- else
- dcc_control = dcc_control__256_64_64;
- } else {
- if ((req128_horz_wc &&
- segment_order_horz == segment_order__non_contiguous) ||
- (req128_vert_wc &&
- segment_order_vert == segment_order__non_contiguous))
- /* access_dir not known, must use most constraining */
- dcc_control = dcc_control__256_64_64;
- else
- /* reg128 is true for either horz and vert
- * but segment_order is contiguous
- */
- dcc_control = dcc_control__128_128_xxx;
- }
-
- /* Exception for 64KB_R_X */
- if ((bpe == 2) && (input->swizzle_mode == DC_SW_64KB_R_X))
- dcc_control = dcc_control__128_128_xxx;
-
- if (dc->debug.disable_dcc == DCC_HALF_REQ_DISALBE &&
- dcc_control != dcc_control__256_256_xxx)
- return false;
-
- switch (dcc_control) {
- case dcc_control__256_256_xxx:
- output->grph.rgb.max_uncompressed_blk_size = 256;
- output->grph.rgb.max_compressed_blk_size = 256;
- output->grph.rgb.independent_64b_blks = false;
- output->grph.rgb.dcc_controls.dcc_256_256_unconstrained = 1;
- output->grph.rgb.dcc_controls.dcc_256_128_128 = 1;
- break;
- case dcc_control__128_128_xxx:
- output->grph.rgb.max_uncompressed_blk_size = 128;
- output->grph.rgb.max_compressed_blk_size = 128;
- output->grph.rgb.independent_64b_blks = false;
- output->grph.rgb.dcc_controls.dcc_128_128_uncontrained = 1;
- output->grph.rgb.dcc_controls.dcc_256_128_128 = 1;
- break;
- case dcc_control__256_64_64:
- output->grph.rgb.max_uncompressed_blk_size = 256;
- output->grph.rgb.max_compressed_blk_size = 64;
- output->grph.rgb.independent_64b_blks = true;
- output->grph.rgb.dcc_controls.dcc_256_64_64 = 1;
- break;
- case dcc_control__256_128_128:
- output->grph.rgb.max_uncompressed_blk_size = 256;
- output->grph.rgb.max_compressed_blk_size = 128;
- output->grph.rgb.independent_64b_blks = false;
- output->grph.rgb.dcc_controls.dcc_256_128_128 = 1;
- break;
- }
- output->capable = true;
- output->const_color_support = true;
-
- return true;
-}
-
-void hubbub3_force_wm_propagate_to_pipes(struct hubbub *hubbub)
-{
- struct dcn20_hubbub *hubbub1 = TO_DCN20_HUBBUB(hubbub);
- uint32_t refclk_mhz = hubbub->ctx->dc->res_pool->ref_clocks.dchub_ref_clock_inKhz / 1000;
- uint32_t prog_wm_value = convert_and_clamp(hubbub1->watermarks.a.urgent_ns,
- refclk_mhz, 0x1fffff);
-
- REG_SET_2(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A, 0,
- DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A, prog_wm_value,
- DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_A, prog_wm_value);
-}
-
-void hubbub3_force_pstate_change_control(struct hubbub *hubbub,
- bool force, bool allow)
-{
- struct dcn20_hubbub *hubbub1 = TO_DCN20_HUBBUB(hubbub);
-
- REG_UPDATE_2(DCHUBBUB_ARB_DRAM_STATE_CNTL,
- DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_VALUE, allow,
- DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_ENABLE, force);
-}
-
-/* Copy values from WM set A to all other sets */
-void hubbub3_init_watermarks(struct hubbub *hubbub)
-{
- struct dcn20_hubbub *hubbub1 = TO_DCN20_HUBBUB(hubbub);
- uint32_t reg;
-
- reg = REG_READ(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A);
- REG_WRITE(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_B, reg);
- REG_WRITE(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_C, reg);
- REG_WRITE(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_D, reg);
-
- reg = REG_READ(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_A);
- REG_WRITE(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_B, reg);
- REG_WRITE(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_C, reg);
- REG_WRITE(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_D, reg);
-
- reg = REG_READ(DCHUBBUB_ARB_FRAC_URG_BW_NOM_A);
- REG_WRITE(DCHUBBUB_ARB_FRAC_URG_BW_NOM_B, reg);
- REG_WRITE(DCHUBBUB_ARB_FRAC_URG_BW_NOM_C, reg);
- REG_WRITE(DCHUBBUB_ARB_FRAC_URG_BW_NOM_D, reg);
-
- reg = REG_READ(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_A);
- REG_WRITE(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_B, reg);
- REG_WRITE(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_C, reg);
- REG_WRITE(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_D, reg);
-
- reg = REG_READ(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_B, reg);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_C, reg);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_D, reg);
-
- reg = REG_READ(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_A);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_B, reg);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_C, reg);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_D, reg);
-
- reg = REG_READ(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B, reg);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C, reg);
- REG_WRITE(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D, reg);
-}
-
-static const struct hubbub_funcs hubbub30_funcs = {
- .update_dchub = hubbub2_update_dchub,
- .init_dchub_sys_ctx = hubbub3_init_dchub_sys_ctx,
- .init_vm_ctx = hubbub2_init_vm_ctx,
- .dcc_support_swizzle = hubbub3_dcc_support_swizzle,
- .dcc_support_pixel_format = hubbub2_dcc_support_pixel_format,
- .get_dcc_compression_cap = hubbub3_get_dcc_compression_cap,
- .wm_read_state = hubbub21_wm_read_state,
- .get_dchub_ref_freq = hubbub2_get_dchub_ref_freq,
- .program_watermarks = hubbub3_program_watermarks,
- .allow_self_refresh_control = hubbub1_allow_self_refresh_control,
- .is_allow_self_refresh_enabled = hubbub1_is_allow_self_refresh_enabled,
- .verify_allow_pstate_change_high = hubbub1_verify_allow_pstate_change_high,
- .force_wm_propagate_to_pipes = hubbub3_force_wm_propagate_to_pipes,
- .force_pstate_change_control = hubbub3_force_pstate_change_control,
- .init_watermarks = hubbub3_init_watermarks,
- .hubbub_read_state = hubbub2_read_state,
-};
-
-void hubbub3_construct(struct dcn20_hubbub *hubbub3,
- struct dc_context *ctx,
- const struct dcn_hubbub_registers *hubbub_regs,
- const struct dcn_hubbub_shift *hubbub_shift,
- const struct dcn_hubbub_mask *hubbub_mask)
-{
- hubbub3->base.ctx = ctx;
- hubbub3->base.funcs = &hubbub30_funcs;
- hubbub3->regs = hubbub_regs;
- hubbub3->shifts = hubbub_shift;
- hubbub3->masks = hubbub_mask;
-
- hubbub3->debug_test_index_pstate = 0xB;
- hubbub3->detile_buf_size = 184 * 1024; /* 184KB for DCN3 */
-}
-
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.h
deleted file mode 100644
index 7b597908b937..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DC_HUBBUB_DCN30_H__
-#define __DC_HUBBUB_DCN30_H__
-
-#include "dcn21/dcn21_hubbub.h"
-
-#define HUBBUB_REG_LIST_DCN3AG(id)\
- HUBBUB_REG_LIST_DCN21()
-
-#define HUBBUB_MASK_SH_LIST_DCN3AG(mask_sh)\
- HUBBUB_MASK_SH_LIST_DCN21(mask_sh)
-
-#define HUBBUB_REG_LIST_DCN30(id)\
- HUBBUB_REG_LIST_DCN20_COMMON(), \
- HUBBUB_SR_WATERMARK_REG_LIST(), \
- SR(DCHUBBUB_ARB_FRAC_URG_BW_NOM_A),\
- SR(DCHUBBUB_ARB_FRAC_URG_BW_NOM_B),\
- SR(DCHUBBUB_ARB_FRAC_URG_BW_NOM_C),\
- SR(DCHUBBUB_ARB_FRAC_URG_BW_NOM_D),\
- SR(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_A),\
- SR(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_B),\
- SR(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_C),\
- SR(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_D),\
- SR(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_A),\
- SR(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_B),\
- SR(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_C),\
- SR(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_D)
-
-#define HUBBUB_MASK_SH_LIST_DCN30(mask_sh)\
- HUBBUB_MASK_SH_LIST_DCN_COMMON(mask_sh), \
- HUBBUB_MASK_SH_LIST_STUTTER(mask_sh), \
- HUBBUB_SF(DCHUBBUB_GLOBAL_TIMER_CNTL, DCHUBBUB_GLOBAL_TIMER_REFDIV, mask_sh), \
- HUBBUB_SF(DCN_VM_FB_LOCATION_BASE, FB_BASE, mask_sh), \
- HUBBUB_SF(DCN_VM_FB_LOCATION_TOP, FB_TOP, mask_sh), \
- HUBBUB_SF(DCN_VM_FB_OFFSET, FB_OFFSET, mask_sh), \
- HUBBUB_SF(DCN_VM_AGP_BOT, AGP_BOT, mask_sh), \
- HUBBUB_SF(DCN_VM_AGP_TOP, AGP_TOP, mask_sh), \
- HUBBUB_SF(DCN_VM_AGP_BASE, AGP_BASE, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_A, DCHUBBUB_ARB_FRAC_URG_BW_FLIP_A, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_B, DCHUBBUB_ARB_FRAC_URG_BW_FLIP_B, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_C, DCHUBBUB_ARB_FRAC_URG_BW_FLIP_C, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_FLIP_D, DCHUBBUB_ARB_FRAC_URG_BW_FLIP_D, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_NOM_A, DCHUBBUB_ARB_FRAC_URG_BW_NOM_A, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_NOM_B, DCHUBBUB_ARB_FRAC_URG_BW_NOM_B, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_NOM_C, DCHUBBUB_ARB_FRAC_URG_BW_NOM_C, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_FRAC_URG_BW_NOM_D, DCHUBBUB_ARB_FRAC_URG_BW_NOM_D, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_A, DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_A, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_B, DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_B, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_C, DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_C, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_D, DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_D, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A, DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_A, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_B, DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_B, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_C, DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_C, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_D, DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_D, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_A, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_B, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_B, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_C, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_C, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_D, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_D, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_A, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_A, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_B, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_B, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_C, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_C, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_D, DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_D, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A, DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B, DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C, DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C, mask_sh), \
- HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D, DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_ADDR_MSB, DCN_VM_FAULT_ADDR_MSB, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_ADDR_LSB, DCN_VM_FAULT_ADDR_LSB, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_CNTL, DCN_VM_ERROR_STATUS_CLEAR, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_CNTL, DCN_VM_ERROR_STATUS_MODE, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_CNTL, DCN_VM_ERROR_INTERRUPT_ENABLE, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_CNTL, DCN_VM_RANGE_FAULT_DISABLE, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_CNTL, DCN_VM_PRQ_FAULT_DISABLE, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_STATUS, DCN_VM_ERROR_STATUS, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_STATUS, DCN_VM_ERROR_VMID, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_STATUS, DCN_VM_ERROR_TABLE_LEVEL, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_STATUS, DCN_VM_ERROR_PIPE, mask_sh), \
- HUBBUB_SF(DCN_VM_FAULT_STATUS, DCN_VM_ERROR_INTERRUPT_STATUS, mask_sh)
-
-void hubbub3_construct(struct dcn20_hubbub *hubbub3,
- struct dc_context *ctx,
- const struct dcn_hubbub_registers *hubbub_regs,
- const struct dcn_hubbub_shift *hubbub_shift,
- const struct dcn_hubbub_mask *hubbub_mask);
-
-int hubbub3_init_dchub_sys_ctx(struct hubbub *hubbub,
- struct dcn_hubbub_phys_addr_config *pa_config);
-
-bool hubbub3_dcc_support_swizzle(
- enum swizzle_mode_values swizzle,
- unsigned int bytes_per_element,
- enum segment_order *segment_order_horz,
- enum segment_order *segment_order_vert);
-
-void hubbub3_force_wm_propagate_to_pipes(struct hubbub *hubbub);
-
-bool hubbub3_get_dcc_compression_cap(struct hubbub *hubbub,
- const struct dc_dcc_surface_param *input,
- struct dc_surface_dcc_cap *output);
-
-bool hubbub3_program_watermarks(
- struct hubbub *hubbub,
- struct dcn_watermark_set *watermarks,
- unsigned int refclk_mhz,
- bool safe_to_lower);
-
-void hubbub3_force_pstate_change_control(struct hubbub *hubbub,
- bool force, bool allow);
-
-void hubbub3_init_watermarks(struct hubbub *hubbub);
-
-#endif
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c
deleted file mode 100644
index 75547ce86c09..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c
+++ /dev/null
@@ -1,532 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "dcn30_hubp.h"
-
-#include "dm_services.h"
-#include "dce_calcs.h"
-#include "reg_helper.h"
-#include "basics/conversion.h"
-#include "dcn20/dcn20_hubp.h"
-#include "dcn21/dcn21_hubp.h"
-
-#define REG(reg)\
- hubp2->hubp_regs->reg
-
-#define CTX \
- hubp2->base.ctx
-
-#undef FN
-#define FN(reg_name, field_name) \
- hubp2->hubp_shift->field_name, hubp2->hubp_mask->field_name
-
-void hubp3_set_vm_system_aperture_settings(struct hubp *hubp,
- struct vm_system_aperture_param *apt)
-{
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
-
- PHYSICAL_ADDRESS_LOC mc_vm_apt_low;
- PHYSICAL_ADDRESS_LOC mc_vm_apt_high;
-
- // The format of high/low are 48:18 of the 48 bit addr
- mc_vm_apt_low.quad_part = apt->sys_low.quad_part >> 18;
- mc_vm_apt_high.quad_part = apt->sys_high.quad_part >> 18;
-
- REG_SET(DCN_VM_SYSTEM_APERTURE_LOW_ADDR, 0,
- MC_VM_SYSTEM_APERTURE_LOW_ADDR, mc_vm_apt_low.quad_part);
-
- REG_SET(DCN_VM_SYSTEM_APERTURE_HIGH_ADDR, 0,
- MC_VM_SYSTEM_APERTURE_HIGH_ADDR, mc_vm_apt_high.quad_part);
-
- REG_SET_2(DCN_VM_MX_L1_TLB_CNTL, 0,
- ENABLE_L1_TLB, 1,
- SYSTEM_ACCESS_MODE, 0x3);
-}
-
-bool hubp3_program_surface_flip_and_addr(
- struct hubp *hubp,
- const struct dc_plane_address *address,
- bool flip_immediate)
-{
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
-
- //program flip type
- REG_UPDATE(DCSURF_FLIP_CONTROL,
- SURFACE_FLIP_TYPE, flip_immediate);
-
- // Program VMID reg
- if (flip_immediate == 0)
- REG_UPDATE(VMID_SETTINGS_0,
- VMID, address->vmid);
-
- if (address->type == PLN_ADDR_TYPE_GRPH_STEREO) {
- REG_UPDATE(DCSURF_FLIP_CONTROL, SURFACE_FLIP_MODE_FOR_STEREOSYNC, 0);
- REG_UPDATE(DCSURF_FLIP_CONTROL, SURFACE_FLIP_IN_STEREOSYNC, 0x1);
-
- } else {
- // turn off stereo if not in stereo
- REG_UPDATE(DCSURF_FLIP_CONTROL, SURFACE_FLIP_MODE_FOR_STEREOSYNC, 0x0);
- REG_UPDATE(DCSURF_FLIP_CONTROL, SURFACE_FLIP_IN_STEREOSYNC, 0x0);
- }
-
- /* HW automatically latch rest of address register on write to
- * DCSURF_PRIMARY_SURFACE_ADDRESS if SURFACE_UPDATE_LOCK is not used
- *
- * program high first and then the low addr, order matters!
- */
- switch (address->type) {
- case PLN_ADDR_TYPE_GRAPHICS:
- /* DCN1.0 does not support const color
- * TODO: program DCHUBBUB_RET_PATH_DCC_CFGx_0/1
- * base on address->grph.dcc_const_color
- * x = 0, 2, 4, 6 for pipe 0, 1, 2, 3 for rgb and luma
- * x = 1, 3, 5, 7 for pipe 0, 1, 2, 3 for chroma
- */
-
- if (address->grph.addr.quad_part == 0)
- break;
-
- REG_UPDATE_2(DCSURF_SURFACE_CONTROL,
- PRIMARY_SURFACE_TMZ, address->tmz_surface,
- PRIMARY_META_SURFACE_TMZ, address->tmz_surface);
-
- if (address->grph.meta_addr.quad_part != 0) {
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_META_SURFACE_ADDRESS_HIGH,
- address->grph.meta_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS, 0,
- PRIMARY_META_SURFACE_ADDRESS,
- address->grph.meta_addr.low_part);
- }
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_SURFACE_ADDRESS_HIGH,
- address->grph.addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS, 0,
- PRIMARY_SURFACE_ADDRESS,
- address->grph.addr.low_part);
- break;
- case PLN_ADDR_TYPE_VIDEO_PROGRESSIVE:
- if (address->video_progressive.luma_addr.quad_part == 0
- || address->video_progressive.chroma_addr.quad_part == 0)
- break;
-
- REG_UPDATE_4(DCSURF_SURFACE_CONTROL,
- PRIMARY_SURFACE_TMZ, address->tmz_surface,
- PRIMARY_SURFACE_TMZ_C, address->tmz_surface,
- PRIMARY_META_SURFACE_TMZ, address->tmz_surface,
- PRIMARY_META_SURFACE_TMZ_C, address->tmz_surface);
-
- if (address->video_progressive.luma_meta_addr.quad_part != 0) {
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C, 0,
- PRIMARY_META_SURFACE_ADDRESS_HIGH_C,
- address->video_progressive.chroma_meta_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_C, 0,
- PRIMARY_META_SURFACE_ADDRESS_C,
- address->video_progressive.chroma_meta_addr.low_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_META_SURFACE_ADDRESS_HIGH,
- address->video_progressive.luma_meta_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS, 0,
- PRIMARY_META_SURFACE_ADDRESS,
- address->video_progressive.luma_meta_addr.low_part);
- }
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C, 0,
- PRIMARY_SURFACE_ADDRESS_HIGH_C,
- address->video_progressive.chroma_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_C, 0,
- PRIMARY_SURFACE_ADDRESS_C,
- address->video_progressive.chroma_addr.low_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_SURFACE_ADDRESS_HIGH,
- address->video_progressive.luma_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS, 0,
- PRIMARY_SURFACE_ADDRESS,
- address->video_progressive.luma_addr.low_part);
- break;
- case PLN_ADDR_TYPE_GRPH_STEREO:
- if (address->grph_stereo.left_addr.quad_part == 0)
- break;
- if (address->grph_stereo.right_addr.quad_part == 0)
- break;
-
- REG_UPDATE_8(DCSURF_SURFACE_CONTROL,
- PRIMARY_SURFACE_TMZ, address->tmz_surface,
- PRIMARY_SURFACE_TMZ_C, address->tmz_surface,
- PRIMARY_META_SURFACE_TMZ, address->tmz_surface,
- PRIMARY_META_SURFACE_TMZ_C, address->tmz_surface,
- SECONDARY_SURFACE_TMZ, address->tmz_surface,
- SECONDARY_SURFACE_TMZ_C, address->tmz_surface,
- SECONDARY_META_SURFACE_TMZ, address->tmz_surface,
- SECONDARY_META_SURFACE_TMZ_C, address->tmz_surface);
-
- if (address->grph_stereo.right_meta_addr.quad_part != 0) {
-
- REG_SET(DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH_C, 0,
- SECONDARY_META_SURFACE_ADDRESS_HIGH_C,
- address->grph_stereo.right_alpha_meta_addr.high_part);
-
- REG_SET(DCSURF_SECONDARY_META_SURFACE_ADDRESS_C, 0,
- SECONDARY_META_SURFACE_ADDRESS_C,
- address->grph_stereo.right_alpha_meta_addr.low_part);
-
- REG_SET(DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH, 0,
- SECONDARY_META_SURFACE_ADDRESS_HIGH,
- address->grph_stereo.right_meta_addr.high_part);
-
- REG_SET(DCSURF_SECONDARY_META_SURFACE_ADDRESS, 0,
- SECONDARY_META_SURFACE_ADDRESS,
- address->grph_stereo.right_meta_addr.low_part);
- }
- if (address->grph_stereo.left_meta_addr.quad_part != 0) {
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C, 0,
- PRIMARY_META_SURFACE_ADDRESS_HIGH_C,
- address->grph_stereo.left_alpha_meta_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_C, 0,
- PRIMARY_META_SURFACE_ADDRESS_C,
- address->grph_stereo.left_alpha_meta_addr.low_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_META_SURFACE_ADDRESS_HIGH,
- address->grph_stereo.left_meta_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS, 0,
- PRIMARY_META_SURFACE_ADDRESS,
- address->grph_stereo.left_meta_addr.low_part);
- }
-
- REG_SET(DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH_C, 0,
- SECONDARY_SURFACE_ADDRESS_HIGH_C,
- address->grph_stereo.right_alpha_addr.high_part);
-
- REG_SET(DCSURF_SECONDARY_SURFACE_ADDRESS_C, 0,
- SECONDARY_SURFACE_ADDRESS_C,
- address->grph_stereo.right_alpha_addr.low_part);
-
- REG_SET(DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH, 0,
- SECONDARY_SURFACE_ADDRESS_HIGH,
- address->grph_stereo.right_addr.high_part);
-
- REG_SET(DCSURF_SECONDARY_SURFACE_ADDRESS, 0,
- SECONDARY_SURFACE_ADDRESS,
- address->grph_stereo.right_addr.low_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C, 0,
- PRIMARY_SURFACE_ADDRESS_HIGH_C,
- address->grph_stereo.left_alpha_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_C, 0,
- PRIMARY_SURFACE_ADDRESS_C,
- address->grph_stereo.left_alpha_addr.low_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_SURFACE_ADDRESS_HIGH,
- address->grph_stereo.left_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS, 0,
- PRIMARY_SURFACE_ADDRESS,
- address->grph_stereo.left_addr.low_part);
- break;
- case PLN_ADDR_TYPE_RGBEA:
- if (address->rgbea.addr.quad_part == 0
- || address->rgbea.alpha_addr.quad_part == 0)
- break;
-
- REG_UPDATE_4(DCSURF_SURFACE_CONTROL,
- PRIMARY_SURFACE_TMZ, address->tmz_surface,
- PRIMARY_SURFACE_TMZ_C, address->tmz_surface,
- PRIMARY_META_SURFACE_TMZ, address->tmz_surface,
- PRIMARY_META_SURFACE_TMZ_C, address->tmz_surface);
-
- if (address->rgbea.meta_addr.quad_part != 0) {
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C, 0,
- PRIMARY_META_SURFACE_ADDRESS_HIGH_C,
- address->rgbea.alpha_meta_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_C, 0,
- PRIMARY_META_SURFACE_ADDRESS_C,
- address->rgbea.alpha_meta_addr.low_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_META_SURFACE_ADDRESS_HIGH,
- address->rgbea.meta_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_META_SURFACE_ADDRESS, 0,
- PRIMARY_META_SURFACE_ADDRESS,
- address->rgbea.meta_addr.low_part);
- }
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C, 0,
- PRIMARY_SURFACE_ADDRESS_HIGH_C,
- address->rgbea.alpha_addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_C, 0,
- PRIMARY_SURFACE_ADDRESS_C,
- address->rgbea.alpha_addr.low_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH, 0,
- PRIMARY_SURFACE_ADDRESS_HIGH,
- address->rgbea.addr.high_part);
-
- REG_SET(DCSURF_PRIMARY_SURFACE_ADDRESS, 0,
- PRIMARY_SURFACE_ADDRESS,
- address->rgbea.addr.low_part);
- break;
- default:
- BREAK_TO_DEBUGGER();
- break;
- }
-
- hubp->request_address = *address;
-
- return true;
-}
-
-void hubp3_program_tiling(
- struct dcn20_hubp *hubp2,
- const union dc_tiling_info *info,
- const enum surface_pixel_format pixel_format)
-{
- REG_UPDATE_4(DCSURF_ADDR_CONFIG,
- NUM_PIPES, log_2(info->gfx9.num_pipes),
- PIPE_INTERLEAVE, info->gfx9.pipe_interleave,
- MAX_COMPRESSED_FRAGS, log_2(info->gfx9.max_compressed_frags),
- NUM_PKRS, log_2(info->gfx9.num_pkrs));
-
- REG_UPDATE_3(DCSURF_TILING_CONFIG,
- SW_MODE, info->gfx9.swizzle,
- META_LINEAR, info->gfx9.meta_linear,
- PIPE_ALIGNED, info->gfx9.pipe_aligned);
-
-}
-
-void hubp3_dcc_control(struct hubp *hubp, bool enable,
- enum hubp_ind_block_size blk_size)
-{
- uint32_t dcc_en = enable ? 1 : 0;
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
-
- REG_UPDATE_4(DCSURF_SURFACE_CONTROL,
- PRIMARY_SURFACE_DCC_EN, dcc_en,
- PRIMARY_SURFACE_DCC_IND_BLK, blk_size,
- SECONDARY_SURFACE_DCC_EN, dcc_en,
- SECONDARY_SURFACE_DCC_IND_BLK, blk_size);
-}
-
-void hubp3_dcc_control_sienna_cichlid(struct hubp *hubp,
- struct dc_plane_dcc_param *dcc)
-{
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
-
- REG_UPDATE_6(DCSURF_SURFACE_CONTROL,
- PRIMARY_SURFACE_DCC_EN, dcc->enable,
- PRIMARY_SURFACE_DCC_IND_BLK, dcc->dcc_ind_blk,
- PRIMARY_SURFACE_DCC_IND_BLK_C, dcc->dcc_ind_blk_c,
- SECONDARY_SURFACE_DCC_EN, dcc->enable,
- SECONDARY_SURFACE_DCC_IND_BLK, dcc->dcc_ind_blk,
- SECONDARY_SURFACE_DCC_IND_BLK_C, dcc->dcc_ind_blk_c);
-}
-
-void hubp3_dmdata_set_attributes(
- struct hubp *hubp,
- const struct dc_dmdata_attributes *attr)
-{
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
-
- /*always HW mode */
- REG_UPDATE(DMDATA_CNTL,
- DMDATA_MODE, 1);
-
- /* for DMDATA flip, need to use SURFACE_UPDATE_LOCK */
- REG_UPDATE(DCSURF_FLIP_CONTROL, SURFACE_UPDATE_LOCK, 1);
-
- /* toggle DMDATA_UPDATED and set repeat and size */
- REG_UPDATE(DMDATA_CNTL,
- DMDATA_UPDATED, 0);
- REG_UPDATE_3(DMDATA_CNTL,
- DMDATA_UPDATED, 1,
- DMDATA_REPEAT, attr->dmdata_repeat,
- DMDATA_SIZE, attr->dmdata_size);
-
- /* set DMDATA address */
- REG_WRITE(DMDATA_ADDRESS_LOW, attr->address.low_part);
- REG_UPDATE(DMDATA_ADDRESS_HIGH,
- DMDATA_ADDRESS_HIGH, attr->address.high_part);
-
- REG_UPDATE(DCSURF_FLIP_CONTROL, SURFACE_UPDATE_LOCK, 0);
-
-}
-
-
-void hubp3_program_surface_config(
- struct hubp *hubp,
- enum surface_pixel_format format,
- union dc_tiling_info *tiling_info,
- struct plane_size *plane_size,
- enum dc_rotation_angle rotation,
- struct dc_plane_dcc_param *dcc,
- bool horizontal_mirror,
- unsigned int compat_level)
-{
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
-
- hubp3_dcc_control_sienna_cichlid(hubp, dcc);
- hubp3_program_tiling(hubp2, tiling_info, format);
- hubp2_program_size(hubp, format, plane_size, dcc);
- hubp2_program_rotation(hubp, rotation, horizontal_mirror);
- hubp2_program_pixel_format(hubp, format);
-}
-
-static void hubp3_program_deadline(
- struct hubp *hubp,
- struct _vcs_dpi_display_dlg_regs_st *dlg_attr,
- struct _vcs_dpi_display_ttu_regs_st *ttu_attr)
-{
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
-
- hubp2_program_deadline(hubp, dlg_attr, ttu_attr);
- REG_UPDATE(DCN_DMDATA_VM_CNTL,
- REFCYC_PER_VM_DMDATA, dlg_attr->refcyc_per_vm_dmdata);
-}
-
-void hubp3_read_state(struct hubp *hubp)
-{
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
- struct dcn_hubp_state *s = &hubp2->state;
- struct _vcs_dpi_display_rq_regs_st *rq_regs = &s->rq_regs;
-
- hubp2_read_state_common(hubp);
-
- REG_GET_7(DCHUBP_REQ_SIZE_CONFIG,
- CHUNK_SIZE, &rq_regs->rq_regs_l.chunk_size,
- MIN_CHUNK_SIZE, &rq_regs->rq_regs_l.min_chunk_size,
- META_CHUNK_SIZE, &rq_regs->rq_regs_l.meta_chunk_size,
- MIN_META_CHUNK_SIZE, &rq_regs->rq_regs_l.min_meta_chunk_size,
- DPTE_GROUP_SIZE, &rq_regs->rq_regs_l.dpte_group_size,
- SWATH_HEIGHT, &rq_regs->rq_regs_l.swath_height,
- PTE_ROW_HEIGHT_LINEAR, &rq_regs->rq_regs_l.pte_row_height_linear);
-
- REG_GET_7(DCHUBP_REQ_SIZE_CONFIG_C,
- CHUNK_SIZE_C, &rq_regs->rq_regs_c.chunk_size,
- MIN_CHUNK_SIZE_C, &rq_regs->rq_regs_c.min_chunk_size,
- META_CHUNK_SIZE_C, &rq_regs->rq_regs_c.meta_chunk_size,
- MIN_META_CHUNK_SIZE_C, &rq_regs->rq_regs_c.min_meta_chunk_size,
- DPTE_GROUP_SIZE_C, &rq_regs->rq_regs_c.dpte_group_size,
- SWATH_HEIGHT_C, &rq_regs->rq_regs_c.swath_height,
- PTE_ROW_HEIGHT_LINEAR_C, &rq_regs->rq_regs_c.pte_row_height_linear);
-
- if (REG(UCLK_PSTATE_FORCE))
- s->uclk_pstate_force = REG_READ(UCLK_PSTATE_FORCE);
-
- if (REG(DCHUBP_CNTL))
- s->hubp_cntl = REG_READ(DCHUBP_CNTL);
-
-}
-
-void hubp3_setup(
- struct hubp *hubp,
- struct _vcs_dpi_display_dlg_regs_st *dlg_attr,
- struct _vcs_dpi_display_ttu_regs_st *ttu_attr,
- struct _vcs_dpi_display_rq_regs_st *rq_regs,
- struct _vcs_dpi_display_pipe_dest_params_st *pipe_dest)
-{
- /* otg is locked when this func is called. Register are double buffered.
- * disable the requestors is not needed
- */
- hubp2_vready_at_or_After_vsync(hubp, pipe_dest);
- hubp21_program_requestor(hubp, rq_regs);
- hubp3_program_deadline(hubp, dlg_attr, ttu_attr);
-}
-
-void hubp3_init(struct hubp *hubp)
-{
- // DEDCN21-133: Inconsistent row starting line for flip between DPTE and Meta
- // This is a chicken bit to enable the ECO fix.
-
- struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
- //hubp[i].HUBPREQ_DEBUG.HUBPREQ_DEBUG[26] = 1;
- REG_WRITE(HUBPREQ_DEBUG, 1 << 26);
-}
-
-static struct hubp_funcs dcn30_hubp_funcs = {
- .hubp_enable_tripleBuffer = hubp2_enable_triplebuffer,
- .hubp_is_triplebuffer_enabled = hubp2_is_triplebuffer_enabled,
- .hubp_program_surface_flip_and_addr = hubp3_program_surface_flip_and_addr,
- .hubp_program_surface_config = hubp3_program_surface_config,
- .hubp_is_flip_pending = hubp2_is_flip_pending,
- .hubp_setup = hubp3_setup,
- .hubp_setup_interdependent = hubp2_setup_interdependent,
- .hubp_set_vm_system_aperture_settings = hubp3_set_vm_system_aperture_settings,
- .set_blank = hubp2_set_blank,
- .set_blank_regs = hubp2_set_blank_regs,
- .dcc_control = hubp3_dcc_control,
- .mem_program_viewport = min_set_viewport,
- .set_cursor_attributes = hubp2_cursor_set_attributes,
- .set_cursor_position = hubp2_cursor_set_position,
- .hubp_clk_cntl = hubp2_clk_cntl,
- .hubp_vtg_sel = hubp2_vtg_sel,
- .dmdata_set_attributes = hubp3_dmdata_set_attributes,
- .dmdata_load = hubp2_dmdata_load,
- .dmdata_status_done = hubp2_dmdata_status_done,
- .hubp_read_state = hubp3_read_state,
- .hubp_clear_underflow = hubp2_clear_underflow,
- .hubp_set_flip_control_surface_gsl = hubp2_set_flip_control_surface_gsl,
- .hubp_init = hubp3_init,
- .hubp_in_blank = hubp1_in_blank,
- .hubp_soft_reset = hubp1_soft_reset,
- .hubp_set_flip_int = hubp1_set_flip_int,
-};
-
-bool hubp3_construct(
- struct dcn20_hubp *hubp2,
- struct dc_context *ctx,
- uint32_t inst,
- const struct dcn_hubp2_registers *hubp_regs,
- const struct dcn_hubp2_shift *hubp_shift,
- const struct dcn_hubp2_mask *hubp_mask)
-{
- hubp2->base.funcs = &dcn30_hubp_funcs;
- hubp2->base.ctx = ctx;
- hubp2->hubp_regs = hubp_regs;
- hubp2->hubp_shift = hubp_shift;
- hubp2->hubp_mask = hubp_mask;
- hubp2->base.inst = inst;
- hubp2->base.opp_id = OPP_ID_INVALID;
- hubp2->base.mpcc_id = 0xf;
-
- return true;
-}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.h
deleted file mode 100644
index b010531a7fe8..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.h
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DC_HUBP_DCN30_H__
-#define __DC_HUBP_DCN30_H__
-
-#include "dcn20/dcn20_hubp.h"
-#include "dcn21/dcn21_hubp.h"
-
-#define HUBP_REG_LIST_DCN30(id)\
- HUBP_REG_LIST_DCN21(id),\
- SRI(DCN_DMDATA_VM_CNTL, HUBPREQ, id)
-
-
-#define HUBP_MASK_SH_LIST_DCN30_BASE(mask_sh)\
- HUBP_MASK_SH_LIST_DCN21_COMMON(mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, ALPHA_PLANE_EN, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, REFCYC_PER_VM_DMDATA, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_FAULT_STATUS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_FAULT_STATUS_CLEAR, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_UNDERFLOW_STATUS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_LATE_STATUS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_UNDERFLOW_STATUS_CLEAR, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_DONE, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, NUM_PKRS, mask_sh)
-
-
-#define HUBP_MASK_SH_LIST_DCN30(mask_sh)\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, REFCYC_PER_VM_DMDATA, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_FAULT_STATUS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_FAULT_STATUS_CLEAR, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_UNDERFLOW_STATUS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_LATE_STATUS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_UNDERFLOW_STATUS_CLEAR, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_DMDATA_VM_CNTL, DMDATA_VM_DONE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_BLANK_EN, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_TTU_DISABLE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_UNDERFLOW_STATUS, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_UNDERFLOW_CLEAR, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_NO_OUTSTANDING_REQ, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_VTG_SEL, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_DISABLE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_IN_BLANK, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, NUM_PIPES, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, PIPE_INTERLEAVE, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, MAX_COMPRESSED_FRAGS, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, NUM_PKRS, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_TILING_CONFIG, SW_MODE, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_TILING_CONFIG, META_LINEAR, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_TILING_CONFIG, PIPE_ALIGNED, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH, PITCH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH, META_PITCH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH_C, PITCH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH_C, META_PITCH_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, SURFACE_PIXEL_FORMAT, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_FLIP_TYPE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_FLIP_MODE_FOR_STEREOSYNC, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_FLIP_IN_STEREOSYNC, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_FLIP_PENDING, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_UPDATE_LOCK, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION, PRI_VIEWPORT_WIDTH, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION, PRI_VIEWPORT_HEIGHT, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START, PRI_VIEWPORT_X_START, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START, PRI_VIEWPORT_Y_START, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_DIMENSION, SEC_VIEWPORT_WIDTH, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_DIMENSION, SEC_VIEWPORT_HEIGHT, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_START, SEC_VIEWPORT_X_START, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_START, SEC_VIEWPORT_Y_START, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION_C, PRI_VIEWPORT_WIDTH_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION_C, PRI_VIEWPORT_HEIGHT_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START_C, PRI_VIEWPORT_X_START_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START_C, PRI_VIEWPORT_Y_START_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_DIMENSION_C, SEC_VIEWPORT_WIDTH_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_DIMENSION_C, SEC_VIEWPORT_HEIGHT_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_START_C, SEC_VIEWPORT_X_START_C, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_START_C, SEC_VIEWPORT_Y_START_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH, PRIMARY_SURFACE_ADDRESS_HIGH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS, PRIMARY_SURFACE_ADDRESS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH, SECONDARY_SURFACE_ADDRESS_HIGH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_SURFACE_ADDRESS, SECONDARY_SURFACE_ADDRESS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH, PRIMARY_META_SURFACE_ADDRESS_HIGH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS, PRIMARY_META_SURFACE_ADDRESS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH, SECONDARY_META_SURFACE_ADDRESS_HIGH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_META_SURFACE_ADDRESS, SECONDARY_META_SURFACE_ADDRESS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C, PRIMARY_SURFACE_ADDRESS_HIGH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS_C, PRIMARY_SURFACE_ADDRESS_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH_C, SECONDARY_SURFACE_ADDRESS_HIGH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_SURFACE_ADDRESS_C, SECONDARY_SURFACE_ADDRESS_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C, PRIMARY_META_SURFACE_ADDRESS_HIGH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS_C, PRIMARY_META_SURFACE_ADDRESS_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH_C, SECONDARY_META_SURFACE_ADDRESS_HIGH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_META_SURFACE_ADDRESS_C, SECONDARY_META_SURFACE_ADDRESS_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE, SURFACE_INUSE_ADDRESS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE_HIGH, SURFACE_INUSE_ADDRESS_HIGH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE_C, SURFACE_INUSE_ADDRESS_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE_HIGH_C, SURFACE_INUSE_ADDRESS_HIGH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE, SURFACE_EARLIEST_INUSE_ADDRESS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE_HIGH, SURFACE_EARLIEST_INUSE_ADDRESS_HIGH, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE_C, SURFACE_EARLIEST_INUSE_ADDRESS_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE_HIGH_C, SURFACE_EARLIEST_INUSE_ADDRESS_HIGH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_TMZ, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_TMZ_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_META_SURFACE_TMZ, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_META_SURFACE_TMZ_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_DCC_EN, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_DCC_IND_BLK, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_DCC_IND_BLK_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, SECONDARY_SURFACE_TMZ, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, SECONDARY_SURFACE_TMZ_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, SECONDARY_META_SURFACE_TMZ, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, SECONDARY_META_SURFACE_TMZ_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, SECONDARY_SURFACE_DCC_EN, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, SECONDARY_SURFACE_DCC_IND_BLK, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, SECONDARY_SURFACE_DCC_IND_BLK_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_SURFACE_FLIP_INTERRUPT, SURFACE_FLIP_INT_MASK, mask_sh),\
- HUBP_SF(HUBPRET0_HUBPRET_CONTROL, DET_BUF_PLANE1_BASE_ADDRESS, mask_sh),\
- HUBP_SF(HUBPRET0_HUBPRET_CONTROL, CROSSBAR_SRC_CB_B, mask_sh),\
- HUBP_SF(HUBPRET0_HUBPRET_CONTROL, CROSSBAR_SRC_CR_R, mask_sh),\
- HUBP_SF(HUBPRET0_HUBPRET_CONTROL, CROSSBAR_SRC_Y_G, mask_sh),\
- HUBP_SF(HUBPRET0_HUBPRET_CONTROL, CROSSBAR_SRC_ALPHA, mask_sh),\
- HUBP_SF(HUBPRET0_HUBPRET_CONTROL, PACK_3TO2_ELEMENT_DISABLE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, DRQ_EXPANSION_MODE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, PRQ_EXPANSION_MODE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, MRQ_EXPANSION_MODE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, CRQ_EXPANSION_MODE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, CHUNK_SIZE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, MIN_CHUNK_SIZE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, META_CHUNK_SIZE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, MIN_META_CHUNK_SIZE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, DPTE_GROUP_SIZE, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, SWATH_HEIGHT, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, PTE_ROW_HEIGHT_LINEAR, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, CHUNK_SIZE_C, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, MIN_CHUNK_SIZE_C, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, META_CHUNK_SIZE_C, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, MIN_META_CHUNK_SIZE_C, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, DPTE_GROUP_SIZE_C, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, SWATH_HEIGHT_C, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, PTE_ROW_HEIGHT_LINEAR_C, mask_sh),\
- HUBP_SF(HUBPREQ0_BLANK_OFFSET_0, REFCYC_H_BLANK_END, mask_sh),\
- HUBP_SF(HUBPREQ0_BLANK_OFFSET_0, DLG_V_BLANK_END, mask_sh),\
- HUBP_SF(HUBPREQ0_BLANK_OFFSET_1, MIN_DST_Y_NEXT_START, mask_sh),\
- HUBP_SF(HUBPREQ0_DST_DIMENSIONS, REFCYC_PER_HTOTAL, mask_sh),\
- HUBP_SF(HUBPREQ0_DST_AFTER_SCALER, REFCYC_X_AFTER_SCALER, mask_sh),\
- HUBP_SF(HUBPREQ0_DST_AFTER_SCALER, DST_Y_AFTER_SCALER, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_0, DST_Y_PER_VM_VBLANK, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_0, DST_Y_PER_ROW_VBLANK, mask_sh),\
- HUBP_SF(HUBPREQ0_REF_FREQ_TO_PIX_FREQ, REF_FREQ_TO_PIX_FREQ, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_1, REFCYC_PER_PTE_GROUP_VBLANK_L, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_3, REFCYC_PER_META_CHUNK_VBLANK_L, mask_sh),\
- HUBP_SF(HUBPREQ0_NOM_PARAMETERS_4, DST_Y_PER_META_ROW_NOM_L, mask_sh),\
- HUBP_SF(HUBPREQ0_NOM_PARAMETERS_5, REFCYC_PER_META_CHUNK_NOM_L, mask_sh),\
- HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY_PRE, REFCYC_PER_LINE_DELIVERY_PRE_L, mask_sh),\
- HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY_PRE, REFCYC_PER_LINE_DELIVERY_PRE_C, mask_sh),\
- HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY, REFCYC_PER_LINE_DELIVERY_L, mask_sh),\
- HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY, REFCYC_PER_LINE_DELIVERY_C, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_2, REFCYC_PER_PTE_GROUP_VBLANK_C, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_4, REFCYC_PER_META_CHUNK_VBLANK_C, mask_sh),\
- HUBP_SF(HUBPREQ0_NOM_PARAMETERS_6, DST_Y_PER_META_ROW_NOM_C, mask_sh),\
- HUBP_SF(HUBPREQ0_NOM_PARAMETERS_7, REFCYC_PER_META_CHUNK_NOM_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_TTU_QOS_WM, QoS_LEVEL_LOW_WM, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_TTU_QOS_WM, QoS_LEVEL_HIGH_WM, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_GLOBAL_TTU_CNTL, MIN_TTU_VBLANK, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_GLOBAL_TTU_CNTL, QoS_LEVEL_FLIP, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_GLOBAL_TTU_CNTL, ROW_TTU_MODE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL0, REFCYC_PER_REQ_DELIVERY, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL0, QoS_LEVEL_FIXED, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL0, QoS_RAMP_DISABLE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL1, REFCYC_PER_REQ_DELIVERY_PRE, mask_sh),\
- HUBP_SF(HUBP0_HUBP_CLK_CNTL, HUBP_CLOCK_ENABLE, mask_sh),\
- HUBP_MASK_SH_LIST_DCN_VM(mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, ROTATION_ANGLE, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, H_MIRROR_EN, mask_sh),\
- HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, ALPHA_PLANE_EN, mask_sh),\
- HUBP_SF(HUBPREQ0_PREFETCH_SETTINGS, DST_Y_PREFETCH, mask_sh),\
- HUBP_SF(HUBPREQ0_PREFETCH_SETTINGS, VRATIO_PREFETCH, mask_sh),\
- HUBP_SF(HUBPREQ0_PREFETCH_SETTINGS_C, VRATIO_PREFETCH_C, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_LOW_ADDR, MC_VM_SYSTEM_APERTURE_LOW_ADDR, mask_sh),\
- HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_HIGH_ADDR, MC_VM_SYSTEM_APERTURE_HIGH_ADDR, mask_sh),\
- HUBP_SF(HUBPREQ0_CURSOR_SETTINGS, CURSOR0_DST_Y_OFFSET, mask_sh), \
- HUBP_SF(HUBPREQ0_CURSOR_SETTINGS, CURSOR0_CHUNK_HDL_ADJUST, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_SURFACE_ADDRESS_HIGH, CURSOR_SURFACE_ADDRESS_HIGH, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_SURFACE_ADDRESS, CURSOR_SURFACE_ADDRESS, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_SIZE, CURSOR_WIDTH, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_SIZE, CURSOR_HEIGHT, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_MODE, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_2X_MAGNIFY, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_PITCH, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_LINES_PER_CHUNK, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_CONTROL, CURSOR_ENABLE, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_POSITION, CURSOR_X_POSITION, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_POSITION, CURSOR_Y_POSITION, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_HOT_SPOT, CURSOR_HOT_SPOT_X, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_HOT_SPOT, CURSOR_HOT_SPOT_Y, mask_sh), \
- HUBP_SF(CURSOR0_0_CURSOR_DST_OFFSET, CURSOR_DST_X_OFFSET, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_ADDRESS_HIGH, DMDATA_ADDRESS_HIGH, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_CNTL, DMDATA_MODE, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_CNTL, DMDATA_UPDATED, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_CNTL, DMDATA_REPEAT, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_CNTL, DMDATA_SIZE, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_SW_CNTL, DMDATA_SW_UPDATED, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_SW_CNTL, DMDATA_SW_REPEAT, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_SW_CNTL, DMDATA_SW_SIZE, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_QOS_CNTL, DMDATA_QOS_MODE, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_QOS_CNTL, DMDATA_QOS_LEVEL, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_QOS_CNTL, DMDATA_DL_DELTA, mask_sh), \
- HUBP_SF(CURSOR0_0_DMDATA_STATUS, DMDATA_DONE, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_0, DST_Y_PER_VM_FLIP, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_0, DST_Y_PER_ROW_FLIP, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_1, REFCYC_PER_PTE_GROUP_FLIP_L, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_2, REFCYC_PER_META_CHUNK_FLIP_L, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_VREADY_AT_OR_AFTER_VSYNC, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_DISABLE_STOP_DATA_DURING_VM, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, HUBPREQ_MASTER_UPDATE_LOCK_STATUS, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL2, SURFACE_GSL_ENABLE, mask_sh),\
- HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL2, SURFACE_TRIPLE_BUFFER_ENABLE, mask_sh),\
- HUBP_SF(HUBPREQ0_VMID_SETTINGS_0, VMID, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_3, REFCYC_PER_VM_GROUP_FLIP, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_4, REFCYC_PER_VM_REQ_FLIP, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_5, REFCYC_PER_PTE_GROUP_FLIP_C, mask_sh),\
- HUBP_SF(HUBPREQ0_FLIP_PARAMETERS_6, REFCYC_PER_META_CHUNK_FLIP_C, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_5, REFCYC_PER_VM_GROUP_VBLANK, mask_sh),\
- HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_6, REFCYC_PER_VM_REQ_VBLANK, mask_sh),\
- HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, VM_GROUP_SIZE, mask_sh)
-
-bool hubp3_construct(
- struct dcn20_hubp *hubp2,
- struct dc_context *ctx,
- uint32_t inst,
- const struct dcn_hubp2_registers *hubp_regs,
- const struct dcn_hubp2_shift *hubp_shift,
- const struct dcn_hubp2_mask *hubp_mask);
-
-void hubp3_set_vm_system_aperture_settings(struct hubp *hubp,
- struct vm_system_aperture_param *apt);
-
-bool hubp3_program_surface_flip_and_addr(
- struct hubp *hubp,
- const struct dc_plane_address *address,
- bool flip_immediate);
-
-void hubp3_program_surface_config(
- struct hubp *hubp,
- enum surface_pixel_format format,
- union dc_tiling_info *tiling_info,
- struct plane_size *plane_size,
- enum dc_rotation_angle rotation,
- struct dc_plane_dcc_param *dcc,
- bool horizontal_mirror,
- unsigned int compat_level);
-
-void hubp3_setup(
- struct hubp *hubp,
- struct _vcs_dpi_display_dlg_regs_st *dlg_attr,
- struct _vcs_dpi_display_ttu_regs_st *ttu_attr,
- struct _vcs_dpi_display_rq_regs_st *rq_regs,
- struct _vcs_dpi_display_pipe_dest_params_st *pipe_dest);
-
-void hubp3_program_tiling(
- struct dcn20_hubp *hubp2,
- const union dc_tiling_info *info,
- const enum surface_pixel_format pixel_format);
-
-void hubp3_dcc_control(struct hubp *hubp, bool enable,
- enum hubp_ind_block_size blk_size);
-
-void hubp3_dcc_control_sienna_cichlid(struct hubp *hubp,
- struct dc_plane_dcc_param *dcc);
-
-void hubp3_dmdata_set_attributes(
- struct hubp *hubp,
- const struct dc_dmdata_attributes *attr);
-
-void hubp3_read_state(struct hubp *hubp);
-
-void hubp3_init(struct hubp *hubp);
-
-#endif /* __DC_HUBP_DCN30_H__ */
-
-
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.c
deleted file mode 100644
index 5ebb57303130..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.c
+++ /dev/null
@@ -1,1558 +0,0 @@
-/*
- * Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "reg_helper.h"
-#include "dcn30_mpc.h"
-#include "dcn30_cm_common.h"
-#include "basics/conversion.h"
-#include "dcn10/dcn10_cm_common.h"
-#include "dc.h"
-
-#define REG(reg)\
- mpc30->mpc_regs->reg
-
-#define CTX \
- mpc30->base.ctx
-
-#undef FN
-#define FN(reg_name, field_name) \
- mpc30->mpc_shift->field_name, mpc30->mpc_mask->field_name
-
-
-#define NUM_ELEMENTS(a) (sizeof(a) / sizeof((a)[0]))
-
-
-void mpc3_mpc_init(struct mpc *mpc)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- int opp_id;
-
- mpc1_mpc_init(mpc);
-
- for (opp_id = 0; opp_id < MAX_OPP; opp_id++) {
- if (REG(MUX[opp_id]))
- /* disable mpc out rate and flow control */
- REG_UPDATE_2(MUX[opp_id], MPC_OUT_RATE_CONTROL_DISABLE,
- 1, MPC_OUT_FLOW_CONTROL_COUNT, 0);
- }
-}
-
-void mpc3_mpc_init_single_inst(struct mpc *mpc, unsigned int mpcc_id)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- mpc1_mpc_init_single_inst(mpc, mpcc_id);
-
- /* assuming mpc out mux is connected to opp with the same index at this
- * point in time (e.g. transitioning from vbios to driver)
- */
- if (mpcc_id < MAX_OPP && REG(MUX[mpcc_id]))
- /* disable mpc out rate and flow control */
- REG_UPDATE_2(MUX[mpcc_id], MPC_OUT_RATE_CONTROL_DISABLE,
- 1, MPC_OUT_FLOW_CONTROL_COUNT, 0);
-}
-
-bool mpc3_is_dwb_idle(
- struct mpc *mpc,
- int dwb_id)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- unsigned int status;
-
- REG_GET(DWB_MUX[dwb_id], MPC_DWB0_MUX_STATUS, &status);
-
- if (status == 0xf)
- return true;
- else
- return false;
-}
-
-void mpc3_set_dwb_mux(
- struct mpc *mpc,
- int dwb_id,
- int mpcc_id)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_SET(DWB_MUX[dwb_id], 0,
- MPC_DWB0_MUX, mpcc_id);
-}
-
-void mpc3_disable_dwb_mux(
- struct mpc *mpc,
- int dwb_id)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_SET(DWB_MUX[dwb_id], 0,
- MPC_DWB0_MUX, 0xf);
-}
-
-enum dc_lut_mode mpc3_get_ogam_current(struct mpc *mpc, int mpcc_id)
-{
- /*Contrary to DCN2 and DCN1 wherein a single status register field holds this info;
- *in DCN3/3AG, we need to read two separate fields to retrieve the same info
- */
- enum dc_lut_mode mode;
- uint32_t state_mode;
- uint32_t state_ram_lut_in_use;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_GET_2(MPCC_OGAM_CONTROL[mpcc_id], MPCC_OGAM_MODE_CURRENT, &state_mode,
- MPCC_OGAM_SELECT_CURRENT, &state_ram_lut_in_use);
-
- switch (state_mode) {
- case 0:
- mode = LUT_BYPASS;
- break;
- case 2:
- switch (state_ram_lut_in_use) {
- case 0:
- mode = LUT_RAM_A;
- break;
- case 1:
- mode = LUT_RAM_B;
- break;
- default:
- mode = LUT_BYPASS;
- break;
- }
- break;
- default:
- mode = LUT_BYPASS;
- break;
- }
-
- return mode;
-}
-
-void mpc3_power_on_ogam_lut(
- struct mpc *mpc, int mpcc_id,
- bool power_on)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- /*
- * Powering on: force memory active so the LUT can be updated.
- * Powering off: allow entering memory low power mode
- *
- * Memory low power mode is controlled during MPC OGAM LUT init.
- */
- REG_UPDATE(MPCC_MEM_PWR_CTRL[mpcc_id],
- MPCC_OGAM_MEM_PWR_DIS, power_on != 0);
-
- /* Wait for memory to be powered on - we won't be able to write to it otherwise. */
- if (power_on)
- REG_WAIT(MPCC_MEM_PWR_CTRL[mpcc_id], MPCC_OGAM_MEM_PWR_STATE, 0, 10, 10);
-}
-
-static void mpc3_configure_ogam_lut(
- struct mpc *mpc, int mpcc_id,
- bool is_ram_a)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_UPDATE_2(MPCC_OGAM_LUT_CONTROL[mpcc_id],
- MPCC_OGAM_LUT_WRITE_COLOR_MASK, 7,
- MPCC_OGAM_LUT_HOST_SEL, is_ram_a == true ? 0:1);
-
- REG_SET(MPCC_OGAM_LUT_INDEX[mpcc_id], 0, MPCC_OGAM_LUT_INDEX, 0);
-}
-
-static void mpc3_ogam_get_reg_field(
- struct mpc *mpc,
- struct dcn3_xfer_func_reg *reg)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- reg->shifts.field_region_start_base = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION_START_BASE_B;
- reg->masks.field_region_start_base = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION_START_BASE_B;
- reg->shifts.field_offset = mpc30->mpc_shift->MPCC_OGAM_RAMA_OFFSET_B;
- reg->masks.field_offset = mpc30->mpc_mask->MPCC_OGAM_RAMA_OFFSET_B;
-
- reg->shifts.exp_region0_lut_offset = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->masks.exp_region0_lut_offset = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION0_LUT_OFFSET;
- reg->shifts.exp_region0_num_segments = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->masks.exp_region0_num_segments = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS;
- reg->shifts.exp_region1_lut_offset = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->masks.exp_region1_lut_offset = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION1_LUT_OFFSET;
- reg->shifts.exp_region1_num_segments = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS;
- reg->masks.exp_region1_num_segments = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS;
-
- reg->shifts.field_region_end = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION_END_B;
- reg->masks.field_region_end = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION_END_B;
- reg->shifts.field_region_end_slope = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION_END_SLOPE_B;
- reg->masks.field_region_end_slope = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION_END_SLOPE_B;
- reg->shifts.field_region_end_base = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION_END_BASE_B;
- reg->masks.field_region_end_base = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION_END_BASE_B;
- reg->shifts.field_region_linear_slope = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION_START_SLOPE_B;
- reg->masks.field_region_linear_slope = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION_START_SLOPE_B;
- reg->shifts.exp_region_start = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION_START_B;
- reg->masks.exp_region_start = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION_START_B;
- reg->shifts.exp_resion_start_segment = mpc30->mpc_shift->MPCC_OGAM_RAMA_EXP_REGION_START_SEGMENT_B;
- reg->masks.exp_resion_start_segment = mpc30->mpc_mask->MPCC_OGAM_RAMA_EXP_REGION_START_SEGMENT_B;
-}
-
-static void mpc3_program_luta(struct mpc *mpc, int mpcc_id,
- const struct pwl_params *params)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- struct dcn3_xfer_func_reg gam_regs;
-
- mpc3_ogam_get_reg_field(mpc, &gam_regs);
-
- gam_regs.start_cntl_b = REG(MPCC_OGAM_RAMA_START_CNTL_B[mpcc_id]);
- gam_regs.start_cntl_g = REG(MPCC_OGAM_RAMA_START_CNTL_G[mpcc_id]);
- gam_regs.start_cntl_r = REG(MPCC_OGAM_RAMA_START_CNTL_R[mpcc_id]);
- gam_regs.start_slope_cntl_b = REG(MPCC_OGAM_RAMA_START_SLOPE_CNTL_B[mpcc_id]);
- gam_regs.start_slope_cntl_g = REG(MPCC_OGAM_RAMA_START_SLOPE_CNTL_G[mpcc_id]);
- gam_regs.start_slope_cntl_r = REG(MPCC_OGAM_RAMA_START_SLOPE_CNTL_R[mpcc_id]);
- gam_regs.start_end_cntl1_b = REG(MPCC_OGAM_RAMA_END_CNTL1_B[mpcc_id]);
- gam_regs.start_end_cntl2_b = REG(MPCC_OGAM_RAMA_END_CNTL2_B[mpcc_id]);
- gam_regs.start_end_cntl1_g = REG(MPCC_OGAM_RAMA_END_CNTL1_G[mpcc_id]);
- gam_regs.start_end_cntl2_g = REG(MPCC_OGAM_RAMA_END_CNTL2_G[mpcc_id]);
- gam_regs.start_end_cntl1_r = REG(MPCC_OGAM_RAMA_END_CNTL1_R[mpcc_id]);
- gam_regs.start_end_cntl2_r = REG(MPCC_OGAM_RAMA_END_CNTL2_R[mpcc_id]);
- gam_regs.region_start = REG(MPCC_OGAM_RAMA_REGION_0_1[mpcc_id]);
- gam_regs.region_end = REG(MPCC_OGAM_RAMA_REGION_32_33[mpcc_id]);
- //New registers in DCN3AG/DCN OGAM block
- gam_regs.offset_b = REG(MPCC_OGAM_RAMA_OFFSET_B[mpcc_id]);
- gam_regs.offset_g = REG(MPCC_OGAM_RAMA_OFFSET_G[mpcc_id]);
- gam_regs.offset_r = REG(MPCC_OGAM_RAMA_OFFSET_R[mpcc_id]);
- gam_regs.start_base_cntl_b = REG(MPCC_OGAM_RAMA_START_BASE_CNTL_B[mpcc_id]);
- gam_regs.start_base_cntl_g = REG(MPCC_OGAM_RAMA_START_BASE_CNTL_G[mpcc_id]);
- gam_regs.start_base_cntl_r = REG(MPCC_OGAM_RAMA_START_BASE_CNTL_R[mpcc_id]);
-
- cm_helper_program_gamcor_xfer_func(mpc30->base.ctx, params, &gam_regs);
-}
-
-static void mpc3_program_lutb(struct mpc *mpc, int mpcc_id,
- const struct pwl_params *params)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- struct dcn3_xfer_func_reg gam_regs;
-
- mpc3_ogam_get_reg_field(mpc, &gam_regs);
-
- gam_regs.start_cntl_b = REG(MPCC_OGAM_RAMB_START_CNTL_B[mpcc_id]);
- gam_regs.start_cntl_g = REG(MPCC_OGAM_RAMB_START_CNTL_G[mpcc_id]);
- gam_regs.start_cntl_r = REG(MPCC_OGAM_RAMB_START_CNTL_R[mpcc_id]);
- gam_regs.start_slope_cntl_b = REG(MPCC_OGAM_RAMB_START_SLOPE_CNTL_B[mpcc_id]);
- gam_regs.start_slope_cntl_g = REG(MPCC_OGAM_RAMB_START_SLOPE_CNTL_G[mpcc_id]);
- gam_regs.start_slope_cntl_r = REG(MPCC_OGAM_RAMB_START_SLOPE_CNTL_R[mpcc_id]);
- gam_regs.start_end_cntl1_b = REG(MPCC_OGAM_RAMB_END_CNTL1_B[mpcc_id]);
- gam_regs.start_end_cntl2_b = REG(MPCC_OGAM_RAMB_END_CNTL2_B[mpcc_id]);
- gam_regs.start_end_cntl1_g = REG(MPCC_OGAM_RAMB_END_CNTL1_G[mpcc_id]);
- gam_regs.start_end_cntl2_g = REG(MPCC_OGAM_RAMB_END_CNTL2_G[mpcc_id]);
- gam_regs.start_end_cntl1_r = REG(MPCC_OGAM_RAMB_END_CNTL1_R[mpcc_id]);
- gam_regs.start_end_cntl2_r = REG(MPCC_OGAM_RAMB_END_CNTL2_R[mpcc_id]);
- gam_regs.region_start = REG(MPCC_OGAM_RAMB_REGION_0_1[mpcc_id]);
- gam_regs.region_end = REG(MPCC_OGAM_RAMB_REGION_32_33[mpcc_id]);
- //New registers in DCN3AG/DCN OGAM block
- gam_regs.offset_b = REG(MPCC_OGAM_RAMB_OFFSET_B[mpcc_id]);
- gam_regs.offset_g = REG(MPCC_OGAM_RAMB_OFFSET_G[mpcc_id]);
- gam_regs.offset_r = REG(MPCC_OGAM_RAMB_OFFSET_R[mpcc_id]);
- gam_regs.start_base_cntl_b = REG(MPCC_OGAM_RAMB_START_BASE_CNTL_B[mpcc_id]);
- gam_regs.start_base_cntl_g = REG(MPCC_OGAM_RAMB_START_BASE_CNTL_G[mpcc_id]);
- gam_regs.start_base_cntl_r = REG(MPCC_OGAM_RAMB_START_BASE_CNTL_R[mpcc_id]);
-
- cm_helper_program_gamcor_xfer_func(mpc30->base.ctx, params, &gam_regs);
-}
-
-
-static void mpc3_program_ogam_pwl(
- struct mpc *mpc, int mpcc_id,
- const struct pwl_result_data *rgb,
- uint32_t num)
-{
- uint32_t i;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- if (is_rgb_equal(rgb, num)) {
- for (i = 0 ; i < num; i++)
- REG_SET(MPCC_OGAM_LUT_DATA[mpcc_id], 0, MPCC_OGAM_LUT_DATA, rgb[i].red_reg);
- } else {
-
- REG_UPDATE(MPCC_OGAM_LUT_CONTROL[mpcc_id],
- MPCC_OGAM_LUT_WRITE_COLOR_MASK, 4);
-
- for (i = 0 ; i < num; i++)
- REG_SET(MPCC_OGAM_LUT_DATA[mpcc_id], 0, MPCC_OGAM_LUT_DATA, rgb[i].red_reg);
-
- REG_SET(MPCC_OGAM_LUT_INDEX[mpcc_id], 0, MPCC_OGAM_LUT_INDEX, 0);
-
- REG_UPDATE(MPCC_OGAM_LUT_CONTROL[mpcc_id],
- MPCC_OGAM_LUT_WRITE_COLOR_MASK, 2);
-
- for (i = 0 ; i < num; i++)
- REG_SET(MPCC_OGAM_LUT_DATA[mpcc_id], 0, MPCC_OGAM_LUT_DATA, rgb[i].green_reg);
-
- REG_SET(MPCC_OGAM_LUT_INDEX[mpcc_id], 0, MPCC_OGAM_LUT_INDEX, 0);
-
- REG_UPDATE(MPCC_OGAM_LUT_CONTROL[mpcc_id],
- MPCC_OGAM_LUT_WRITE_COLOR_MASK, 1);
-
- for (i = 0 ; i < num; i++)
- REG_SET(MPCC_OGAM_LUT_DATA[mpcc_id], 0, MPCC_OGAM_LUT_DATA, rgb[i].blue_reg);
-
- }
-
-}
-
-void mpc3_set_output_gamma(
- struct mpc *mpc,
- int mpcc_id,
- const struct pwl_params *params)
-{
- enum dc_lut_mode current_mode;
- enum dc_lut_mode next_mode;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- if (mpc->ctx->dc->debug.cm_in_bypass) {
- REG_SET(MPCC_OGAM_MODE[mpcc_id], 0, MPCC_OGAM_MODE, 0);
- return;
- }
-
- if (params == NULL) { //disable OGAM
- REG_SET(MPCC_OGAM_CONTROL[mpcc_id], 0, MPCC_OGAM_MODE, 0);
- return;
- }
- //enable OGAM
- REG_SET(MPCC_OGAM_CONTROL[mpcc_id], 0, MPCC_OGAM_MODE, 2);
-
- current_mode = mpc3_get_ogam_current(mpc, mpcc_id);
- if (current_mode == LUT_BYPASS)
- next_mode = LUT_RAM_A;
- else if (current_mode == LUT_RAM_A)
- next_mode = LUT_RAM_B;
- else
- next_mode = LUT_RAM_A;
-
- mpc3_power_on_ogam_lut(mpc, mpcc_id, true);
- mpc3_configure_ogam_lut(mpc, mpcc_id, next_mode == LUT_RAM_A);
-
- if (next_mode == LUT_RAM_A)
- mpc3_program_luta(mpc, mpcc_id, params);
- else
- mpc3_program_lutb(mpc, mpcc_id, params);
-
- mpc3_program_ogam_pwl(
- mpc, mpcc_id, params->rgb_resulted, params->hw_points_num);
-
- /*we need to program 2 fields here as apposed to 1*/
- REG_UPDATE(MPCC_OGAM_CONTROL[mpcc_id],
- MPCC_OGAM_SELECT, next_mode == LUT_RAM_A ? 0:1);
-
- if (mpc->ctx->dc->debug.enable_mem_low_power.bits.mpc)
- mpc3_power_on_ogam_lut(mpc, mpcc_id, false);
-}
-
-void mpc3_set_denorm(
- struct mpc *mpc,
- int opp_id,
- enum dc_color_depth output_depth)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- /* De-normalize Fixed U1.13 color data to different target bit depths. 0 is bypass*/
- int denorm_mode = 0;
-
- switch (output_depth) {
- case COLOR_DEPTH_666:
- denorm_mode = 1;
- break;
- case COLOR_DEPTH_888:
- denorm_mode = 2;
- break;
- case COLOR_DEPTH_999:
- denorm_mode = 3;
- break;
- case COLOR_DEPTH_101010:
- denorm_mode = 4;
- break;
- case COLOR_DEPTH_111111:
- denorm_mode = 5;
- break;
- case COLOR_DEPTH_121212:
- denorm_mode = 6;
- break;
- case COLOR_DEPTH_141414:
- case COLOR_DEPTH_161616:
- default:
- /* not valid used case! */
- break;
- }
-
- REG_UPDATE(DENORM_CONTROL[opp_id],
- MPC_OUT_DENORM_MODE, denorm_mode);
-}
-
-void mpc3_set_denorm_clamp(
- struct mpc *mpc,
- int opp_id,
- struct mpc_denorm_clamp denorm_clamp)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- /*program min and max clamp values for the pixel components*/
- REG_UPDATE_2(DENORM_CONTROL[opp_id],
- MPC_OUT_DENORM_CLAMP_MAX_R_CR, denorm_clamp.clamp_max_r_cr,
- MPC_OUT_DENORM_CLAMP_MIN_R_CR, denorm_clamp.clamp_min_r_cr);
- REG_UPDATE_2(DENORM_CLAMP_G_Y[opp_id],
- MPC_OUT_DENORM_CLAMP_MAX_G_Y, denorm_clamp.clamp_max_g_y,
- MPC_OUT_DENORM_CLAMP_MIN_G_Y, denorm_clamp.clamp_min_g_y);
- REG_UPDATE_2(DENORM_CLAMP_B_CB[opp_id],
- MPC_OUT_DENORM_CLAMP_MAX_B_CB, denorm_clamp.clamp_max_b_cb,
- MPC_OUT_DENORM_CLAMP_MIN_B_CB, denorm_clamp.clamp_min_b_cb);
-}
-
-static enum dc_lut_mode mpc3_get_shaper_current(struct mpc *mpc, uint32_t rmu_idx)
-{
- enum dc_lut_mode mode;
- uint32_t state_mode;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_GET(SHAPER_CONTROL[rmu_idx], MPC_RMU_SHAPER_LUT_MODE_CURRENT, &state_mode);
-
- switch (state_mode) {
- case 0:
- mode = LUT_BYPASS;
- break;
- case 1:
- mode = LUT_RAM_A;
- break;
- case 2:
- mode = LUT_RAM_B;
- break;
- default:
- mode = LUT_BYPASS;
- break;
- }
-
- return mode;
-}
-
-static void mpc3_configure_shaper_lut(
- struct mpc *mpc,
- bool is_ram_a,
- uint32_t rmu_idx)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_UPDATE(SHAPER_LUT_WRITE_EN_MASK[rmu_idx],
- MPC_RMU_SHAPER_LUT_WRITE_EN_MASK, 7);
- REG_UPDATE(SHAPER_LUT_WRITE_EN_MASK[rmu_idx],
- MPC_RMU_SHAPER_LUT_WRITE_SEL, is_ram_a == true ? 0:1);
- REG_SET(SHAPER_LUT_INDEX[rmu_idx], 0, MPC_RMU_SHAPER_LUT_INDEX, 0);
-}
-
-static void mpc3_program_shaper_luta_settings(
- struct mpc *mpc,
- const struct pwl_params *params,
- uint32_t rmu_idx)
-{
- const struct gamma_curve *curve;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_SET_2(SHAPER_RAMA_START_CNTL_B[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, params->corner_points[0].blue.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, 0);
- REG_SET_2(SHAPER_RAMA_START_CNTL_G[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, params->corner_points[0].green.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, 0);
- REG_SET_2(SHAPER_RAMA_START_CNTL_R[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, params->corner_points[0].red.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, 0);
-
- REG_SET_2(SHAPER_RAMA_END_CNTL_B[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, params->corner_points[1].blue.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, params->corner_points[1].blue.custom_float_y);
- REG_SET_2(SHAPER_RAMA_END_CNTL_G[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, params->corner_points[1].green.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, params->corner_points[1].green.custom_float_y);
- REG_SET_2(SHAPER_RAMA_END_CNTL_R[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, params->corner_points[1].red.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, params->corner_points[1].red.custom_float_y);
-
- curve = params->arr_curve_points;
- REG_SET_4(SHAPER_RAMA_REGION_0_1[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_2_3[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_4_5[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_6_7[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_8_9[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_10_11[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_12_13[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_14_15[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_16_17[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_18_19[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_20_21[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_22_23[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_24_25[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_26_27[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_28_29[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_30_31[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMA_REGION_32_33[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-}
-
-static void mpc3_program_shaper_lutb_settings(
- struct mpc *mpc,
- const struct pwl_params *params,
- uint32_t rmu_idx)
-{
- const struct gamma_curve *curve;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_SET_2(SHAPER_RAMB_START_CNTL_B[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, params->corner_points[0].blue.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, 0);
- REG_SET_2(SHAPER_RAMB_START_CNTL_G[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, params->corner_points[0].green.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, 0);
- REG_SET_2(SHAPER_RAMB_START_CNTL_R[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, params->corner_points[0].red.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, 0);
-
- REG_SET_2(SHAPER_RAMB_END_CNTL_B[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, params->corner_points[1].blue.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, params->corner_points[1].blue.custom_float_y);
- REG_SET_2(SHAPER_RAMB_END_CNTL_G[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, params->corner_points[1].green.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, params->corner_points[1].green.custom_float_y);
- REG_SET_2(SHAPER_RAMB_END_CNTL_R[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, params->corner_points[1].red.custom_float_x,
- MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, params->corner_points[1].red.custom_float_y);
-
- curve = params->arr_curve_points;
- REG_SET_4(SHAPER_RAMB_REGION_0_1[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_2_3[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_4_5[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_6_7[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_8_9[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_10_11[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_12_13[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_14_15[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_16_17[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_18_19[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_20_21[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_22_23[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_24_25[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_26_27[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_28_29[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_30_31[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-
- curve += 2;
- REG_SET_4(SHAPER_RAMB_REGION_32_33[rmu_idx], 0,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, curve[0].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, curve[0].segments_num,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, curve[1].offset,
- MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, curve[1].segments_num);
-}
-
-
-static void mpc3_program_shaper_lut(
- struct mpc *mpc,
- const struct pwl_result_data *rgb,
- uint32_t num,
- uint32_t rmu_idx)
-{
- uint32_t i, red, green, blue;
- uint32_t red_delta, green_delta, blue_delta;
- uint32_t red_value, green_value, blue_value;
-
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- for (i = 0 ; i < num; i++) {
-
- red = rgb[i].red_reg;
- green = rgb[i].green_reg;
- blue = rgb[i].blue_reg;
-
- red_delta = rgb[i].delta_red_reg;
- green_delta = rgb[i].delta_green_reg;
- blue_delta = rgb[i].delta_blue_reg;
-
- red_value = ((red_delta & 0x3ff) << 14) | (red & 0x3fff);
- green_value = ((green_delta & 0x3ff) << 14) | (green & 0x3fff);
- blue_value = ((blue_delta & 0x3ff) << 14) | (blue & 0x3fff);
-
- REG_SET(SHAPER_LUT_DATA[rmu_idx], 0, MPC_RMU_SHAPER_LUT_DATA, red_value);
- REG_SET(SHAPER_LUT_DATA[rmu_idx], 0, MPC_RMU_SHAPER_LUT_DATA, green_value);
- REG_SET(SHAPER_LUT_DATA[rmu_idx], 0, MPC_RMU_SHAPER_LUT_DATA, blue_value);
- }
-
-}
-
-static void mpc3_power_on_shaper_3dlut(
- struct mpc *mpc,
- uint32_t rmu_idx,
- bool power_on)
-{
- uint32_t power_status_shaper = 2;
- uint32_t power_status_3dlut = 2;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- int max_retries = 10;
-
- if (rmu_idx == 0) {
- REG_SET(MPC_RMU_MEM_PWR_CTRL, 0,
- MPC_RMU0_MEM_PWR_DIS, power_on == true ? 1:0);
- /* wait for memory to fully power up */
- if (power_on && mpc->ctx->dc->debug.enable_mem_low_power.bits.mpc) {
- REG_WAIT(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_SHAPER_MEM_PWR_STATE, 0, 1, max_retries);
- REG_WAIT(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_3DLUT_MEM_PWR_STATE, 0, 1, max_retries);
- }
-
- /*read status is not mandatory, it is just for debugging*/
- REG_GET(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_SHAPER_MEM_PWR_STATE, &power_status_shaper);
- REG_GET(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_3DLUT_MEM_PWR_STATE, &power_status_3dlut);
- } else if (rmu_idx == 1) {
- REG_SET(MPC_RMU_MEM_PWR_CTRL, 0,
- MPC_RMU1_MEM_PWR_DIS, power_on == true ? 1:0);
- if (power_on && mpc->ctx->dc->debug.enable_mem_low_power.bits.mpc) {
- REG_WAIT(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_SHAPER_MEM_PWR_STATE, 0, 1, max_retries);
- REG_WAIT(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_3DLUT_MEM_PWR_STATE, 0, 1, max_retries);
- }
-
- REG_GET(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_SHAPER_MEM_PWR_STATE, &power_status_shaper);
- REG_GET(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_3DLUT_MEM_PWR_STATE, &power_status_3dlut);
- }
- /*TODO Add rmu_idx == 2 for SIENNA_CICHLID */
- if (power_status_shaper != 0 && power_on == true)
- BREAK_TO_DEBUGGER();
-
- if (power_status_3dlut != 0 && power_on == true)
- BREAK_TO_DEBUGGER();
-}
-
-
-
-bool mpc3_program_shaper(
- struct mpc *mpc,
- const struct pwl_params *params,
- uint32_t rmu_idx)
-{
- enum dc_lut_mode current_mode;
- enum dc_lut_mode next_mode;
-
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- if (params == NULL) {
- REG_SET(SHAPER_CONTROL[rmu_idx], 0, MPC_RMU_SHAPER_LUT_MODE, 0);
- return false;
- }
-
- if (mpc->ctx->dc->debug.enable_mem_low_power.bits.mpc)
- mpc3_power_on_shaper_3dlut(mpc, rmu_idx, true);
-
- current_mode = mpc3_get_shaper_current(mpc, rmu_idx);
-
- if (current_mode == LUT_BYPASS || current_mode == LUT_RAM_A)
- next_mode = LUT_RAM_B;
- else
- next_mode = LUT_RAM_A;
-
- mpc3_configure_shaper_lut(mpc, next_mode == LUT_RAM_A, rmu_idx);
-
- if (next_mode == LUT_RAM_A)
- mpc3_program_shaper_luta_settings(mpc, params, rmu_idx);
- else
- mpc3_program_shaper_lutb_settings(mpc, params, rmu_idx);
-
- mpc3_program_shaper_lut(
- mpc, params->rgb_resulted, params->hw_points_num, rmu_idx);
-
- REG_SET(SHAPER_CONTROL[rmu_idx], 0, MPC_RMU_SHAPER_LUT_MODE, next_mode == LUT_RAM_A ? 1:2);
- mpc3_power_on_shaper_3dlut(mpc, rmu_idx, false);
-
- return true;
-}
-
-static void mpc3_set_3dlut_mode(
- struct mpc *mpc,
- enum dc_lut_mode mode,
- bool is_color_channel_12bits,
- bool is_lut_size17x17x17,
- uint32_t rmu_idx)
-{
- uint32_t lut_mode;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- if (mode == LUT_BYPASS)
- lut_mode = 0;
- else if (mode == LUT_RAM_A)
- lut_mode = 1;
- else
- lut_mode = 2;
-
- REG_UPDATE_2(RMU_3DLUT_MODE[rmu_idx],
- MPC_RMU_3DLUT_MODE, lut_mode,
- MPC_RMU_3DLUT_SIZE, is_lut_size17x17x17 == true ? 0 : 1);
-}
-
-static enum dc_lut_mode get3dlut_config(
- struct mpc *mpc,
- bool *is_17x17x17,
- bool *is_12bits_color_channel,
- int rmu_idx)
-{
- uint32_t i_mode, i_enable_10bits, lut_size;
- enum dc_lut_mode mode;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_GET(RMU_3DLUT_MODE[rmu_idx],
- MPC_RMU_3DLUT_MODE_CURRENT, &i_mode);
-
- REG_GET(RMU_3DLUT_READ_WRITE_CONTROL[rmu_idx],
- MPC_RMU_3DLUT_30BIT_EN, &i_enable_10bits);
-
- switch (i_mode) {
- case 0:
- mode = LUT_BYPASS;
- break;
- case 1:
- mode = LUT_RAM_A;
- break;
- case 2:
- mode = LUT_RAM_B;
- break;
- default:
- mode = LUT_BYPASS;
- break;
- }
- if (i_enable_10bits > 0)
- *is_12bits_color_channel = false;
- else
- *is_12bits_color_channel = true;
-
- REG_GET(RMU_3DLUT_MODE[rmu_idx], MPC_RMU_3DLUT_SIZE, &lut_size);
-
- if (lut_size == 0)
- *is_17x17x17 = true;
- else
- *is_17x17x17 = false;
-
- return mode;
-}
-
-static void mpc3_select_3dlut_ram(
- struct mpc *mpc,
- enum dc_lut_mode mode,
- bool is_color_channel_12bits,
- uint32_t rmu_idx)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_UPDATE_2(RMU_3DLUT_READ_WRITE_CONTROL[rmu_idx],
- MPC_RMU_3DLUT_RAM_SEL, mode == LUT_RAM_A ? 0 : 1,
- MPC_RMU_3DLUT_30BIT_EN, is_color_channel_12bits == true ? 0:1);
-}
-
-static void mpc3_select_3dlut_ram_mask(
- struct mpc *mpc,
- uint32_t ram_selection_mask,
- uint32_t rmu_idx)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- REG_UPDATE(RMU_3DLUT_READ_WRITE_CONTROL[rmu_idx], MPC_RMU_3DLUT_WRITE_EN_MASK,
- ram_selection_mask);
- REG_SET(RMU_3DLUT_INDEX[rmu_idx], 0, MPC_RMU_3DLUT_INDEX, 0);
-}
-
-static void mpc3_set3dlut_ram12(
- struct mpc *mpc,
- const struct dc_rgb *lut,
- uint32_t entries,
- uint32_t rmu_idx)
-{
- uint32_t i, red, green, blue, red1, green1, blue1;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- for (i = 0 ; i < entries; i += 2) {
- red = lut[i].red<<4;
- green = lut[i].green<<4;
- blue = lut[i].blue<<4;
- red1 = lut[i+1].red<<4;
- green1 = lut[i+1].green<<4;
- blue1 = lut[i+1].blue<<4;
-
- REG_SET_2(RMU_3DLUT_DATA[rmu_idx], 0,
- MPC_RMU_3DLUT_DATA0, red,
- MPC_RMU_3DLUT_DATA1, red1);
-
- REG_SET_2(RMU_3DLUT_DATA[rmu_idx], 0,
- MPC_RMU_3DLUT_DATA0, green,
- MPC_RMU_3DLUT_DATA1, green1);
-
- REG_SET_2(RMU_3DLUT_DATA[rmu_idx], 0,
- MPC_RMU_3DLUT_DATA0, blue,
- MPC_RMU_3DLUT_DATA1, blue1);
- }
-}
-
-static void mpc3_set3dlut_ram10(
- struct mpc *mpc,
- const struct dc_rgb *lut,
- uint32_t entries,
- uint32_t rmu_idx)
-{
- uint32_t i, red, green, blue, value;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- for (i = 0; i < entries; i++) {
- red = lut[i].red;
- green = lut[i].green;
- blue = lut[i].blue;
- //should we shift red 22bit and green 12? ask Nvenko
- value = (red<<20) | (green<<10) | blue;
-
- REG_SET(RMU_3DLUT_DATA_30BIT[rmu_idx], 0, MPC_RMU_3DLUT_DATA_30BIT, value);
- }
-
-}
-
-
-void mpc3_init_mpcc(struct mpcc *mpcc, int mpcc_inst)
-{
- mpcc->mpcc_id = mpcc_inst;
- mpcc->dpp_id = 0xf;
- mpcc->mpcc_bot = NULL;
- mpcc->blnd_cfg.overlap_only = false;
- mpcc->blnd_cfg.global_alpha = 0xff;
- mpcc->blnd_cfg.global_gain = 0xff;
- mpcc->blnd_cfg.background_color_bpc = 4;
- mpcc->blnd_cfg.bottom_gain_mode = 0;
- mpcc->blnd_cfg.top_gain = 0x1f000;
- mpcc->blnd_cfg.bottom_inside_gain = 0x1f000;
- mpcc->blnd_cfg.bottom_outside_gain = 0x1f000;
- mpcc->sm_cfg.enable = false;
- mpcc->shared_bottom = false;
-}
-
-static void program_gamut_remap(
- struct dcn30_mpc *mpc30,
- int mpcc_id,
- const uint16_t *regval,
- int select)
-{
- uint16_t selection = 0;
- struct color_matrices_reg gam_regs;
-
- if (regval == NULL || select == GAMUT_REMAP_BYPASS) {
- REG_SET(MPCC_GAMUT_REMAP_MODE[mpcc_id], 0,
- MPCC_GAMUT_REMAP_MODE, GAMUT_REMAP_BYPASS);
- return;
- }
- switch (select) {
- case GAMUT_REMAP_COEFF:
- selection = 1;
- break;
- /*this corresponds to GAMUT_REMAP coefficients set B
- * we don't have common coefficient sets in dcn3ag/dcn3
- */
- case GAMUT_REMAP_COMA_COEFF:
- selection = 2;
- break;
- default:
- break;
- }
-
- gam_regs.shifts.csc_c11 = mpc30->mpc_shift->MPCC_GAMUT_REMAP_C11_A;
- gam_regs.masks.csc_c11 = mpc30->mpc_mask->MPCC_GAMUT_REMAP_C11_A;
- gam_regs.shifts.csc_c12 = mpc30->mpc_shift->MPCC_GAMUT_REMAP_C12_A;
- gam_regs.masks.csc_c12 = mpc30->mpc_mask->MPCC_GAMUT_REMAP_C12_A;
-
-
- if (select == GAMUT_REMAP_COEFF) {
- gam_regs.csc_c11_c12 = REG(MPC_GAMUT_REMAP_C11_C12_A[mpcc_id]);
- gam_regs.csc_c33_c34 = REG(MPC_GAMUT_REMAP_C33_C34_A[mpcc_id]);
-
- cm_helper_program_color_matrices(
- mpc30->base.ctx,
- regval,
- &gam_regs);
-
- } else if (select == GAMUT_REMAP_COMA_COEFF) {
-
- gam_regs.csc_c11_c12 = REG(MPC_GAMUT_REMAP_C11_C12_B[mpcc_id]);
- gam_regs.csc_c33_c34 = REG(MPC_GAMUT_REMAP_C33_C34_B[mpcc_id]);
-
- cm_helper_program_color_matrices(
- mpc30->base.ctx,
- regval,
- &gam_regs);
-
- }
- //select coefficient set to use
- REG_SET(MPCC_GAMUT_REMAP_MODE[mpcc_id], 0,
- MPCC_GAMUT_REMAP_MODE, selection);
-}
-
-void mpc3_set_gamut_remap(
- struct mpc *mpc,
- int mpcc_id,
- const struct mpc_grph_gamut_adjustment *adjust)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- int i = 0;
- int gamut_mode;
-
- if (adjust->gamut_adjust_type != GRAPHICS_GAMUT_ADJUST_TYPE_SW)
- program_gamut_remap(mpc30, mpcc_id, NULL, GAMUT_REMAP_BYPASS);
- else {
- struct fixed31_32 arr_matrix[12];
- uint16_t arr_reg_val[12];
-
- for (i = 0; i < 12; i++)
- arr_matrix[i] = adjust->temperature_matrix[i];
-
- convert_float_matrix(
- arr_reg_val, arr_matrix, 12);
-
- //current coefficient set in use
- REG_GET(MPCC_GAMUT_REMAP_MODE[mpcc_id], MPCC_GAMUT_REMAP_MODE_CURRENT, &gamut_mode);
-
- if (gamut_mode == 0)
- gamut_mode = 1; //use coefficient set A
- else if (gamut_mode == 1)
- gamut_mode = 2;
- else
- gamut_mode = 1;
-
- program_gamut_remap(mpc30, mpcc_id, arr_reg_val, gamut_mode);
- }
-}
-
-static void read_gamut_remap(struct dcn30_mpc *mpc30,
- int mpcc_id,
- uint16_t *regval,
- uint32_t *select)
-{
- struct color_matrices_reg gam_regs;
-
- //current coefficient set in use
- REG_GET(MPCC_GAMUT_REMAP_MODE[mpcc_id], MPCC_GAMUT_REMAP_MODE_CURRENT, select);
-
- gam_regs.shifts.csc_c11 = mpc30->mpc_shift->MPCC_GAMUT_REMAP_C11_A;
- gam_regs.masks.csc_c11 = mpc30->mpc_mask->MPCC_GAMUT_REMAP_C11_A;
- gam_regs.shifts.csc_c12 = mpc30->mpc_shift->MPCC_GAMUT_REMAP_C12_A;
- gam_regs.masks.csc_c12 = mpc30->mpc_mask->MPCC_GAMUT_REMAP_C12_A;
-
- if (*select == GAMUT_REMAP_COEFF) {
- gam_regs.csc_c11_c12 = REG(MPC_GAMUT_REMAP_C11_C12_A[mpcc_id]);
- gam_regs.csc_c33_c34 = REG(MPC_GAMUT_REMAP_C33_C34_A[mpcc_id]);
-
- cm_helper_read_color_matrices(
- mpc30->base.ctx,
- regval,
- &gam_regs);
-
- } else if (*select == GAMUT_REMAP_COMA_COEFF) {
-
- gam_regs.csc_c11_c12 = REG(MPC_GAMUT_REMAP_C11_C12_B[mpcc_id]);
- gam_regs.csc_c33_c34 = REG(MPC_GAMUT_REMAP_C33_C34_B[mpcc_id]);
-
- cm_helper_read_color_matrices(
- mpc30->base.ctx,
- regval,
- &gam_regs);
-
- }
-
-}
-
-void mpc3_get_gamut_remap(struct mpc *mpc,
- int mpcc_id,
- struct mpc_grph_gamut_adjustment *adjust)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- uint16_t arr_reg_val[12];
- int select;
-
- read_gamut_remap(mpc30, mpcc_id, arr_reg_val, &select);
-
- if (select == GAMUT_REMAP_BYPASS) {
- adjust->gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_BYPASS;
- return;
- }
-
- adjust->gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_SW;
- convert_hw_matrix(adjust->temperature_matrix,
- arr_reg_val, ARRAY_SIZE(arr_reg_val));
-}
-
-bool mpc3_program_3dlut(
- struct mpc *mpc,
- const struct tetrahedral_params *params,
- int rmu_idx)
-{
- enum dc_lut_mode mode;
- bool is_17x17x17;
- bool is_12bits_color_channel;
- const struct dc_rgb *lut0;
- const struct dc_rgb *lut1;
- const struct dc_rgb *lut2;
- const struct dc_rgb *lut3;
- int lut_size0;
- int lut_size;
-
- if (params == NULL) {
- mpc3_set_3dlut_mode(mpc, LUT_BYPASS, false, false, rmu_idx);
- return false;
- }
- mpc3_power_on_shaper_3dlut(mpc, rmu_idx, true);
-
- mode = get3dlut_config(mpc, &is_17x17x17, &is_12bits_color_channel, rmu_idx);
-
- if (mode == LUT_BYPASS || mode == LUT_RAM_B)
- mode = LUT_RAM_A;
- else
- mode = LUT_RAM_B;
-
- is_17x17x17 = !params->use_tetrahedral_9;
- is_12bits_color_channel = params->use_12bits;
- if (is_17x17x17) {
- lut0 = params->tetrahedral_17.lut0;
- lut1 = params->tetrahedral_17.lut1;
- lut2 = params->tetrahedral_17.lut2;
- lut3 = params->tetrahedral_17.lut3;
- lut_size0 = sizeof(params->tetrahedral_17.lut0)/
- sizeof(params->tetrahedral_17.lut0[0]);
- lut_size = sizeof(params->tetrahedral_17.lut1)/
- sizeof(params->tetrahedral_17.lut1[0]);
- } else {
- lut0 = params->tetrahedral_9.lut0;
- lut1 = params->tetrahedral_9.lut1;
- lut2 = params->tetrahedral_9.lut2;
- lut3 = params->tetrahedral_9.lut3;
- lut_size0 = sizeof(params->tetrahedral_9.lut0)/
- sizeof(params->tetrahedral_9.lut0[0]);
- lut_size = sizeof(params->tetrahedral_9.lut1)/
- sizeof(params->tetrahedral_9.lut1[0]);
- }
-
- mpc3_select_3dlut_ram(mpc, mode,
- is_12bits_color_channel, rmu_idx);
- mpc3_select_3dlut_ram_mask(mpc, 0x1, rmu_idx);
- if (is_12bits_color_channel)
- mpc3_set3dlut_ram12(mpc, lut0, lut_size0, rmu_idx);
- else
- mpc3_set3dlut_ram10(mpc, lut0, lut_size0, rmu_idx);
-
- mpc3_select_3dlut_ram_mask(mpc, 0x2, rmu_idx);
- if (is_12bits_color_channel)
- mpc3_set3dlut_ram12(mpc, lut1, lut_size, rmu_idx);
- else
- mpc3_set3dlut_ram10(mpc, lut1, lut_size, rmu_idx);
-
- mpc3_select_3dlut_ram_mask(mpc, 0x4, rmu_idx);
- if (is_12bits_color_channel)
- mpc3_set3dlut_ram12(mpc, lut2, lut_size, rmu_idx);
- else
- mpc3_set3dlut_ram10(mpc, lut2, lut_size, rmu_idx);
-
- mpc3_select_3dlut_ram_mask(mpc, 0x8, rmu_idx);
- if (is_12bits_color_channel)
- mpc3_set3dlut_ram12(mpc, lut3, lut_size, rmu_idx);
- else
- mpc3_set3dlut_ram10(mpc, lut3, lut_size, rmu_idx);
-
- mpc3_set_3dlut_mode(mpc, mode, is_12bits_color_channel,
- is_17x17x17, rmu_idx);
-
- if (mpc->ctx->dc->debug.enable_mem_low_power.bits.mpc)
- mpc3_power_on_shaper_3dlut(mpc, rmu_idx, false);
-
- return true;
-}
-
-void mpc3_set_output_csc(
- struct mpc *mpc,
- int opp_id,
- const uint16_t *regval,
- enum mpc_output_csc_mode ocsc_mode)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- struct color_matrices_reg ocsc_regs;
-
- REG_WRITE(MPC_OUT_CSC_COEF_FORMAT, 0);
-
- REG_SET(CSC_MODE[opp_id], 0, MPC_OCSC_MODE, ocsc_mode);
-
- if (ocsc_mode == MPC_OUTPUT_CSC_DISABLE)
- return;
-
- if (regval == NULL) {
- BREAK_TO_DEBUGGER();
- return;
- }
-
- ocsc_regs.shifts.csc_c11 = mpc30->mpc_shift->MPC_OCSC_C11_A;
- ocsc_regs.masks.csc_c11 = mpc30->mpc_mask->MPC_OCSC_C11_A;
- ocsc_regs.shifts.csc_c12 = mpc30->mpc_shift->MPC_OCSC_C12_A;
- ocsc_regs.masks.csc_c12 = mpc30->mpc_mask->MPC_OCSC_C12_A;
-
- if (ocsc_mode == MPC_OUTPUT_CSC_COEF_A) {
- ocsc_regs.csc_c11_c12 = REG(CSC_C11_C12_A[opp_id]);
- ocsc_regs.csc_c33_c34 = REG(CSC_C33_C34_A[opp_id]);
- } else {
- ocsc_regs.csc_c11_c12 = REG(CSC_C11_C12_B[opp_id]);
- ocsc_regs.csc_c33_c34 = REG(CSC_C33_C34_B[opp_id]);
- }
- cm_helper_program_color_matrices(
- mpc30->base.ctx,
- regval,
- &ocsc_regs);
-}
-
-void mpc3_set_ocsc_default(
- struct mpc *mpc,
- int opp_id,
- enum dc_color_space color_space,
- enum mpc_output_csc_mode ocsc_mode)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- uint32_t arr_size;
- struct color_matrices_reg ocsc_regs;
- const uint16_t *regval = NULL;
-
- REG_WRITE(MPC_OUT_CSC_COEF_FORMAT, 0);
-
- REG_SET(CSC_MODE[opp_id], 0, MPC_OCSC_MODE, ocsc_mode);
- if (ocsc_mode == MPC_OUTPUT_CSC_DISABLE)
- return;
-
- regval = find_color_matrix(color_space, &arr_size);
-
- if (regval == NULL) {
- BREAK_TO_DEBUGGER();
- return;
- }
-
- ocsc_regs.shifts.csc_c11 = mpc30->mpc_shift->MPC_OCSC_C11_A;
- ocsc_regs.masks.csc_c11 = mpc30->mpc_mask->MPC_OCSC_C11_A;
- ocsc_regs.shifts.csc_c12 = mpc30->mpc_shift->MPC_OCSC_C12_A;
- ocsc_regs.masks.csc_c12 = mpc30->mpc_mask->MPC_OCSC_C12_A;
-
-
- if (ocsc_mode == MPC_OUTPUT_CSC_COEF_A) {
- ocsc_regs.csc_c11_c12 = REG(CSC_C11_C12_A[opp_id]);
- ocsc_regs.csc_c33_c34 = REG(CSC_C33_C34_A[opp_id]);
- } else {
- ocsc_regs.csc_c11_c12 = REG(CSC_C11_C12_B[opp_id]);
- ocsc_regs.csc_c33_c34 = REG(CSC_C33_C34_B[opp_id]);
- }
-
- cm_helper_program_color_matrices(
- mpc30->base.ctx,
- regval,
- &ocsc_regs);
-}
-
-void mpc3_set_rmu_mux(
- struct mpc *mpc,
- int rmu_idx,
- int value)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- if (rmu_idx == 0)
- REG_UPDATE(MPC_RMU_CONTROL, MPC_RMU0_MUX, value);
- else if (rmu_idx == 1)
- REG_UPDATE(MPC_RMU_CONTROL, MPC_RMU1_MUX, value);
-
-}
-
-uint32_t mpc3_get_rmu_mux_status(
- struct mpc *mpc,
- int rmu_idx)
-{
- uint32_t status = 0xf;
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
-
- if (rmu_idx == 0)
- REG_GET(MPC_RMU_CONTROL, MPC_RMU0_MUX_STATUS, &status);
- else if (rmu_idx == 1)
- REG_GET(MPC_RMU_CONTROL, MPC_RMU1_MUX_STATUS, &status);
-
- return status;
-}
-
-uint32_t mpcc3_acquire_rmu(struct mpc *mpc, int mpcc_id, int rmu_idx)
-{
- uint32_t rmu_status;
-
- //determine if this mpcc is already multiplexed to an RMU unit
- rmu_status = mpc3_get_rmu_mux_status(mpc, rmu_idx);
- if (rmu_status == mpcc_id)
- //return rmu_idx of pre_acquired rmu unit
- return rmu_idx;
-
- if (rmu_status == 0xf) {//rmu unit is disabled
- mpc3_set_rmu_mux(mpc, rmu_idx, mpcc_id);
- return rmu_idx;
- }
-
- //no vacant RMU units or invalid parameters acquire_post_bldn_3dlut
- return -1;
-}
-
-static int mpcc3_release_rmu(struct mpc *mpc, int mpcc_id)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- int rmu_idx;
- uint32_t rmu_status;
- int released_rmu = -1;
-
- for (rmu_idx = 0; rmu_idx < mpc30->num_rmu; rmu_idx++) {
- rmu_status = mpc3_get_rmu_mux_status(mpc, rmu_idx);
- if (rmu_status == mpcc_id) {
- mpc3_set_rmu_mux(mpc, rmu_idx, 0xf);
- released_rmu = rmu_idx;
- break;
- }
- }
- return released_rmu;
-
-}
-
-static void mpc3_set_mpc_mem_lp_mode(struct mpc *mpc)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- int mpcc_id;
-
- if (mpc->ctx->dc->debug.enable_mem_low_power.bits.mpc) {
- if (mpc30->mpc_mask->MPC_RMU0_MEM_LOW_PWR_MODE && mpc30->mpc_mask->MPC_RMU1_MEM_LOW_PWR_MODE) {
- REG_UPDATE(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_LOW_PWR_MODE, 3);
- REG_UPDATE(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_MEM_LOW_PWR_MODE, 3);
- }
-
- if (mpc30->mpc_mask->MPCC_OGAM_MEM_LOW_PWR_MODE) {
- for (mpcc_id = 0; mpcc_id < mpc30->num_mpcc; mpcc_id++)
- REG_UPDATE(MPCC_MEM_PWR_CTRL[mpcc_id], MPCC_OGAM_MEM_LOW_PWR_MODE, 3);
- }
- }
-}
-
-static void mpc3_read_mpcc_state(
- struct mpc *mpc,
- int mpcc_inst,
- struct mpcc_state *s)
-{
- struct dcn30_mpc *mpc30 = TO_DCN30_MPC(mpc);
- uint32_t rmu_status = 0xf;
-
- REG_GET(MPCC_OPP_ID[mpcc_inst], MPCC_OPP_ID, &s->opp_id);
- REG_GET(MPCC_TOP_SEL[mpcc_inst], MPCC_TOP_SEL, &s->dpp_id);
- REG_GET(MPCC_BOT_SEL[mpcc_inst], MPCC_BOT_SEL, &s->bot_mpcc_id);
- REG_GET_4(MPCC_CONTROL[mpcc_inst], MPCC_MODE, &s->mode,
- MPCC_ALPHA_BLND_MODE, &s->alpha_mode,
- MPCC_ALPHA_MULTIPLIED_MODE, &s->pre_multiplied_alpha,
- MPCC_BLND_ACTIVE_OVERLAP_ONLY, &s->overlap_only);
- REG_GET_2(MPCC_STATUS[mpcc_inst], MPCC_IDLE, &s->idle,
- MPCC_BUSY, &s->busy);
-
- /* Color blocks state */
- REG_GET(MPC_RMU_CONTROL, MPC_RMU0_MUX_STATUS, &rmu_status);
-
- if (rmu_status == mpcc_inst) {
- REG_GET(SHAPER_CONTROL[0],
- MPC_RMU_SHAPER_LUT_MODE_CURRENT, &s->shaper_lut_mode);
- REG_GET(RMU_3DLUT_MODE[0],
- MPC_RMU_3DLUT_MODE_CURRENT, &s->lut3d_mode);
- REG_GET(RMU_3DLUT_READ_WRITE_CONTROL[0],
- MPC_RMU_3DLUT_30BIT_EN, &s->lut3d_bit_depth);
- REG_GET(RMU_3DLUT_MODE[0],
- MPC_RMU_3DLUT_SIZE, &s->lut3d_size);
- } else {
- REG_GET(SHAPER_CONTROL[1],
- MPC_RMU_SHAPER_LUT_MODE_CURRENT, &s->shaper_lut_mode);
- REG_GET(RMU_3DLUT_MODE[1],
- MPC_RMU_3DLUT_MODE_CURRENT, &s->lut3d_mode);
- REG_GET(RMU_3DLUT_READ_WRITE_CONTROL[1],
- MPC_RMU_3DLUT_30BIT_EN, &s->lut3d_bit_depth);
- REG_GET(RMU_3DLUT_MODE[1],
- MPC_RMU_3DLUT_SIZE, &s->lut3d_size);
- }
-
- REG_GET_2(MPCC_OGAM_CONTROL[mpcc_inst],
- MPCC_OGAM_MODE_CURRENT, &s->rgam_mode,
- MPCC_OGAM_SELECT_CURRENT, &s->rgam_lut);
-}
-
-static const struct mpc_funcs dcn30_mpc_funcs = {
- .read_mpcc_state = mpc3_read_mpcc_state,
- .insert_plane = mpc1_insert_plane,
- .remove_mpcc = mpc1_remove_mpcc,
- .mpc_init = mpc3_mpc_init,
- .mpc_init_single_inst = mpc3_mpc_init_single_inst,
- .update_blending = mpc2_update_blending,
- .cursor_lock = mpc1_cursor_lock,
- .get_mpcc_for_dpp = mpc1_get_mpcc_for_dpp,
- .wait_for_idle = mpc2_assert_idle_mpcc,
- .assert_mpcc_idle_before_connect = mpc2_assert_mpcc_idle_before_connect,
- .init_mpcc_list_from_hw = mpc1_init_mpcc_list_from_hw,
- .set_denorm = mpc3_set_denorm,
- .set_denorm_clamp = mpc3_set_denorm_clamp,
- .set_output_csc = mpc3_set_output_csc,
- .set_ocsc_default = mpc3_set_ocsc_default,
- .set_output_gamma = mpc3_set_output_gamma,
- .insert_plane_to_secondary = NULL,
- .remove_mpcc_from_secondary = NULL,
- .set_dwb_mux = mpc3_set_dwb_mux,
- .disable_dwb_mux = mpc3_disable_dwb_mux,
- .is_dwb_idle = mpc3_is_dwb_idle,
- .set_gamut_remap = mpc3_set_gamut_remap,
- .program_shaper = mpc3_program_shaper,
- .acquire_rmu = mpcc3_acquire_rmu,
- .program_3dlut = mpc3_program_3dlut,
- .release_rmu = mpcc3_release_rmu,
- .power_on_mpc_mem_pwr = mpc3_power_on_ogam_lut,
- .get_mpc_out_mux = mpc1_get_mpc_out_mux,
- .set_bg_color = mpc1_set_bg_color,
- .set_mpc_mem_lp_mode = mpc3_set_mpc_mem_lp_mode,
-};
-
-void dcn30_mpc_construct(struct dcn30_mpc *mpc30,
- struct dc_context *ctx,
- const struct dcn30_mpc_registers *mpc_regs,
- const struct dcn30_mpc_shift *mpc_shift,
- const struct dcn30_mpc_mask *mpc_mask,
- int num_mpcc,
- int num_rmu)
-{
- int i;
-
- mpc30->base.ctx = ctx;
-
- mpc30->base.funcs = &dcn30_mpc_funcs;
-
- mpc30->mpc_regs = mpc_regs;
- mpc30->mpc_shift = mpc_shift;
- mpc30->mpc_mask = mpc_mask;
-
- mpc30->mpcc_in_use_mask = 0;
- mpc30->num_mpcc = num_mpcc;
- mpc30->num_rmu = num_rmu;
-
- for (i = 0; i < MAX_MPCC; i++)
- mpc3_init_mpcc(&mpc30->base.mpcc_array[i], i);
-}
-
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.h
deleted file mode 100644
index ce93003dae01..000000000000
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_mpc.h
+++ /dev/null
@@ -1,1098 +0,0 @@
-/* Copyright 2020 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#ifndef __DC_MPCC_DCN30_H__
-#define __DC_MPCC_DCN30_H__
-
-#include "dcn20/dcn20_mpc.h"
-
-#define MAX_RMU 3
-
-#define TO_DCN30_MPC(mpc_base) \
- container_of(mpc_base, struct dcn30_mpc, base)
-
-#ifdef SRII_MPC_RMU
-#undef SRII_MPC_RMU
-
-#define SRII_MPC_RMU(reg_name, block, id)\
- .RMU##_##reg_name[id] = BASE(mm ## block ## id ## _ ## reg_name ## _BASE_IDX) + \
- mm ## block ## id ## _ ## reg_name
-
-#endif
-
-
-#define MPC_REG_LIST_DCN3_0(inst)\
- MPC_COMMON_REG_LIST_DCN1_0(inst),\
- SRII(MPCC_TOP_GAIN, MPCC, inst),\
- SRII(MPCC_BOT_GAIN_INSIDE, MPCC, inst),\
- SRII(MPCC_BOT_GAIN_OUTSIDE, MPCC, inst),\
- SRII(MPCC_MEM_PWR_CTRL, MPCC, inst),\
- SRII(MPCC_OGAM_LUT_INDEX, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_LUT_DATA, MPCC_OGAM, inst), \
- SRII(MPCC_GAMUT_REMAP_COEF_FORMAT, MPCC_OGAM, inst),\
- SRII(MPCC_GAMUT_REMAP_MODE, MPCC_OGAM, inst),\
- SRII(MPC_GAMUT_REMAP_C11_C12_A, MPCC_OGAM, inst),\
- SRII(MPC_GAMUT_REMAP_C33_C34_A, MPCC_OGAM, inst),\
- SRII(MPC_GAMUT_REMAP_C11_C12_B, MPCC_OGAM, inst),\
- SRII(MPC_GAMUT_REMAP_C33_C34_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_CNTL_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_CNTL_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_CNTL_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_SLOPE_CNTL_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_SLOPE_CNTL_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_SLOPE_CNTL_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_END_CNTL1_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_END_CNTL2_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_END_CNTL1_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_END_CNTL2_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_END_CNTL1_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_END_CNTL2_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_REGION_32_33, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_OFFSET_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_OFFSET_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_OFFSET_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_BASE_CNTL_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_BASE_CNTL_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMA_START_BASE_CNTL_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_CNTL_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_CNTL_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_CNTL_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_SLOPE_CNTL_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_SLOPE_CNTL_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_SLOPE_CNTL_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_END_CNTL1_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_END_CNTL2_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_END_CNTL1_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_END_CNTL2_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_END_CNTL1_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_END_CNTL2_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_REGION_0_1, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_REGION_32_33, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_OFFSET_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_OFFSET_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_OFFSET_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_BASE_CNTL_B, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_BASE_CNTL_G, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_RAMB_START_BASE_CNTL_R, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_CONTROL, MPCC_OGAM, inst),\
- SRII(MPCC_OGAM_LUT_CONTROL, MPCC_OGAM, inst)
-
-#define MPC_OUT_MUX_REG_LIST_DCN3_0(inst) \
- MPC_OUT_MUX_COMMON_REG_LIST_DCN1_0(inst),\
- SRII(CSC_MODE, MPC_OUT, inst),\
- SRII(CSC_C11_C12_A, MPC_OUT, inst),\
- SRII(CSC_C33_C34_A, MPC_OUT, inst),\
- SRII(CSC_C11_C12_B, MPC_OUT, inst),\
- SRII(CSC_C33_C34_B, MPC_OUT, inst),\
- SRII(DENORM_CONTROL, MPC_OUT, inst),\
- SRII(DENORM_CLAMP_G_Y, MPC_OUT, inst),\
- SRII(DENORM_CLAMP_B_CB, MPC_OUT, inst), \
- SR(MPC_OUT_CSC_COEF_FORMAT)
-
-#define MPC_RMU_GLOBAL_REG_LIST_DCN3AG \
- SR(MPC_RMU_CONTROL),\
- SR(MPC_RMU_MEM_PWR_CTRL)
-
-#define MPC_RMU_REG_LIST_DCN3AG(inst) \
- SRII(SHAPER_CONTROL, MPC_RMU, inst),\
- SRII(SHAPER_OFFSET_R, MPC_RMU, inst),\
- SRII(SHAPER_OFFSET_G, MPC_RMU, inst),\
- SRII(SHAPER_OFFSET_B, MPC_RMU, inst),\
- SRII(SHAPER_SCALE_R, MPC_RMU, inst),\
- SRII(SHAPER_SCALE_G_B, MPC_RMU, inst),\
- SRII(SHAPER_LUT_INDEX, MPC_RMU, inst),\
- SRII(SHAPER_LUT_DATA, MPC_RMU, inst),\
- SRII(SHAPER_LUT_WRITE_EN_MASK, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_START_CNTL_B, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_START_CNTL_G, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_START_CNTL_R, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_END_CNTL_B, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_END_CNTL_G, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_END_CNTL_R, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_0_1, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_2_3, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_4_5, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_6_7, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_8_9, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_10_11, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_12_13, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_14_15, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_16_17, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_18_19, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_20_21, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_22_23, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_24_25, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_26_27, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_28_29, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_30_31, MPC_RMU, inst),\
- SRII(SHAPER_RAMA_REGION_32_33, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_START_CNTL_B, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_START_CNTL_G, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_START_CNTL_R, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_END_CNTL_B, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_END_CNTL_G, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_END_CNTL_R, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_0_1, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_2_3, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_4_5, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_6_7, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_8_9, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_10_11, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_12_13, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_14_15, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_16_17, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_18_19, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_20_21, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_22_23, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_24_25, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_26_27, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_28_29, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_30_31, MPC_RMU, inst),\
- SRII(SHAPER_RAMB_REGION_32_33, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_MODE, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_INDEX, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_DATA, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_DATA_30BIT, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_READ_WRITE_CONTROL, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_OUT_NORM_FACTOR, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_OUT_OFFSET_R, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_OUT_OFFSET_G, MPC_RMU, inst),\
- SRII_MPC_RMU(3DLUT_OUT_OFFSET_B, MPC_RMU, inst)
-
-
-#define MPC_DWB_MUX_REG_LIST_DCN3_0(inst) \
- SRII_DWB(DWB_MUX, MUX, MPC_DWB, inst)
-
-#define MPC_REG_VARIABLE_LIST_DCN3_0 \
- MPC_REG_VARIABLE_LIST_DCN2_0 \
- uint32_t DWB_MUX[MAX_DWB]; \
- uint32_t MPCC_GAMUT_REMAP_COEF_FORMAT[MAX_MPCC]; \
- uint32_t MPCC_GAMUT_REMAP_MODE[MAX_MPCC]; \
- uint32_t MPC_GAMUT_REMAP_C11_C12_A[MAX_MPCC]; \
- uint32_t MPC_GAMUT_REMAP_C33_C34_A[MAX_MPCC]; \
- uint32_t MPC_GAMUT_REMAP_C11_C12_B[MAX_MPCC]; \
- uint32_t MPC_GAMUT_REMAP_C33_C34_B[MAX_MPCC]; \
- uint32_t MPC_RMU_CONTROL; \
- uint32_t MPC_RMU_MEM_PWR_CTRL; \
- uint32_t SHAPER_CONTROL[MAX_RMU]; \
- uint32_t SHAPER_OFFSET_R[MAX_RMU]; \
- uint32_t SHAPER_OFFSET_G[MAX_RMU]; \
- uint32_t SHAPER_OFFSET_B[MAX_RMU]; \
- uint32_t SHAPER_SCALE_R[MAX_RMU]; \
- uint32_t SHAPER_SCALE_G_B[MAX_RMU]; \
- uint32_t SHAPER_LUT_INDEX[MAX_RMU]; \
- uint32_t SHAPER_LUT_DATA[MAX_RMU]; \
- uint32_t SHAPER_LUT_WRITE_EN_MASK[MAX_RMU]; \
- uint32_t SHAPER_RAMA_START_CNTL_B[MAX_RMU]; \
- uint32_t SHAPER_RAMA_START_CNTL_G[MAX_RMU]; \
- uint32_t SHAPER_RAMA_START_CNTL_R[MAX_RMU]; \
- uint32_t SHAPER_RAMA_END_CNTL_B[MAX_RMU]; \
- uint32_t SHAPER_RAMA_END_CNTL_G[MAX_RMU]; \
- uint32_t SHAPER_RAMA_END_CNTL_R[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_0_1[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_2_3[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_4_5[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_6_7[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_8_9[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_10_11[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_12_13[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_14_15[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_16_17[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_18_19[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_20_21[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_22_23[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_24_25[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_26_27[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_28_29[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_30_31[MAX_RMU]; \
- uint32_t SHAPER_RAMA_REGION_32_33[MAX_RMU]; \
- uint32_t MPCC_OGAM_RAMA_START_SLOPE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_START_SLOPE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_START_SLOPE_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_OFFSET_B[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_OFFSET_G[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_OFFSET_R[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_START_BASE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_START_BASE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMA_START_BASE_CNTL_R[MAX_MPCC];\
- uint32_t SHAPER_RAMB_START_CNTL_B[MAX_RMU]; \
- uint32_t SHAPER_RAMB_START_CNTL_G[MAX_RMU]; \
- uint32_t SHAPER_RAMB_START_CNTL_R[MAX_RMU]; \
- uint32_t SHAPER_RAMB_END_CNTL_B[MAX_RMU]; \
- uint32_t SHAPER_RAMB_END_CNTL_G[MAX_RMU]; \
- uint32_t SHAPER_RAMB_END_CNTL_R[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_0_1[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_2_3[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_4_5[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_6_7[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_8_9[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_10_11[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_12_13[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_14_15[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_16_17[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_18_19[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_20_21[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_22_23[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_24_25[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_26_27[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_28_29[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_30_31[MAX_RMU]; \
- uint32_t SHAPER_RAMB_REGION_32_33[MAX_RMU]; \
- uint32_t RMU_3DLUT_MODE[MAX_RMU]; \
- uint32_t RMU_3DLUT_INDEX[MAX_RMU]; \
- uint32_t RMU_3DLUT_DATA[MAX_RMU]; \
- uint32_t RMU_3DLUT_DATA_30BIT[MAX_RMU]; \
- uint32_t RMU_3DLUT_READ_WRITE_CONTROL[MAX_RMU]; \
- uint32_t RMU_3DLUT_OUT_NORM_FACTOR[MAX_RMU]; \
- uint32_t RMU_3DLUT_OUT_OFFSET_R[MAX_RMU]; \
- uint32_t RMU_3DLUT_OUT_OFFSET_G[MAX_RMU]; \
- uint32_t RMU_3DLUT_OUT_OFFSET_B[MAX_RMU]; \
- uint32_t MPCC_OGAM_RAMB_START_SLOPE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_START_SLOPE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_START_SLOPE_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_OGAM_CONTROL[MAX_MPCC]; \
- uint32_t MPCC_OGAM_LUT_CONTROL[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_OFFSET_B[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_OFFSET_G[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_OFFSET_R[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_START_BASE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_START_BASE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_OGAM_RAMB_START_BASE_CNTL_R[MAX_MPCC]; \
- uint32_t MPC_OUT_CSC_COEF_FORMAT
-
-#define MPC_REG_VARIABLE_LIST_DCN32 \
- uint32_t MPCC_MOVABLE_CM_LOCATION_CONTROL[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_CONTROL[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_OFFSET_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_OFFSET_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_OFFSET_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_SCALE_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_SCALE_G_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_LUT_INDEX[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_LUT_DATA[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_LUT_WRITE_EN_MASK[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_START_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_START_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_START_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_END_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_END_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_END_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_0_1[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_2_3[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_4_5[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_6_7[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_8_9[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_10_11[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_12_13[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_14_15[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_16_17[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_18_19[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_20_21[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_22_23[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_24_25[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_26_27[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_28_29[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_30_31[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMA_REGION_32_33[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_START_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_START_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_START_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_END_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_END_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_END_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_0_1[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_2_3[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_4_5[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_6_7[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_8_9[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_10_11[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_12_13[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_14_15[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_16_17[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_18_19[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_20_21[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_22_23[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_24_25[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_26_27[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_28_29[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_30_31[MAX_MPCC]; \
- uint32_t MPCC_MCM_SHAPER_RAMB_REGION_32_33[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_MODE[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_INDEX[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_DATA[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_DATA_30BIT[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_READ_WRITE_CONTROL[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_OUT_NORM_FACTOR[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_OUT_OFFSET_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_OUT_OFFSET_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_3DLUT_OUT_OFFSET_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_CONTROL[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_LUT_INDEX[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_LUT_DATA[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_LUT_CONTROL[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_SLOPE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_SLOPE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_SLOPE_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_BASE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_BASE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_START_BASE_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_END_CNTL1_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_END_CNTL2_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_END_CNTL1_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_END_CNTL2_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_END_CNTL1_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_END_CNTL2_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_OFFSET_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_OFFSET_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_OFFSET_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_0_1[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_2_3[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_4_5[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_6_7[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_8_9[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_10_11[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_12_13[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_14_15[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_16_17[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_18_19[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_20_21[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_22_23[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_24_25[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_26_27[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_28_29[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_30_31[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMA_REGION_32_33[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_SLOPE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_SLOPE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_SLOPE_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_BASE_CNTL_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_BASE_CNTL_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_START_BASE_CNTL_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_END_CNTL1_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_END_CNTL2_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_END_CNTL1_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_END_CNTL2_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_END_CNTL1_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_END_CNTL2_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_OFFSET_B[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_OFFSET_G[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_OFFSET_R[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_0_1[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_2_3[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_4_5[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_6_7[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_8_9[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_10_11[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_12_13[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_14_15[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_16_17[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_18_19[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_20_21[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_22_23[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_24_25[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_26_27[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_28_29[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_30_31[MAX_MPCC]; \
- uint32_t MPCC_MCM_1DLUT_RAMB_REGION_32_33[MAX_MPCC]; \
- uint32_t MPCC_MCM_MEM_PWR_CTRL[MAX_MPCC]
-
-#define MPC_COMMON_MASK_SH_LIST_DCN3_0(mask_sh) \
- MPC_COMMON_MASK_SH_LIST_DCN1_0(mask_sh),\
- SF(MPCC0_MPCC_CONTROL, MPCC_BG_BPC, mask_sh),\
- SF(MPCC0_MPCC_CONTROL, MPCC_BOT_GAIN_MODE, mask_sh),\
- SF(MPCC0_MPCC_TOP_GAIN, MPCC_TOP_GAIN, mask_sh),\
- SF(MPCC0_MPCC_BOT_GAIN_INSIDE, MPCC_BOT_GAIN_INSIDE, mask_sh),\
- SF(MPCC0_MPCC_BOT_GAIN_OUTSIDE, MPCC_BOT_GAIN_OUTSIDE, mask_sh),\
- SF(MPC_OUT0_CSC_MODE, MPC_OCSC_MODE, mask_sh),\
- SF(MPC_OUT0_CSC_C11_C12_A, MPC_OCSC_C11_A, mask_sh),\
- SF(MPC_OUT0_CSC_C11_C12_A, MPC_OCSC_C12_A, mask_sh),\
- SF(MPCC0_MPCC_STATUS, MPCC_DISABLED, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_FORCE, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_DIS, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_STATE, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_MODE, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_CLAMP_MAX_R_CR, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_CLAMP_MIN_R_CR, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_G_Y, MPC_OUT_DENORM_CLAMP_MAX_G_Y, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_G_Y, MPC_OUT_DENORM_CLAMP_MIN_G_Y, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_B_CB, MPC_OUT_DENORM_CLAMP_MAX_B_CB, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_B_CB, MPC_OUT_DENORM_CLAMP_MIN_B_CB, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_MODE, MPCC_GAMUT_REMAP_MODE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_MODE, MPCC_GAMUT_REMAP_MODE_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_COEF_FORMAT, MPCC_GAMUT_REMAP_COEF_FORMAT, mask_sh),\
- SF(MPCC_OGAM0_MPC_GAMUT_REMAP_C11_C12_A, MPCC_GAMUT_REMAP_C11_A, mask_sh),\
- SF(MPCC_OGAM0_MPC_GAMUT_REMAP_C11_C12_A, MPCC_GAMUT_REMAP_C12_A, mask_sh),\
- SF(MPC_DWB0_MUX, MPC_DWB0_MUX, mask_sh),\
- SF(MPC_DWB0_MUX, MPC_DWB0_MUX_STATUS, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL_DISABLE, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_MODE, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_COUNT, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU0_MUX, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU1_MUX, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU0_MUX_STATUS, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU1_MUX_STATUS, mask_sh), \
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL2_B, MPCC_OGAM_RAMA_EXP_REGION_END_SLOPE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL2_B, MPCC_OGAM_RAMA_EXP_REGION_END_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL1_B, MPCC_OGAM_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_SLOPE_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_SLOPE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_BASE_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_BASE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_B, MPCC_OGAM_RAMA_OFFSET_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_G, MPCC_OGAM_RAMA_OFFSET_G, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_R, MPCC_OGAM_RAMA_OFFSET_R, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_INDEX, MPCC_OGAM_LUT_INDEX, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_MODE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_SELECT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_PWL_DISABLE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_MODE_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_SELECT_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_WRITE_COLOR_MASK, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_READ_COLOR_SEL, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_READ_DBG, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_HOST_SEL, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_CONFIG_MODE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_STATUS, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_DATA, MPCC_OGAM_LUT_DATA, mask_sh),\
- SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_MODE, mask_sh),\
- SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_SIZE, mask_sh),\
- SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_MODE_CURRENT, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_WRITE_EN_MASK, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_RAM_SEL, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_30BIT_EN, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_CONFIG_STATUS, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_READ_SEL, mask_sh),\
- SF(MPC_RMU0_3DLUT_INDEX, MPC_RMU_3DLUT_INDEX, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA, MPC_RMU_3DLUT_DATA0, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA, MPC_RMU_3DLUT_DATA1, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA_30BIT, MPC_RMU_3DLUT_DATA_30BIT, mask_sh),\
- SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_LUT_MODE, mask_sh),\
- SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_LUT_MODE_CURRENT, mask_sh),\
- SF(MPC_RMU0_SHAPER_OFFSET_R, MPC_RMU_SHAPER_OFFSET_R, mask_sh),\
- SF(MPC_RMU0_SHAPER_OFFSET_G, MPC_RMU_SHAPER_OFFSET_G, mask_sh),\
- SF(MPC_RMU0_SHAPER_OFFSET_B, MPC_RMU_SHAPER_OFFSET_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_R, MPC_RMU_SHAPER_SCALE_R, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_G_B, MPC_RMU_SHAPER_SCALE_G, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_G_B, MPC_RMU_SHAPER_SCALE_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_INDEX, MPC_RMU_SHAPER_LUT_INDEX, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_DATA, MPC_RMU_SHAPER_LUT_DATA, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_LUT_WRITE_EN_MASK, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_LUT_WRITE_SEL, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_CONFIG_STATUS, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_START_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_START_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_END_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_END_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_PWR_FORCE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_PWR_DIS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_SHAPER_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_3DLUT_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_MEM_PWR_FORCE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_MEM_PWR_DIS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_SHAPER_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_3DLUT_MEM_PWR_STATE, mask_sh),\
- SF(CUR_VUPDATE_LOCK_SET0, CUR_VUPDATE_LOCK_SET, mask_sh)
-
-
-#define MPC_COMMON_MASK_SH_LIST_DCN30(mask_sh) \
- MPC_COMMON_MASK_SH_LIST_DCN1_0(mask_sh),\
- SF(MPCC0_MPCC_CONTROL, MPCC_BG_BPC, mask_sh),\
- SF(MPCC0_MPCC_CONTROL, MPCC_BOT_GAIN_MODE, mask_sh),\
- SF(MPCC0_MPCC_TOP_GAIN, MPCC_TOP_GAIN, mask_sh),\
- SF(MPCC0_MPCC_BOT_GAIN_INSIDE, MPCC_BOT_GAIN_INSIDE, mask_sh),\
- SF(MPCC0_MPCC_BOT_GAIN_OUTSIDE, MPCC_BOT_GAIN_OUTSIDE, mask_sh),\
- SF(MPC_OUT0_CSC_MODE, MPC_OCSC_MODE, mask_sh),\
- SF(MPC_OUT0_CSC_C11_C12_A, MPC_OCSC_C11_A, mask_sh),\
- SF(MPC_OUT0_CSC_C11_C12_A, MPC_OCSC_C12_A, mask_sh),\
- SF(MPCC0_MPCC_STATUS, MPCC_DISABLED, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_FORCE, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_DIS, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_LOW_PWR_MODE, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_STATE, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_MODE, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_CLAMP_MAX_R_CR, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_CLAMP_MIN_R_CR, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_G_Y, MPC_OUT_DENORM_CLAMP_MAX_G_Y, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_G_Y, MPC_OUT_DENORM_CLAMP_MIN_G_Y, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_B_CB, MPC_OUT_DENORM_CLAMP_MAX_B_CB, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_B_CB, MPC_OUT_DENORM_CLAMP_MIN_B_CB, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_MODE, MPCC_GAMUT_REMAP_MODE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_MODE, MPCC_GAMUT_REMAP_MODE_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_COEF_FORMAT, MPCC_GAMUT_REMAP_COEF_FORMAT, mask_sh),\
- SF(MPCC_OGAM0_MPC_GAMUT_REMAP_C11_C12_A, MPCC_GAMUT_REMAP_C11_A, mask_sh),\
- SF(MPCC_OGAM0_MPC_GAMUT_REMAP_C11_C12_A, MPCC_GAMUT_REMAP_C12_A, mask_sh),\
- SF(MPC_DWB0_MUX, MPC_DWB0_MUX, mask_sh),\
- SF(MPC_DWB0_MUX, MPC_DWB0_MUX_STATUS, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL_DISABLE, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_MODE, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_COUNT, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU0_MUX, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU1_MUX, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU0_MUX_STATUS, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU1_MUX_STATUS, mask_sh), \
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL2_B, MPCC_OGAM_RAMA_EXP_REGION_END_SLOPE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL2_B, MPCC_OGAM_RAMA_EXP_REGION_END_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL1_B, MPCC_OGAM_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_SLOPE_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_SLOPE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_BASE_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_BASE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_B, MPCC_OGAM_RAMA_OFFSET_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_G, MPCC_OGAM_RAMA_OFFSET_G, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_R, MPCC_OGAM_RAMA_OFFSET_R, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_INDEX, MPCC_OGAM_LUT_INDEX, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_MODE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_SELECT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_PWL_DISABLE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_MODE_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_SELECT_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_WRITE_COLOR_MASK, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_READ_COLOR_SEL, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_READ_DBG, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_HOST_SEL, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_CONFIG_MODE, mask_sh),\
- /*SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_STATUS, mask_sh),*/\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_DATA, MPCC_OGAM_LUT_DATA, mask_sh),\
- SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_MODE, mask_sh),\
- SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_SIZE, mask_sh),\
- /*SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_MODE_CURRENT, mask_sh),*/\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_WRITE_EN_MASK, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_RAM_SEL, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_30BIT_EN, mask_sh),\
- /*SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_CONFIG_STATUS, mask_sh),*/\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_READ_SEL, mask_sh),\
- SF(MPC_RMU0_3DLUT_INDEX, MPC_RMU_3DLUT_INDEX, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA, MPC_RMU_3DLUT_DATA0, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA, MPC_RMU_3DLUT_DATA1, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA_30BIT, MPC_RMU_3DLUT_DATA_30BIT, mask_sh),\
- SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_LUT_MODE, mask_sh),\
- /*SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_LUT_MODE_CURRENT, mask_sh),*/\
- SF(MPC_RMU0_SHAPER_OFFSET_R, MPC_RMU_SHAPER_OFFSET_R, mask_sh),\
- SF(MPC_RMU0_SHAPER_OFFSET_G, MPC_RMU_SHAPER_OFFSET_G, mask_sh),\
- SF(MPC_RMU0_SHAPER_OFFSET_B, MPC_RMU_SHAPER_OFFSET_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_R, MPC_RMU_SHAPER_SCALE_R, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_G_B, MPC_RMU_SHAPER_SCALE_G, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_G_B, MPC_RMU_SHAPER_SCALE_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_INDEX, MPC_RMU_SHAPER_LUT_INDEX, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_DATA, MPC_RMU_SHAPER_LUT_DATA, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_LUT_WRITE_EN_MASK, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_LUT_WRITE_SEL, mask_sh),\
- /*SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_CONFIG_STATUS, mask_sh),*/\
- SF(MPC_RMU0_SHAPER_RAMA_START_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_START_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_END_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_END_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_PWR_FORCE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_PWR_DIS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_SHAPER_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_3DLUT_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_LOW_PWR_MODE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_MEM_PWR_FORCE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_MEM_PWR_DIS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_SHAPER_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_3DLUT_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU1_MEM_LOW_PWR_MODE, mask_sh),\
- SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_MODE_CURRENT, mask_sh),\
- SF(CUR_VUPDATE_LOCK_SET0, CUR_VUPDATE_LOCK_SET, mask_sh)
-
-
-#define MPC_REG_FIELD_LIST_DCN3_0(type) \
- MPC_REG_FIELD_LIST_DCN2_0(type) \
- type MPC_DWB0_MUX;\
- type MPC_DWB0_MUX_STATUS;\
- type MPC_OUT_RATE_CONTROL;\
- type MPC_OUT_RATE_CONTROL_DISABLE;\
- type MPC_OUT_FLOW_CONTROL_MODE;\
- type MPC_OUT_FLOW_CONTROL_COUNT; \
- type MPCC_GAMUT_REMAP_MODE; \
- type MPCC_GAMUT_REMAP_MODE_CURRENT;\
- type MPCC_GAMUT_REMAP_COEF_FORMAT; \
- type MPCC_GAMUT_REMAP_C11_A; \
- type MPCC_GAMUT_REMAP_C12_A; \
- type MPC_RMU0_MUX; \
- type MPC_RMU1_MUX; \
- type MPC_RMU0_MUX_STATUS; \
- type MPC_RMU1_MUX_STATUS; \
- type MPC_RMU0_MEM_PWR_FORCE;\
- type MPC_RMU0_MEM_PWR_DIS;\
- type MPC_RMU0_MEM_LOW_PWR_MODE;\
- type MPC_RMU0_SHAPER_MEM_PWR_STATE;\
- type MPC_RMU0_3DLUT_MEM_PWR_STATE;\
- type MPC_RMU1_MEM_PWR_FORCE;\
- type MPC_RMU1_MEM_PWR_DIS;\
- type MPC_RMU1_MEM_LOW_PWR_MODE;\
- type MPC_RMU1_SHAPER_MEM_PWR_STATE;\
- type MPC_RMU1_3DLUT_MEM_PWR_STATE;\
- type MPCC_OGAM_RAMA_EXP_REGION_START_SLOPE_B; \
- type MPCC_OGAM_RAMA_EXP_REGION_START_BASE_B;\
- type MPCC_OGAM_RAMA_OFFSET_B;\
- type MPCC_OGAM_RAMA_OFFSET_G;\
- type MPCC_OGAM_RAMA_OFFSET_R;\
- type MPCC_OGAM_SELECT; \
- type MPCC_OGAM_PWL_DISABLE; \
- type MPCC_OGAM_MODE_CURRENT; \
- type MPCC_OGAM_SELECT_CURRENT; \
- type MPCC_OGAM_LUT_WRITE_COLOR_MASK; \
- type MPCC_OGAM_LUT_READ_COLOR_SEL; \
- type MPCC_OGAM_LUT_READ_DBG; \
- type MPCC_OGAM_LUT_HOST_SEL; \
- type MPCC_OGAM_LUT_CONFIG_MODE; \
- type MPCC_OGAM_LUT_STATUS; \
- type MPCC_OGAM_RAMA_START_BASE_CNTL_B;\
- type MPCC_OGAM_MEM_LOW_PWR_MODE;\
- type MPCC_OGAM_MEM_PWR_STATE;\
- type MPC_RMU_3DLUT_MODE; \
- type MPC_RMU_3DLUT_SIZE; \
- type MPC_RMU_3DLUT_MODE_CURRENT; \
- type MPC_RMU_3DLUT_WRITE_EN_MASK;\
- type MPC_RMU_3DLUT_RAM_SEL;\
- type MPC_RMU_3DLUT_30BIT_EN;\
- type MPC_RMU_3DLUT_CONFIG_STATUS;\
- type MPC_RMU_3DLUT_READ_SEL;\
- type MPC_RMU_3DLUT_INDEX;\
- type MPC_RMU_3DLUT_DATA0;\
- type MPC_RMU_3DLUT_DATA1;\
- type MPC_RMU_3DLUT_DATA_30BIT;\
- type MPC_RMU_SHAPER_LUT_MODE;\
- type MPC_RMU_SHAPER_LUT_MODE_CURRENT;\
- type MPC_RMU_SHAPER_OFFSET_R;\
- type MPC_RMU_SHAPER_OFFSET_G;\
- type MPC_RMU_SHAPER_OFFSET_B;\
- type MPC_RMU_SHAPER_SCALE_R;\
- type MPC_RMU_SHAPER_SCALE_G;\
- type MPC_RMU_SHAPER_SCALE_B;\
- type MPC_RMU_SHAPER_LUT_INDEX;\
- type MPC_RMU_SHAPER_LUT_DATA;\
- type MPC_RMU_SHAPER_LUT_WRITE_EN_MASK;\
- type MPC_RMU_SHAPER_LUT_WRITE_SEL;\
- type MPC_RMU_SHAPER_CONFIG_STATUS;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS;\
- type MPC_RMU_SHAPER_MODE_CURRENT
-
-#define MPC_REG_FIELD_LIST_DCN32(type) \
- type MPCC_MOVABLE_CM_LOCATION_CNTL;\
- type MPCC_MOVABLE_CM_LOCATION_CNTL_CURRENT;\
- type MPCC_MCM_SHAPER_MEM_PWR_FORCE;\
- type MPCC_MCM_SHAPER_MEM_PWR_DIS;\
- type MPCC_MCM_SHAPER_MEM_LOW_PWR_MODE;\
- type MPCC_MCM_3DLUT_MEM_PWR_FORCE;\
- type MPCC_MCM_3DLUT_MEM_PWR_DIS;\
- type MPCC_MCM_3DLUT_MEM_LOW_PWR_MODE;\
- type MPCC_MCM_1DLUT_MEM_PWR_FORCE;\
- type MPCC_MCM_1DLUT_MEM_PWR_DIS;\
- type MPCC_MCM_1DLUT_MEM_LOW_PWR_MODE;\
- type MPCC_MCM_SHAPER_MEM_PWR_STATE;\
- type MPCC_MCM_3DLUT_MEM_PWR_STATE;\
- type MPCC_MCM_1DLUT_MEM_PWR_STATE;\
- type MPCC_MCM_3DLUT_MODE; \
- type MPCC_MCM_3DLUT_SIZE; \
- type MPCC_MCM_3DLUT_MODE_CURRENT; \
- type MPCC_MCM_3DLUT_WRITE_EN_MASK;\
- type MPCC_MCM_3DLUT_RAM_SEL;\
- type MPCC_MCM_3DLUT_30BIT_EN;\
- type MPCC_MCM_3DLUT_CONFIG_STATUS;\
- type MPCC_MCM_3DLUT_READ_SEL;\
- type MPCC_MCM_3DLUT_INDEX;\
- type MPCC_MCM_3DLUT_DATA0;\
- type MPCC_MCM_3DLUT_DATA1;\
- type MPCC_MCM_3DLUT_DATA_30BIT;\
- type MPCC_MCM_SHAPER_LUT_MODE;\
- type MPCC_MCM_SHAPER_MODE_CURRENT;\
- type MPCC_MCM_SHAPER_OFFSET_R;\
- type MPCC_MCM_SHAPER_OFFSET_G;\
- type MPCC_MCM_SHAPER_OFFSET_B;\
- type MPCC_MCM_SHAPER_SCALE_R;\
- type MPCC_MCM_SHAPER_SCALE_G;\
- type MPCC_MCM_SHAPER_SCALE_B;\
- type MPCC_MCM_SHAPER_LUT_INDEX;\
- type MPCC_MCM_SHAPER_LUT_DATA;\
- type MPCC_MCM_SHAPER_LUT_WRITE_EN_MASK;\
- type MPCC_MCM_SHAPER_LUT_WRITE_SEL;\
- type MPCC_MCM_SHAPER_CONFIG_STATUS;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION_START_B;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION_END_B;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION_END_BASE_B;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET;\
- type MPCC_MCM_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS; \
- type MPCC_MCM_1DLUT_MODE;\
- type MPCC_MCM_1DLUT_SELECT;\
- type MPCC_MCM_1DLUT_PWL_DISABLE;\
- type MPCC_MCM_1DLUT_MODE_CURRENT;\
- type MPCC_MCM_1DLUT_SELECT_CURRENT;\
- type MPCC_MCM_1DLUT_LUT_INDEX;\
- type MPCC_MCM_1DLUT_LUT_DATA;\
- type MPCC_MCM_1DLUT_LUT_WRITE_COLOR_MASK;\
- type MPCC_MCM_1DLUT_LUT_READ_COLOR_SEL;\
- type MPCC_MCM_1DLUT_LUT_HOST_SEL;\
- type MPCC_MCM_1DLUT_LUT_CONFIG_MODE;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION_START_B;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION_START_SEGMENT_B;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION_START_SLOPE_B;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION_START_BASE_B;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION_END_BASE_B;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION_END_B;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION_END_SLOPE_B;\
- type MPCC_MCM_1DLUT_RAMA_OFFSET_B;\
- type MPCC_MCM_1DLUT_RAMA_OFFSET_G;\
- type MPCC_MCM_1DLUT_RAMA_OFFSET_R;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION0_LUT_OFFSET;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION0_NUM_SEGMENTS;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION1_LUT_OFFSET;\
- type MPCC_MCM_1DLUT_RAMA_EXP_REGION1_NUM_SEGMENTS
-
-
-#define MPC_COMMON_MASK_SH_LIST_DCN303(mask_sh) \
- MPC_COMMON_MASK_SH_LIST_DCN1_0(mask_sh),\
- SF(MPCC0_MPCC_CONTROL, MPCC_BG_BPC, mask_sh),\
- SF(MPCC0_MPCC_CONTROL, MPCC_BOT_GAIN_MODE, mask_sh),\
- SF(MPCC0_MPCC_TOP_GAIN, MPCC_TOP_GAIN, mask_sh),\
- SF(MPCC0_MPCC_BOT_GAIN_INSIDE, MPCC_BOT_GAIN_INSIDE, mask_sh),\
- SF(MPCC0_MPCC_BOT_GAIN_OUTSIDE, MPCC_BOT_GAIN_OUTSIDE, mask_sh),\
- SF(MPC_OUT0_CSC_MODE, MPC_OCSC_MODE, mask_sh),\
- SF(MPC_OUT0_CSC_C11_C12_A, MPC_OCSC_C11_A, mask_sh),\
- SF(MPC_OUT0_CSC_C11_C12_A, MPC_OCSC_C12_A, mask_sh),\
- SF(MPCC0_MPCC_STATUS, MPCC_DISABLED, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_FORCE, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_DIS, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_LOW_PWR_MODE, mask_sh),\
- SF(MPCC0_MPCC_MEM_PWR_CTRL, MPCC_OGAM_MEM_PWR_STATE, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_MODE, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_CLAMP_MAX_R_CR, mask_sh),\
- SF(MPC_OUT0_DENORM_CONTROL, MPC_OUT_DENORM_CLAMP_MIN_R_CR, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_G_Y, MPC_OUT_DENORM_CLAMP_MAX_G_Y, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_G_Y, MPC_OUT_DENORM_CLAMP_MIN_G_Y, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_B_CB, MPC_OUT_DENORM_CLAMP_MAX_B_CB, mask_sh),\
- SF(MPC_OUT0_DENORM_CLAMP_B_CB, MPC_OUT_DENORM_CLAMP_MIN_B_CB, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_MODE, MPCC_GAMUT_REMAP_MODE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_MODE, MPCC_GAMUT_REMAP_MODE_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_GAMUT_REMAP_COEF_FORMAT, MPCC_GAMUT_REMAP_COEF_FORMAT, mask_sh),\
- SF(MPCC_OGAM0_MPC_GAMUT_REMAP_C11_C12_A, MPCC_GAMUT_REMAP_C11_A, mask_sh),\
- SF(MPCC_OGAM0_MPC_GAMUT_REMAP_C11_C12_A, MPCC_GAMUT_REMAP_C12_A, mask_sh),\
- SF(MPC_DWB0_MUX, MPC_DWB0_MUX, mask_sh),\
- SF(MPC_DWB0_MUX, MPC_DWB0_MUX_STATUS, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_RATE_CONTROL_DISABLE, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_MODE, mask_sh),\
- SF(MPC_OUT0_MUX, MPC_OUT_FLOW_CONTROL_COUNT, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU0_MUX, mask_sh), \
- SF(MPC_RMU_CONTROL, MPC_RMU0_MUX_STATUS, mask_sh), \
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_REGION_0_1, MPCC_OGAM_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL2_B, MPCC_OGAM_RAMA_EXP_REGION_END_SLOPE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL2_B, MPCC_OGAM_RAMA_EXP_REGION_END_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_END_CNTL1_B, MPCC_OGAM_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_SLOPE_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_SLOPE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_BASE_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_BASE_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_START_CNTL_B, MPCC_OGAM_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_B, MPCC_OGAM_RAMA_OFFSET_B, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_G, MPCC_OGAM_RAMA_OFFSET_G, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_RAMA_OFFSET_R, MPCC_OGAM_RAMA_OFFSET_R, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_INDEX, MPCC_OGAM_LUT_INDEX, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_MODE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_SELECT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_PWL_DISABLE, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_MODE_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_CONTROL, MPCC_OGAM_SELECT_CURRENT, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_WRITE_COLOR_MASK, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_READ_COLOR_SEL, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_READ_DBG, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_HOST_SEL, mask_sh),\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_CONFIG_MODE, mask_sh),\
- /*SF(MPCC_OGAM0_MPCC_OGAM_LUT_CONTROL, MPCC_OGAM_LUT_STATUS, mask_sh),*/\
- SF(MPCC_OGAM0_MPCC_OGAM_LUT_DATA, MPCC_OGAM_LUT_DATA, mask_sh),\
- SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_MODE, mask_sh),\
- SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_SIZE, mask_sh),\
- /*SF(MPC_RMU0_3DLUT_MODE, MPC_RMU_3DLUT_MODE_CURRENT, mask_sh),*/\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_WRITE_EN_MASK, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_RAM_SEL, mask_sh),\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_30BIT_EN, mask_sh),\
- /*SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_CONFIG_STATUS, mask_sh),*/\
- SF(MPC_RMU0_3DLUT_READ_WRITE_CONTROL, MPC_RMU_3DLUT_READ_SEL, mask_sh),\
- SF(MPC_RMU0_3DLUT_INDEX, MPC_RMU_3DLUT_INDEX, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA, MPC_RMU_3DLUT_DATA0, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA, MPC_RMU_3DLUT_DATA1, mask_sh),\
- SF(MPC_RMU0_3DLUT_DATA_30BIT, MPC_RMU_3DLUT_DATA_30BIT, mask_sh),\
- SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_LUT_MODE, mask_sh),\
- /*SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_LUT_MODE_CURRENT, mask_sh),*/\
- SF(MPC_RMU0_SHAPER_OFFSET_R, MPC_RMU_SHAPER_OFFSET_R, mask_sh),\
- SF(MPC_RMU0_SHAPER_OFFSET_G, MPC_RMU_SHAPER_OFFSET_G, mask_sh),\
- SF(MPC_RMU0_SHAPER_OFFSET_B, MPC_RMU_SHAPER_OFFSET_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_R, MPC_RMU_SHAPER_SCALE_R, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_G_B, MPC_RMU_SHAPER_SCALE_G, mask_sh),\
- SF(MPC_RMU0_SHAPER_SCALE_G_B, MPC_RMU_SHAPER_SCALE_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_INDEX, MPC_RMU_SHAPER_LUT_INDEX, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_DATA, MPC_RMU_SHAPER_LUT_DATA, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_LUT_WRITE_EN_MASK, mask_sh),\
- SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_LUT_WRITE_SEL, mask_sh),\
- /*SF(MPC_RMU0_SHAPER_LUT_WRITE_EN_MASK, MPC_RMU_SHAPER_CONFIG_STATUS, mask_sh),*/\
- SF(MPC_RMU0_SHAPER_RAMA_START_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_START_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_END_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_END_CNTL_B, MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET, mask_sh),\
- SF(MPC_RMU0_SHAPER_RAMA_REGION_0_1, MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_PWR_FORCE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_PWR_DIS, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_SHAPER_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_3DLUT_MEM_PWR_STATE, mask_sh),\
- SF(MPC_RMU_MEM_PWR_CTRL, MPC_RMU0_MEM_LOW_PWR_MODE, mask_sh),\
- SF(MPC_RMU0_SHAPER_CONTROL, MPC_RMU_SHAPER_MODE_CURRENT, mask_sh),\
- SF(CUR_VUPDATE_LOCK_SET0, CUR_VUPDATE_LOCK_SET, mask_sh)
-
-#define MPC_REG_FIELD_LIST_DCN3_03(type) \
- MPC_REG_FIELD_LIST_DCN2_0(type) \
- type MPC_DWB0_MUX;\
- type MPC_DWB0_MUX_STATUS;\
- type MPC_OUT_RATE_CONTROL;\
- type MPC_OUT_RATE_CONTROL_DISABLE;\
- type MPC_OUT_FLOW_CONTROL_MODE;\
- type MPC_OUT_FLOW_CONTROL_COUNT; \
- type MPCC_GAMUT_REMAP_MODE; \
- type MPCC_GAMUT_REMAP_MODE_CURRENT;\
- type MPCC_GAMUT_REMAP_COEF_FORMAT; \
- type MPCC_GAMUT_REMAP_C11_A; \
- type MPCC_GAMUT_REMAP_C12_A; \
- type MPC_RMU0_MUX; \
- type MPC_RMU0_MUX_STATUS; \
- type MPC_RMU0_MEM_PWR_FORCE;\
- type MPC_RMU0_MEM_PWR_DIS;\
- type MPC_RMU0_MEM_LOW_PWR_MODE;\
- type MPC_RMU0_SHAPER_MEM_PWR_STATE;\
- type MPC_RMU0_3DLUT_MEM_PWR_STATE;\
- type MPCC_OGAM_RAMA_EXP_REGION_START_SLOPE_B; \
- type MPCC_OGAM_RAMA_EXP_REGION_START_BASE_B;\
- type MPCC_OGAM_RAMA_OFFSET_B;\
- type MPCC_OGAM_RAMA_OFFSET_G;\
- type MPCC_OGAM_RAMA_OFFSET_R;\
- type MPCC_OGAM_SELECT; \
- type MPCC_OGAM_PWL_DISABLE; \
- type MPCC_OGAM_MODE_CURRENT; \
- type MPCC_OGAM_SELECT_CURRENT; \
- type MPCC_OGAM_LUT_WRITE_COLOR_MASK; \
- type MPCC_OGAM_LUT_READ_COLOR_SEL; \
- type MPCC_OGAM_LUT_READ_DBG; \
- type MPCC_OGAM_LUT_HOST_SEL; \
- type MPCC_OGAM_LUT_CONFIG_MODE; \
- type MPCC_OGAM_LUT_STATUS; \
- type MPCC_OGAM_RAMA_START_BASE_CNTL_B;\
- type MPCC_OGAM_MEM_LOW_PWR_MODE;\
- type MPCC_OGAM_MEM_PWR_STATE;\
- type MPC_RMU_3DLUT_MODE; \
- type MPC_RMU_3DLUT_SIZE; \
- type MPC_RMU_3DLUT_MODE_CURRENT; \
- type MPC_RMU_3DLUT_WRITE_EN_MASK;\
- type MPC_RMU_3DLUT_RAM_SEL;\
- type MPC_RMU_3DLUT_30BIT_EN;\
- type MPC_RMU_3DLUT_CONFIG_STATUS;\
- type MPC_RMU_3DLUT_READ_SEL;\
- type MPC_RMU_3DLUT_INDEX;\
- type MPC_RMU_3DLUT_DATA0;\
- type MPC_RMU_3DLUT_DATA1;\
- type MPC_RMU_3DLUT_DATA_30BIT;\
- type MPC_RMU_SHAPER_LUT_MODE;\
- type MPC_RMU_SHAPER_LUT_MODE_CURRENT;\
- type MPC_RMU_SHAPER_OFFSET_R;\
- type MPC_RMU_SHAPER_OFFSET_G;\
- type MPC_RMU_SHAPER_OFFSET_B;\
- type MPC_RMU_SHAPER_SCALE_R;\
- type MPC_RMU_SHAPER_SCALE_G;\
- type MPC_RMU_SHAPER_SCALE_B;\
- type MPC_RMU_SHAPER_LUT_INDEX;\
- type MPC_RMU_SHAPER_LUT_DATA;\
- type MPC_RMU_SHAPER_LUT_WRITE_EN_MASK;\
- type MPC_RMU_SHAPER_LUT_WRITE_SEL;\
- type MPC_RMU_SHAPER_CONFIG_STATUS;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_START_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_START_SEGMENT_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_END_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION_END_BASE_B;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION0_LUT_OFFSET;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION0_NUM_SEGMENTS;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION1_LUT_OFFSET;\
- type MPC_RMU_SHAPER_RAMA_EXP_REGION1_NUM_SEGMENTS;\
- type MPC_RMU_SHAPER_MODE_CURRENT
-
-struct dcn30_mpc_registers {
- MPC_REG_VARIABLE_LIST_DCN3_0;
- MPC_REG_VARIABLE_LIST_DCN32;
-};
-
-struct dcn30_mpc_shift {
- MPC_REG_FIELD_LIST_DCN3_0(uint8_t);
- MPC_REG_FIELD_LIST_DCN32(uint8_t);
-};
-
-struct dcn30_mpc_mask {
- MPC_REG_FIELD_LIST_DCN3_0(uint32_t);
- MPC_REG_FIELD_LIST_DCN32(uint32_t);
-};
-
-struct dcn30_mpc {
- struct mpc base;
-
- int mpcc_in_use_mask;
- int num_mpcc;
- const struct dcn30_mpc_registers *mpc_regs;
- const struct dcn30_mpc_shift *mpc_shift;
- const struct dcn30_mpc_mask *mpc_mask;
- int num_rmu;
-};
-
-void dcn30_mpc_construct(struct dcn30_mpc *mpc30,
- struct dc_context *ctx,
- const struct dcn30_mpc_registers *mpc_regs,
- const struct dcn30_mpc_shift *mpc_shift,
- const struct dcn30_mpc_mask *mpc_mask,
- int num_mpcc,
- int num_rmu);
-
-void mpc3_mpc_init(
- struct mpc *mpc);
-
-void mpc3_mpc_init_single_inst(
- struct mpc *mpc,
- unsigned int mpcc_id);
-
-bool mpc3_program_shaper(
- struct mpc *mpc,
- const struct pwl_params *params,
- uint32_t rmu_idx);
-
-bool mpc3_program_3dlut(
- struct mpc *mpc,
- const struct tetrahedral_params *params,
- int rmu_idx);
-
-uint32_t mpcc3_acquire_rmu(struct mpc *mpc,
- int mpcc_id, int rmu_idx);
-
-void mpc3_set_denorm(
- struct mpc *mpc,
- int opp_id,
- enum dc_color_depth output_depth);
-
-void mpc3_set_denorm_clamp(
- struct mpc *mpc,
- int opp_id,
- struct mpc_denorm_clamp denorm_clamp);
-
-void mpc3_set_output_csc(
- struct mpc *mpc,
- int opp_id,
- const uint16_t *regval,
- enum mpc_output_csc_mode ocsc_mode);
-
-void mpc3_set_ocsc_default(
- struct mpc *mpc,
- int opp_id,
- enum dc_color_space color_space,
- enum mpc_output_csc_mode ocsc_mode);
-
-void mpc3_set_output_gamma(
- struct mpc *mpc,
- int mpcc_id,
- const struct pwl_params *params);
-
-uint32_t mpc3_get_rmu_mux_status(
- struct mpc *mpc,
- int rmu_idx);
-
-void mpc3_set_gamut_remap(
- struct mpc *mpc,
- int mpcc_id,
- const struct mpc_grph_gamut_adjustment *adjust);
-
-void mpc3_get_gamut_remap(struct mpc *mpc,
- int mpcc_id,
- struct mpc_grph_gamut_adjustment *adjust);
-
-void mpc3_set_rmu_mux(
- struct mpc *mpc,
- int rmu_idx,
- int value);
-
-void mpc3_set_dwb_mux(
- struct mpc *mpc,
- int dwb_id,
- int mpcc_id);
-
-void mpc3_disable_dwb_mux(
- struct mpc *mpc,
- int dwb_id);
-
-bool mpc3_is_dwb_idle(
- struct mpc *mpc,
- int dwb_id);
-
-void mpc3_power_on_ogam_lut(
- struct mpc *mpc, int mpcc_id,
- bool power_on);
-
-void mpc3_init_mpcc(struct mpcc *mpcc, int mpcc_inst);
-
-enum dc_lut_mode mpc3_get_ogam_current(
- struct mpc *mpc,
- int mpcc_id);
-
-#endif
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_vpg.h b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_vpg.h
index ed9a5549c389..466ba20b9c61 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_vpg.h
+++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_vpg.h
@@ -26,6 +26,7 @@
#ifndef __DAL_DCN30_VPG_H__
#define __DAL_DCN30_VPG_H__
+#include "vpg.h"
#define DCN30_VPG_FROM_VPG(vpg)\
container_of(vpg, struct dcn30_vpg, base)
@@ -132,28 +133,6 @@ struct dcn30_vpg_mask {
VPG_DCN3_REG_FIELD_LIST(uint32_t);
};
-struct vpg;
-
-struct vpg_funcs {
- void (*update_generic_info_packet)(
- struct vpg *vpg,
- uint32_t packet_index,
- const struct dc_info_packet *info_packet,
- bool immediate_update);
-
- void (*vpg_poweron)(
- struct vpg *vpg);
-
- void (*vpg_powerdown)(
- struct vpg *vpg);
-};
-
-struct vpg {
- const struct vpg_funcs *funcs;
- struct dc_context *ctx;
- int inst;
-};
-
struct dcn30_vpg {
struct vpg base;
const struct dcn30_vpg_registers *regs;