.. | .. |
---|
30 | 30 | #include "abm.h" |
---|
31 | 31 | |
---|
32 | 32 | #define ABM_COMMON_REG_LIST_DCE_BASE() \ |
---|
33 | | - SR(BL_PWM_PERIOD_CNTL), \ |
---|
34 | | - SR(BL_PWM_CNTL), \ |
---|
35 | | - SR(BL_PWM_CNTL2), \ |
---|
36 | | - SR(BL_PWM_GRP1_REG_LOCK), \ |
---|
37 | | - SR(LVTMA_PWRSEQ_REF_DIV), \ |
---|
38 | 33 | SR(MASTER_COMM_CNTL_REG), \ |
---|
39 | 34 | SR(MASTER_COMM_CMD_REG), \ |
---|
40 | 35 | SR(MASTER_COMM_DATA_REG1) |
---|
.. | .. |
---|
51 | 46 | SR(BL1_PWM_USER_LEVEL), \ |
---|
52 | 47 | SR(DC_ABM1_LS_MIN_MAX_PIXEL_VALUE_THRES), \ |
---|
53 | 48 | SR(DC_ABM1_HGLS_REG_READ_PROGRESS), \ |
---|
| 49 | + SR(DC_ABM1_ACE_OFFSET_SLOPE_0), \ |
---|
| 50 | + SR(DC_ABM1_ACE_THRES_12), \ |
---|
54 | 51 | SR(BIOS_SCRATCH_2) |
---|
55 | 52 | |
---|
56 | 53 | #define ABM_DCN10_REG_LIST(id)\ |
---|
.. | .. |
---|
65 | 62 | SRI(BL1_PWM_USER_LEVEL, ABM, id), \ |
---|
66 | 63 | SRI(DC_ABM1_LS_MIN_MAX_PIXEL_VALUE_THRES, ABM, id), \ |
---|
67 | 64 | SRI(DC_ABM1_HGLS_REG_READ_PROGRESS, ABM, id), \ |
---|
| 65 | + SRI(DC_ABM1_ACE_OFFSET_SLOPE_0, ABM, id), \ |
---|
| 66 | + SRI(DC_ABM1_ACE_THRES_12, ABM, id), \ |
---|
68 | 67 | NBIO_SR(BIOS_SCRATCH_2) |
---|
| 68 | + |
---|
| 69 | +#define ABM_DCN20_REG_LIST() \ |
---|
| 70 | + ABM_COMMON_REG_LIST_DCE_BASE(), \ |
---|
| 71 | + SR(DC_ABM1_HG_SAMPLE_RATE), \ |
---|
| 72 | + SR(DC_ABM1_LS_SAMPLE_RATE), \ |
---|
| 73 | + SR(BL1_PWM_BL_UPDATE_SAMPLE_RATE), \ |
---|
| 74 | + SR(DC_ABM1_HG_MISC_CTRL), \ |
---|
| 75 | + SR(DC_ABM1_IPCSC_COEFF_SEL), \ |
---|
| 76 | + SR(BL1_PWM_CURRENT_ABM_LEVEL), \ |
---|
| 77 | + SR(BL1_PWM_TARGET_ABM_LEVEL), \ |
---|
| 78 | + SR(BL1_PWM_USER_LEVEL), \ |
---|
| 79 | + SR(DC_ABM1_LS_MIN_MAX_PIXEL_VALUE_THRES), \ |
---|
| 80 | + SR(DC_ABM1_HGLS_REG_READ_PROGRESS), \ |
---|
| 81 | + SR(DC_ABM1_ACE_OFFSET_SLOPE_0), \ |
---|
| 82 | + SR(DC_ABM1_ACE_THRES_12), \ |
---|
| 83 | + NBIO_SR(BIOS_SCRATCH_2) |
---|
| 84 | + |
---|
| 85 | +#if defined(CONFIG_DRM_AMD_DC_DCN3_0) |
---|
| 86 | +#define ABM_DCN30_REG_LIST(id)\ |
---|
| 87 | + ABM_COMMON_REG_LIST_DCE_BASE(), \ |
---|
| 88 | + SRI(DC_ABM1_HG_SAMPLE_RATE, ABM, id), \ |
---|
| 89 | + SRI(DC_ABM1_LS_SAMPLE_RATE, ABM, id), \ |
---|
| 90 | + SRI(BL1_PWM_BL_UPDATE_SAMPLE_RATE, ABM, id), \ |
---|
| 91 | + SRI(DC_ABM1_HG_MISC_CTRL, ABM, id), \ |
---|
| 92 | + SRI(DC_ABM1_IPCSC_COEFF_SEL, ABM, id), \ |
---|
| 93 | + SRI(BL1_PWM_CURRENT_ABM_LEVEL, ABM, id), \ |
---|
| 94 | + SRI(BL1_PWM_TARGET_ABM_LEVEL, ABM, id), \ |
---|
| 95 | + SRI(BL1_PWM_USER_LEVEL, ABM, id), \ |
---|
| 96 | + SRI(DC_ABM1_LS_MIN_MAX_PIXEL_VALUE_THRES, ABM, id), \ |
---|
| 97 | + SRI(DC_ABM1_HGLS_REG_READ_PROGRESS, ABM, id), \ |
---|
| 98 | + SRI(DC_ABM1_ACE_OFFSET_SLOPE_0, ABM, id), \ |
---|
| 99 | + SRI(DC_ABM1_ACE_THRES_12, ABM, id), \ |
---|
| 100 | + NBIO_SR(BIOS_SCRATCH_2) |
---|
| 101 | +#endif |
---|
69 | 102 | |
---|
70 | 103 | #define ABM_SF(reg_name, field_name, post_fix)\ |
---|
71 | 104 | .field_name = reg_name ## __ ## field_name ## post_fix |
---|
72 | 105 | |
---|
73 | 106 | #define ABM_COMMON_MASK_SH_LIST_DCE_COMMON_BASE(mask_sh) \ |
---|
74 | | - ABM_SF(BL_PWM_PERIOD_CNTL, BL_PWM_PERIOD, mask_sh), \ |
---|
75 | | - ABM_SF(BL_PWM_PERIOD_CNTL, BL_PWM_PERIOD_BITCNT, mask_sh), \ |
---|
76 | | - ABM_SF(BL_PWM_CNTL, BL_ACTIVE_INT_FRAC_CNT, mask_sh), \ |
---|
77 | | - ABM_SF(BL_PWM_CNTL, BL_PWM_FRACTIONAL_EN, mask_sh), \ |
---|
78 | | - ABM_SF(BL_PWM_CNTL, BL_PWM_EN, mask_sh), \ |
---|
79 | | - ABM_SF(BL_PWM_GRP1_REG_LOCK, BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN, mask_sh), \ |
---|
80 | | - ABM_SF(BL_PWM_GRP1_REG_LOCK, BL_PWM_GRP1_REG_LOCK, mask_sh), \ |
---|
81 | | - ABM_SF(BL_PWM_GRP1_REG_LOCK, BL_PWM_GRP1_REG_UPDATE_PENDING, mask_sh), \ |
---|
82 | | - ABM_SF(LVTMA_PWRSEQ_REF_DIV, BL_PWM_REF_DIV, mask_sh), \ |
---|
83 | 107 | ABM_SF(MASTER_COMM_CNTL_REG, MASTER_COMM_INTERRUPT, mask_sh), \ |
---|
84 | 108 | ABM_SF(MASTER_COMM_CMD_REG, MASTER_COMM_CMD_REG_BYTE0, mask_sh), \ |
---|
85 | 109 | ABM_SF(MASTER_COMM_CMD_REG, MASTER_COMM_CMD_REG_BYTE1, mask_sh), \ |
---|
.. | .. |
---|
147 | 171 | ABM_SF(ABM0_DC_ABM1_HGLS_REG_READ_PROGRESS, \ |
---|
148 | 172 | ABM1_BL_REG_READ_MISSED_FRAME_CLEAR, mask_sh) |
---|
149 | 173 | |
---|
| 174 | +#define ABM_MASK_SH_LIST_DCN20(mask_sh) ABM_MASK_SH_LIST_DCE110(mask_sh) |
---|
| 175 | + |
---|
| 176 | +#if defined(CONFIG_DRM_AMD_DC_DCN3_0) |
---|
| 177 | +#define ABM_MASK_SH_LIST_DCN301(mask_sh) ABM_MASK_SH_LIST_DCN10(mask_sh) |
---|
| 178 | +#endif |
---|
| 179 | + |
---|
150 | 180 | #define ABM_REG_FIELD_LIST(type) \ |
---|
151 | 181 | type ABM1_HG_NUM_OF_BINS_SEL; \ |
---|
152 | 182 | type ABM1_HG_VMAX_SEL; \ |
---|
.. | .. |
---|
162 | 192 | type ABM1_HG_REG_READ_MISSED_FRAME_CLEAR; \ |
---|
163 | 193 | type ABM1_LS_REG_READ_MISSED_FRAME_CLEAR; \ |
---|
164 | 194 | type ABM1_BL_REG_READ_MISSED_FRAME_CLEAR; \ |
---|
165 | | - type BL_PWM_PERIOD; \ |
---|
166 | | - type BL_PWM_PERIOD_BITCNT; \ |
---|
167 | | - type BL_ACTIVE_INT_FRAC_CNT; \ |
---|
168 | | - type BL_PWM_FRACTIONAL_EN; \ |
---|
169 | 195 | type MASTER_COMM_INTERRUPT; \ |
---|
170 | 196 | type MASTER_COMM_CMD_REG_BYTE0; \ |
---|
171 | 197 | type MASTER_COMM_CMD_REG_BYTE1; \ |
---|
172 | | - type MASTER_COMM_CMD_REG_BYTE2; \ |
---|
173 | | - type BL_PWM_REF_DIV; \ |
---|
174 | | - type BL_PWM_EN; \ |
---|
175 | | - type BL_PWM_GRP1_IGNORE_MASTER_LOCK_EN; \ |
---|
176 | | - type BL_PWM_GRP1_REG_LOCK; \ |
---|
177 | | - type BL_PWM_GRP1_REG_UPDATE_PENDING |
---|
| 198 | + type MASTER_COMM_CMD_REG_BYTE2 |
---|
178 | 199 | |
---|
179 | 200 | struct dce_abm_shift { |
---|
180 | 201 | ABM_REG_FIELD_LIST(uint8_t); |
---|
.. | .. |
---|
185 | 206 | }; |
---|
186 | 207 | |
---|
187 | 208 | struct dce_abm_registers { |
---|
188 | | - uint32_t BL_PWM_PERIOD_CNTL; |
---|
189 | | - uint32_t BL_PWM_CNTL; |
---|
190 | | - uint32_t BL_PWM_CNTL2; |
---|
191 | | - uint32_t LVTMA_PWRSEQ_REF_DIV; |
---|
192 | 209 | uint32_t DC_ABM1_HG_SAMPLE_RATE; |
---|
193 | 210 | uint32_t DC_ABM1_LS_SAMPLE_RATE; |
---|
194 | 211 | uint32_t BL1_PWM_BL_UPDATE_SAMPLE_RATE; |
---|
.. | .. |
---|
199 | 216 | uint32_t BL1_PWM_USER_LEVEL; |
---|
200 | 217 | uint32_t DC_ABM1_LS_MIN_MAX_PIXEL_VALUE_THRES; |
---|
201 | 218 | uint32_t DC_ABM1_HGLS_REG_READ_PROGRESS; |
---|
| 219 | + uint32_t DC_ABM1_ACE_OFFSET_SLOPE_0; |
---|
| 220 | + uint32_t DC_ABM1_ACE_THRES_12; |
---|
202 | 221 | uint32_t MASTER_COMM_CNTL_REG; |
---|
203 | 222 | uint32_t MASTER_COMM_CMD_REG; |
---|
204 | 223 | uint32_t MASTER_COMM_DATA_REG1; |
---|
205 | 224 | uint32_t BIOS_SCRATCH_2; |
---|
206 | | - uint32_t BL_PWM_GRP1_REG_LOCK; |
---|
207 | 225 | }; |
---|
208 | 226 | |
---|
209 | 227 | struct dce_abm { |
---|