xref: /linux/drivers/gpu/drm/amd/display/dc/dsc/dcn401/dcn401_dsc.h (revision 260f6f4fda93c8485c8037865c941b42b9cba5d2)
170839da6SAurabindo Pillai // SPDX-License-Identifier: MIT
270839da6SAurabindo Pillai //
370839da6SAurabindo Pillai // Copyright 2024 Advanced Micro Devices, Inc.
470839da6SAurabindo Pillai 
570839da6SAurabindo Pillai #ifndef __DCN401_DSC_H__
670839da6SAurabindo Pillai #define __DCN401_DSC_H__
770839da6SAurabindo Pillai 
870839da6SAurabindo Pillai #include "dsc.h"
970839da6SAurabindo Pillai #include "dsc/dscc_types.h"
1070839da6SAurabindo Pillai #include "dcn20/dcn20_dsc.h"
1170839da6SAurabindo Pillai #include <drm/display/drm_dsc.h>
1270839da6SAurabindo Pillai 
1370839da6SAurabindo Pillai #define TO_DCN401_DSC(dsc)\
1470839da6SAurabindo Pillai 	container_of(dsc, struct dcn401_dsc, base)
1570839da6SAurabindo Pillai 
1670839da6SAurabindo Pillai #define DSC_REG_LIST_SH_MASK_DCN401(mask_sh)\
1770839da6SAurabindo Pillai 	DSC_SF(DSC_TOP0_DSC_TOP_CONTROL, DSC_CLOCK_EN, mask_sh), \
1870839da6SAurabindo Pillai 	DSC_SF(DSC_TOP0_DSC_TOP_CONTROL, DSC_DISPCLK_R_GATE_DIS, mask_sh), \
1970839da6SAurabindo Pillai 	DSC_SF(DSC_TOP0_DSC_TOP_CONTROL, DSC_DSCCLK_R_GATE_DIS, mask_sh), \
2070839da6SAurabindo Pillai 	DSC_SF(DSC_TOP0_DSC_TOP_CONTROL, DSC_FGCG_REP_DIS, mask_sh), \
2170839da6SAurabindo Pillai 	DSC_SF(DSC_TOP0_DSC_DEBUG_CONTROL, DSC_DBG_EN, mask_sh), \
2270839da6SAurabindo Pillai 	DSC_SF(DSC_TOP0_DSC_DEBUG_CONTROL, DSC_TEST_CLOCK_MUX_SEL, mask_sh), \
2370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_CONFIG0, ICH_RESET_AT_END_OF_LINE, mask_sh), \
2470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_CONFIG0, NUMBER_OF_SLICES_PER_LINE, mask_sh), \
2570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_CONFIG0, ALTERNATE_ICH_ENCODING_EN, mask_sh), \
2670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_CONFIG0, NUMBER_OF_SLICES_IN_VERTICAL_DIRECTION, mask_sh), \
2770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_CONFIG1, DSCC_RATE_CONTROL_BUFFER_MODEL_SIZE, mask_sh), \
2870839da6SAurabindo Pillai 	/*DSC_SF(DSCC0_DSCC_CONFIG1, DSCC_DISABLE_ICH, mask_sh),*/ \
2970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_STATUS, DSCC_DOUBLE_BUFFER_REG_UPDATE_PENDING, mask_sh), \
3070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED0, mask_sh), \
3170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED1, mask_sh), \
3270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED2, mask_sh), \
3370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED3, mask_sh), \
3470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR0, mask_sh), \
3570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR1, mask_sh), \
3670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR2, mask_sh), \
3770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR3, mask_sh), \
3870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN0, mask_sh), \
3970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN1, mask_sh), \
4070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN2, mask_sh), \
4170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL0, DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN3, mask_sh), \
4270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED0, mask_sh), \
4370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED1, mask_sh), \
4470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED2, mask_sh), \
4570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED3, mask_sh), \
4670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED0, mask_sh), \
4770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED1, mask_sh), \
4870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED2, mask_sh), \
4970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED3, mask_sh), \
5070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_END_OF_FRAME_NOT_REACHED_OCCURRED, mask_sh), \
5170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR0, mask_sh), \
5270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR1, mask_sh), \
5370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR2, mask_sh), \
5470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR3, mask_sh), \
5570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR0, mask_sh), \
5670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR1, mask_sh), \
5770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR2, mask_sh), \
5870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR3, mask_sh), \
5970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_STATUS1, DSCC_END_OF_FRAME_NOT_REACHED_CLEAR, mask_sh), \
6070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN0, mask_sh), \
6170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN1, mask_sh), \
6270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN2, mask_sh), \
6370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN3, mask_sh), \
6470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN0, mask_sh), \
6570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN1, mask_sh), \
6670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN2, mask_sh), \
6770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN3, mask_sh), \
6870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_INTERRUPT_CONTROL1, DSCC_END_OF_FRAME_NOT_REACHED_OCCURRED_INT_EN, mask_sh), \
6970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG0, DSC_VERSION_MINOR, mask_sh), \
7070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG0, DSC_VERSION_MAJOR, mask_sh), \
7170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG0, PPS_IDENTIFIER, mask_sh), \
7270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG0, LINEBUF_DEPTH, mask_sh), \
7370839da6SAurabindo Pillai 	DSC2_SF(DSCC0, DSCC_PPS_CONFIG0__BITS_PER_COMPONENT, mask_sh), \
7470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, BITS_PER_PIXEL, mask_sh), \
7570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, VBR_ENABLE, mask_sh), \
7670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, SIMPLE_422, mask_sh), \
7770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, CONVERT_RGB, mask_sh), \
7870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, BLOCK_PRED_ENABLE, mask_sh), \
7970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, NATIVE_422, mask_sh), \
8070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, NATIVE_420, mask_sh), \
8170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG1, CHUNK_SIZE, mask_sh), \
8270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG2, PIC_WIDTH, mask_sh), \
8370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG2, PIC_HEIGHT, mask_sh), \
8470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG3, SLICE_WIDTH, mask_sh), \
8570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG3, SLICE_HEIGHT, mask_sh), \
8670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG4, INITIAL_XMIT_DELAY, mask_sh), \
8770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG4, INITIAL_DEC_DELAY, mask_sh), \
8870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG5, INITIAL_SCALE_VALUE, mask_sh), \
8970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG5, SCALE_INCREMENT_INTERVAL, mask_sh), \
9070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG6, SCALE_DECREMENT_INTERVAL, mask_sh), \
9170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG6, FIRST_LINE_BPG_OFFSET, mask_sh), \
9270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG6, SECOND_LINE_BPG_OFFSET, mask_sh), \
9370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG7, NFL_BPG_OFFSET, mask_sh), \
9470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG7, SLICE_BPG_OFFSET, mask_sh), \
9570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG8, NSL_BPG_OFFSET, mask_sh), \
9670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG8, SECOND_LINE_OFFSET_ADJ, mask_sh), \
9770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG9, INITIAL_OFFSET, mask_sh), \
9870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG9, FINAL_OFFSET, mask_sh), \
9970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG10, FLATNESS_MIN_QP, mask_sh), \
10070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG10, FLATNESS_MAX_QP, mask_sh), \
10170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG10, RC_MODEL_SIZE, mask_sh), \
10270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG11, RC_EDGE_FACTOR, mask_sh), \
10370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG11, RC_QUANT_INCR_LIMIT0, mask_sh), \
10470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG11, RC_QUANT_INCR_LIMIT1, mask_sh), \
10570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG11, RC_TGT_OFFSET_LO, mask_sh), \
10670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG11, RC_TGT_OFFSET_HI, mask_sh), \
10770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG12, RC_BUF_THRESH0, mask_sh), \
10870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG12, RC_BUF_THRESH1, mask_sh), \
10970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG12, RC_BUF_THRESH2, mask_sh), \
11070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG12, RC_BUF_THRESH3, mask_sh), \
11170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG13, RC_BUF_THRESH4, mask_sh), \
11270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG13, RC_BUF_THRESH5, mask_sh), \
11370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG13, RC_BUF_THRESH6, mask_sh), \
11470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG13, RC_BUF_THRESH7, mask_sh), \
11570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG14, RC_BUF_THRESH8, mask_sh), \
11670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG14, RC_BUF_THRESH9, mask_sh), \
11770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG14, RC_BUF_THRESH10, mask_sh), \
11870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG14, RC_BUF_THRESH11, mask_sh), \
11970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG15, RC_BUF_THRESH12, mask_sh), \
12070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG15, RC_BUF_THRESH13, mask_sh), \
12170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG15, RANGE_MIN_QP0, mask_sh), \
12270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG15, RANGE_MAX_QP0, mask_sh), \
12370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG15, RANGE_BPG_OFFSET0, mask_sh), \
12470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG16, RANGE_MIN_QP1, mask_sh), \
12570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG16, RANGE_MAX_QP1, mask_sh), \
12670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG16, RANGE_BPG_OFFSET1, mask_sh), \
12770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG16, RANGE_MIN_QP2, mask_sh), \
12870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG16, RANGE_MAX_QP2, mask_sh), \
12970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG16, RANGE_BPG_OFFSET2, mask_sh), \
13070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG17, RANGE_MIN_QP3, mask_sh), \
13170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG17, RANGE_MAX_QP3, mask_sh), \
13270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG17, RANGE_BPG_OFFSET3, mask_sh), \
13370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG17, RANGE_MIN_QP4, mask_sh), \
13470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG17, RANGE_MAX_QP4, mask_sh), \
13570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG17, RANGE_BPG_OFFSET4, mask_sh), \
13670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG18, RANGE_MIN_QP5, mask_sh), \
13770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG18, RANGE_MAX_QP5, mask_sh), \
13870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG18, RANGE_BPG_OFFSET5, mask_sh), \
13970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG18, RANGE_MIN_QP6, mask_sh), \
14070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG18, RANGE_MAX_QP6, mask_sh), \
14170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG18, RANGE_BPG_OFFSET6, mask_sh), \
14270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG19, RANGE_MIN_QP7, mask_sh), \
14370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG19, RANGE_MAX_QP7, mask_sh), \
14470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG19, RANGE_BPG_OFFSET7, mask_sh), \
14570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG19, RANGE_MIN_QP8, mask_sh), \
14670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG19, RANGE_MAX_QP8, mask_sh), \
14770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG19, RANGE_BPG_OFFSET8, mask_sh), \
14870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG20, RANGE_MIN_QP9, mask_sh), \
14970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG20, RANGE_MAX_QP9, mask_sh), \
15070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG20, RANGE_BPG_OFFSET9, mask_sh), \
15170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG20, RANGE_MIN_QP10, mask_sh), \
15270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG20, RANGE_MAX_QP10, mask_sh), \
15370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG20, RANGE_BPG_OFFSET10, mask_sh), \
15470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG21, RANGE_MIN_QP11, mask_sh), \
15570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG21, RANGE_MAX_QP11, mask_sh), \
15670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG21, RANGE_BPG_OFFSET11, mask_sh), \
15770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG21, RANGE_MIN_QP12, mask_sh), \
15870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG21, RANGE_MAX_QP12, mask_sh), \
15970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG21, RANGE_BPG_OFFSET12, mask_sh), \
16070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG22, RANGE_MIN_QP13, mask_sh), \
16170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG22, RANGE_MAX_QP13, mask_sh), \
16270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG22, RANGE_BPG_OFFSET13, mask_sh), \
16370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG22, RANGE_MIN_QP14, mask_sh), \
16470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG22, RANGE_MAX_QP14, mask_sh), \
16570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_PPS_CONFIG22, RANGE_BPG_OFFSET14, mask_sh), \
16670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL0, DSCC_DEFAULT_MEM_LOW_POWER_STATE, mask_sh), \
16770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL0, DSCC_MEM_PWR_FORCE, mask_sh), \
16870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL0, DSCC_MEM_PWR_DIS, mask_sh), \
16970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL0, DSCC_MEM_PWR_STATE, mask_sh), \
17070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL1, DSCC_DEFAULT_MEM_LOW_POWER_STATE, mask_sh), \
17170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL1, DSCC_MEM_PWR_FORCE, mask_sh), \
17270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL1, DSCC_MEM_PWR_DIS, mask_sh), \
17370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MEM_POWER_CONTROL1, DSCC_MEM_PWR_STATE, mask_sh), \
17470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_R_Y_SQUARED_ERROR_LOWER, DSCC_R_Y_SQUARED_ERROR_LOWER, mask_sh), \
17570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_R_Y_SQUARED_ERROR_UPPER, DSCC_R_Y_SQUARED_ERROR_UPPER, mask_sh), \
17670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_G_CB_SQUARED_ERROR_LOWER, DSCC_G_CB_SQUARED_ERROR_LOWER, mask_sh), \
17770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_G_CB_SQUARED_ERROR_UPPER, DSCC_G_CB_SQUARED_ERROR_UPPER, mask_sh), \
17870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_B_CR_SQUARED_ERROR_LOWER, DSCC_B_CR_SQUARED_ERROR_LOWER, mask_sh), \
17970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_B_CR_SQUARED_ERROR_UPPER, DSCC_B_CR_SQUARED_ERROR_UPPER, mask_sh), \
18070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MAX_ABS_ERROR0, DSCC_R_Y_MAX_ABS_ERROR, mask_sh), \
18170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MAX_ABS_ERROR0, DSCC_G_CB_MAX_ABS_ERROR, mask_sh), \
18270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_MAX_ABS_ERROR1, DSCC_B_CR_MAX_ABS_ERROR, mask_sh), \
18370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL0, DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL0, mask_sh), \
18470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL1, DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL1, mask_sh), \
18570839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL2, DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL2, mask_sh), \
18670839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL3, DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL3, mask_sh), \
18770839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL0, DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL0, mask_sh), \
18870839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL1, DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL1, mask_sh), \
18970839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL2, DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL2, mask_sh), \
19070839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL3, DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL3, mask_sh), \
19170839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_TEST_DEBUG_BUS_ROTATE, DSCC_TEST_DEBUG_BUS0_ROTATE, mask_sh), \
19270839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_TEST_DEBUG_BUS_ROTATE, DSCC_TEST_DEBUG_BUS1_ROTATE, mask_sh), \
19370839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_TEST_DEBUG_BUS_ROTATE, DSCC_TEST_DEBUG_BUS2_ROTATE, mask_sh), \
19470839da6SAurabindo Pillai 	DSC_SF(DSCC0_DSCC_TEST_DEBUG_BUS_ROTATE, DSCC_TEST_DEBUG_BUS3_ROTATE, mask_sh), \
19570839da6SAurabindo Pillai 	DSC_SF(DSCCIF0_DSCCIF_CONFIG0, INPUT_PIXEL_FORMAT, mask_sh), \
19670839da6SAurabindo Pillai 	DSC2_SF(DSCCIF0, DSCCIF_CONFIG0__BITS_PER_COMPONENT, mask_sh), \
19770839da6SAurabindo Pillai 	DSC_SF(DSCCIF0_DSCCIF_CONFIG0, DOUBLE_BUFFER_REG_UPDATE_PENDING, mask_sh), \
19870839da6SAurabindo Pillai 	DSC_SF(DSCRM0_DSCRM_DSC_FORWARD_CONFIG, DSCRM_DSC_FORWARD_EN, mask_sh), \
199569d7db7SRyan Seto 	DSC_SF(DSCRM0_DSCRM_DSC_FORWARD_CONFIG, DSCRM_DSC_OPP_PIPE_SOURCE, mask_sh), \
200569d7db7SRyan Seto 	DSC_SF(DSCRM0_DSCRM_DSC_FORWARD_CONFIG, DSCRM_DSC_FORWARD_EN_STATUS, mask_sh)
20170839da6SAurabindo Pillai 
20270839da6SAurabindo Pillai struct dcn401_dsc_registers {
20370839da6SAurabindo Pillai 	uint32_t DSC_TOP_CONTROL;
20470839da6SAurabindo Pillai 	uint32_t DSC_DEBUG_CONTROL;
20570839da6SAurabindo Pillai 	uint32_t DSCC_CONFIG0;
20670839da6SAurabindo Pillai 	uint32_t DSCC_CONFIG1;
20770839da6SAurabindo Pillai 	uint32_t DSCC_STATUS;
20870839da6SAurabindo Pillai 	uint32_t DSCC_INTERRUPT_CONTROL0;
20970839da6SAurabindo Pillai 	uint32_t DSCC_INTERRUPT_CONTROL1;
21070839da6SAurabindo Pillai 	uint32_t DSCC_INTERRUPT_STATUS0;
21170839da6SAurabindo Pillai 	uint32_t DSCC_INTERRUPT_STATUS1;
21270839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG0;
21370839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG1;
21470839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG2;
21570839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG3;
21670839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG4;
21770839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG5;
21870839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG6;
21970839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG7;
22070839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG8;
22170839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG9;
22270839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG10;
22370839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG11;
22470839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG12;
22570839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG13;
22670839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG14;
22770839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG15;
22870839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG16;
22970839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG17;
23070839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG18;
23170839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG19;
23270839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG20;
23370839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG21;
23470839da6SAurabindo Pillai 	uint32_t DSCC_PPS_CONFIG22;
23570839da6SAurabindo Pillai 	uint32_t DSCC_MEM_POWER_CONTROL0;
23670839da6SAurabindo Pillai 	uint32_t DSCC_MEM_POWER_CONTROL1;
23770839da6SAurabindo Pillai 	uint32_t DSCC_R_Y_SQUARED_ERROR_LOWER;
23870839da6SAurabindo Pillai 	uint32_t DSCC_R_Y_SQUARED_ERROR_UPPER;
23970839da6SAurabindo Pillai 	uint32_t DSCC_G_CB_SQUARED_ERROR_LOWER;
24070839da6SAurabindo Pillai 	uint32_t DSCC_G_CB_SQUARED_ERROR_UPPER;
24170839da6SAurabindo Pillai 	uint32_t DSCC_B_CR_SQUARED_ERROR_LOWER;
24270839da6SAurabindo Pillai 	uint32_t DSCC_B_CR_SQUARED_ERROR_UPPER;
24370839da6SAurabindo Pillai 	uint32_t DSCC_MAX_ABS_ERROR0;
24470839da6SAurabindo Pillai 	uint32_t DSCC_MAX_ABS_ERROR1;
24570839da6SAurabindo Pillai 	uint32_t DSCC_TEST_DEBUG_BUS_ROTATE;
24670839da6SAurabindo Pillai 	uint32_t DSCCIF_CONFIG0;
24770839da6SAurabindo Pillai 	uint32_t DSCRM_DSC_FORWARD_CONFIG;
24870839da6SAurabindo Pillai 	uint32_t DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL0;
24970839da6SAurabindo Pillai 	uint32_t DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL1;
25070839da6SAurabindo Pillai 	uint32_t DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL2;
25170839da6SAurabindo Pillai 	uint32_t DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL3;
25270839da6SAurabindo Pillai 	uint32_t DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL0;
25370839da6SAurabindo Pillai 	uint32_t DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL1;
25470839da6SAurabindo Pillai 	uint32_t DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL2;
25570839da6SAurabindo Pillai 	uint32_t DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL3;
25670839da6SAurabindo Pillai };
25770839da6SAurabindo Pillai 
25870839da6SAurabindo Pillai #define DSC_FIELD_LIST_DCN401(type)\
25970839da6SAurabindo Pillai 	DSC_FIELD_LIST_DCN20(type); \
26070839da6SAurabindo Pillai 	type DSC_FGCG_REP_DIS; \
26170839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN0; \
26270839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN1; \
26370839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN2; \
26470839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED_INT_EN3; \
26570839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED0; \
26670839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED1; \
26770839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED2; \
26870839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED3; \
26970839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED0; \
27070839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED1; \
27170839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED2; \
27270839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED3; \
27370839da6SAurabindo Pillai 	type DSCC_END_OF_FRAME_NOT_REACHED_OCCURRED; \
27470839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR0; \
27570839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR1; \
27670839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR2; \
27770839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_CLEAR3; \
27870839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR0; \
27970839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR1; \
28070839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR2; \
28170839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_CLEAR3; \
28270839da6SAurabindo Pillai 	type DSCC_END_OF_FRAME_NOT_REACHED_CLEAR; \
28370839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED0; \
28470839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED1; \
28570839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED2; \
28670839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_OCCURRED3; \
28770839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR0; \
28870839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR1; \
28970839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR2; \
29070839da6SAurabindo Pillai 	type DSCC_RATE_CONTROL_BUFFER_MODEL_OVERFLOW_CLEAR3; \
29170839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN0; \
29270839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN1; \
29370839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN2; \
29470839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_OVERFLOW_OCCURRED_INT_EN3; \
29570839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN0; \
29670839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN1; \
29770839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN2; \
29870839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_UNDERFLOW_OCCURRED_INT_EN3; \
29970839da6SAurabindo Pillai 	type DSCC_END_OF_FRAME_NOT_REACHED_OCCURRED_INT_EN; \
30070839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL0; \
30170839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL1; \
30270839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL2; \
30370839da6SAurabindo Pillai 	type DSCC_OUTPUT_BUFFER_MAX_FULLNESS_LEVEL3; \
30470839da6SAurabindo Pillai 	type DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL0; \
30570839da6SAurabindo Pillai 	type DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL1; \
30670839da6SAurabindo Pillai 	type DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL2; \
30770839da6SAurabindo Pillai 	type DSCC_RATE_BUFFER_MODEL_MAX_FULLNESS_LEVEL3
30870839da6SAurabindo Pillai 
30970839da6SAurabindo Pillai struct dcn401_dsc_shift {
31070839da6SAurabindo Pillai 	DSC_FIELD_LIST_DCN401(uint8_t);
31170839da6SAurabindo Pillai };
31270839da6SAurabindo Pillai 
31370839da6SAurabindo Pillai struct dcn401_dsc_mask {
31470839da6SAurabindo Pillai 	DSC_FIELD_LIST_DCN401(uint32_t);
31570839da6SAurabindo Pillai };
31670839da6SAurabindo Pillai 
31770839da6SAurabindo Pillai struct dcn401_dsc {
31870839da6SAurabindo Pillai 	struct display_stream_compressor base;
31970839da6SAurabindo Pillai 	const struct dcn401_dsc_registers *dsc_regs;
32070839da6SAurabindo Pillai 	const struct dcn401_dsc_shift *dsc_shift;
32170839da6SAurabindo Pillai 	const struct dcn401_dsc_mask *dsc_mask;
32270839da6SAurabindo Pillai 
32370839da6SAurabindo Pillai 	struct dsc_reg_values reg_vals;
32470839da6SAurabindo Pillai 
32570839da6SAurabindo Pillai 	int max_image_width;
32670839da6SAurabindo Pillai };
32770839da6SAurabindo Pillai 
32870839da6SAurabindo Pillai void dsc401_construct(struct dcn401_dsc *dsc,
32970839da6SAurabindo Pillai 		struct dc_context *ctx,
33070839da6SAurabindo Pillai 		int inst,
33170839da6SAurabindo Pillai 		const struct dcn401_dsc_registers *dsc_regs,
33270839da6SAurabindo Pillai 		const struct dcn401_dsc_shift *dsc_shift,
33370839da6SAurabindo Pillai 		const struct dcn401_dsc_mask *dsc_mask);
33470839da6SAurabindo Pillai 
33570839da6SAurabindo Pillai void dsc401_set_fgcg(struct dcn401_dsc *dsc401, bool enable);
33670839da6SAurabindo Pillai 
3372739bd12SDmytro void dsc401_read_state(struct display_stream_compressor *dsc, struct dcn_dsc_state *s);
3382739bd12SDmytro bool dsc401_validate_stream(struct display_stream_compressor *dsc, const struct dsc_config *dsc_cfg);
3392739bd12SDmytro void dsc401_set_config(struct display_stream_compressor *dsc, const struct dsc_config *dsc_cfg,
3402739bd12SDmytro 		struct dsc_optc_config *dsc_optc_cfg);
3412739bd12SDmytro void dsc401_enable(struct display_stream_compressor *dsc, int opp_pipe);
3422739bd12SDmytro void dsc401_disable(struct display_stream_compressor *dsc);
3432739bd12SDmytro void dsc401_disconnect(struct display_stream_compressor *dsc);
344*8ebfc4d2SKarthi Kandasamy void dsc401_wait_disconnect_pending_clear(struct display_stream_compressor *dsc);
34570839da6SAurabindo Pillai #endif
34670839da6SAurabindo Pillai 
347