.. | .. |
---|
108 | 108 | SRI(DCFE_MEM_PWR_CTRL, DCFE, id), \ |
---|
109 | 109 | SRI(DCFE_MEM_PWR_STATUS, DCFE, id) |
---|
110 | 110 | |
---|
| 111 | +#if defined(CONFIG_DRM_AMD_DC_SI) |
---|
| 112 | +#define XFM_COMMON_REG_LIST_DCE60_BASE(id) \ |
---|
| 113 | + SRI(DATA_FORMAT, LB, id), \ |
---|
| 114 | + SRI(GAMUT_REMAP_CONTROL, DCP, id), \ |
---|
| 115 | + SRI(GAMUT_REMAP_C11_C12, DCP, id), \ |
---|
| 116 | + SRI(GAMUT_REMAP_C13_C14, DCP, id), \ |
---|
| 117 | + SRI(GAMUT_REMAP_C21_C22, DCP, id), \ |
---|
| 118 | + SRI(GAMUT_REMAP_C23_C24, DCP, id), \ |
---|
| 119 | + SRI(GAMUT_REMAP_C31_C32, DCP, id), \ |
---|
| 120 | + SRI(GAMUT_REMAP_C33_C34, DCP, id), \ |
---|
| 121 | + SRI(OUTPUT_CSC_C11_C12, DCP, id), \ |
---|
| 122 | + SRI(OUTPUT_CSC_C13_C14, DCP, id), \ |
---|
| 123 | + SRI(OUTPUT_CSC_C21_C22, DCP, id), \ |
---|
| 124 | + SRI(OUTPUT_CSC_C23_C24, DCP, id), \ |
---|
| 125 | + SRI(OUTPUT_CSC_C31_C32, DCP, id), \ |
---|
| 126 | + SRI(OUTPUT_CSC_C33_C34, DCP, id), \ |
---|
| 127 | + SRI(OUTPUT_CSC_CONTROL, DCP, id), \ |
---|
| 128 | + SRI(REGAMMA_CNTLA_START_CNTL, DCP, id), \ |
---|
| 129 | + SRI(REGAMMA_CNTLA_SLOPE_CNTL, DCP, id), \ |
---|
| 130 | + SRI(REGAMMA_CNTLA_END_CNTL1, DCP, id), \ |
---|
| 131 | + SRI(REGAMMA_CNTLA_END_CNTL2, DCP, id), \ |
---|
| 132 | + SRI(REGAMMA_CNTLA_REGION_0_1, DCP, id), \ |
---|
| 133 | + SRI(REGAMMA_CNTLA_REGION_2_3, DCP, id), \ |
---|
| 134 | + SRI(REGAMMA_CNTLA_REGION_4_5, DCP, id), \ |
---|
| 135 | + SRI(REGAMMA_CNTLA_REGION_6_7, DCP, id), \ |
---|
| 136 | + SRI(REGAMMA_CNTLA_REGION_8_9, DCP, id), \ |
---|
| 137 | + SRI(REGAMMA_CNTLA_REGION_10_11, DCP, id), \ |
---|
| 138 | + SRI(REGAMMA_CNTLA_REGION_12_13, DCP, id), \ |
---|
| 139 | + SRI(REGAMMA_CNTLA_REGION_14_15, DCP, id), \ |
---|
| 140 | + SRI(REGAMMA_LUT_WRITE_EN_MASK, DCP, id), \ |
---|
| 141 | + SRI(REGAMMA_LUT_INDEX, DCP, id), \ |
---|
| 142 | + SRI(REGAMMA_LUT_DATA, DCP, id), \ |
---|
| 143 | + SRI(REGAMMA_CONTROL, DCP, id), \ |
---|
| 144 | + SRI(DENORM_CONTROL, DCP, id), \ |
---|
| 145 | + SRI(DCP_SPATIAL_DITHER_CNTL, DCP, id), \ |
---|
| 146 | + SRI(OUT_ROUND_CONTROL, DCP, id), \ |
---|
| 147 | + SRI(SCL_TAP_CONTROL, SCL, id), \ |
---|
| 148 | + SRI(SCL_CONTROL, SCL, id), \ |
---|
| 149 | + SRI(SCL_BYPASS_CONTROL, SCL, id), \ |
---|
| 150 | + SRI(EXT_OVERSCAN_LEFT_RIGHT, SCL, id), \ |
---|
| 151 | + SRI(EXT_OVERSCAN_TOP_BOTTOM, SCL, id), \ |
---|
| 152 | + SRI(SCL_VERT_FILTER_CONTROL, SCL, id), \ |
---|
| 153 | + SRI(SCL_HORZ_FILTER_CONTROL, SCL, id), \ |
---|
| 154 | + SRI(SCL_COEF_RAM_SELECT, SCL, id), \ |
---|
| 155 | + SRI(SCL_COEF_RAM_TAP_DATA, SCL, id), \ |
---|
| 156 | + SRI(VIEWPORT_START, SCL, id), \ |
---|
| 157 | + SRI(VIEWPORT_SIZE, SCL, id), \ |
---|
| 158 | + SRI(SCL_HORZ_FILTER_SCALE_RATIO, SCL, id), \ |
---|
| 159 | + SRI(SCL_VERT_FILTER_SCALE_RATIO, SCL, id), \ |
---|
| 160 | + SRI(SCL_VERT_FILTER_INIT, SCL, id), \ |
---|
| 161 | + SRI(SCL_AUTOMATIC_MODE_CONTROL, SCL, id), \ |
---|
| 162 | + SRI(DC_LB_MEMORY_SPLIT, LB, id), \ |
---|
| 163 | + SRI(DC_LB_MEM_SIZE, LB, id), \ |
---|
| 164 | + SRI(DCFE_MEM_LIGHT_SLEEP_CNTL, CRTC, id), \ |
---|
| 165 | + SRI(SCL_UPDATE, SCL, id), \ |
---|
| 166 | + SRI(SCL_F_SHARP_CONTROL, SCL, id) |
---|
| 167 | + |
---|
| 168 | +#define XFM_COMMON_REG_LIST_DCE60(id) \ |
---|
| 169 | + XFM_COMMON_REG_LIST_DCE60_BASE(id), \ |
---|
| 170 | + SRI(DCFE_MEM_LIGHT_SLEEP_CNTL, CRTC, id) |
---|
| 171 | +#endif |
---|
| 172 | + |
---|
111 | 173 | #define XFM_SF(reg_name, field_name, post_fix)\ |
---|
112 | 174 | .field_name = reg_name ## __ ## field_name ## post_fix |
---|
113 | 175 | |
---|
.. | .. |
---|
203 | 265 | XFM_SF(DCFE_MEM_PWR_CTRL, DCP_LUT_MEM_PWR_DIS, mask_sh),\ |
---|
204 | 266 | XFM_SF(DCFE_MEM_PWR_STATUS, DCP_REGAMMA_MEM_PWR_STATE, mask_sh),\ |
---|
205 | 267 | XFM_SF(SCL_MODE, SCL_PSCL_EN, mask_sh) |
---|
| 268 | + |
---|
| 269 | +#if defined(CONFIG_DRM_AMD_DC_SI) |
---|
| 270 | +#define XFM_COMMON_MASK_SH_LIST_DCE60(mask_sh) \ |
---|
| 271 | + XFM_COMMON_MASK_SH_LIST_DCE60_COMMON_BASE(mask_sh), \ |
---|
| 272 | + OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, REGAMMA_LUT_LIGHT_SLEEP_DIS, mask_sh),\ |
---|
| 273 | + OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, DCP_LUT_LIGHT_SLEEP_DIS, mask_sh),\ |
---|
| 274 | + OPP_SF(DCFE_MEM_LIGHT_SLEEP_CNTL, REGAMMA_LUT_MEM_PWR_STATE, mask_sh) |
---|
| 275 | + |
---|
| 276 | +#define XFM_COMMON_MASK_SH_LIST_DCE60_COMMON_BASE(mask_sh) \ |
---|
| 277 | + XFM_SF(OUT_ROUND_CONTROL, OUT_ROUND_TRUNC_MODE, mask_sh), \ |
---|
| 278 | + XFM_SF(DCP_SPATIAL_DITHER_CNTL, DCP_SPATIAL_DITHER_EN, mask_sh), \ |
---|
| 279 | + XFM_SF(DCP_SPATIAL_DITHER_CNTL, DCP_SPATIAL_DITHER_MODE, mask_sh), \ |
---|
| 280 | + XFM_SF(DCP_SPATIAL_DITHER_CNTL, DCP_SPATIAL_DITHER_DEPTH, mask_sh), \ |
---|
| 281 | + XFM_SF(DCP_SPATIAL_DITHER_CNTL, DCP_FRAME_RANDOM_ENABLE, mask_sh), \ |
---|
| 282 | + XFM_SF(DCP_SPATIAL_DITHER_CNTL, DCP_RGB_RANDOM_ENABLE, mask_sh), \ |
---|
| 283 | + XFM_SF(DCP_SPATIAL_DITHER_CNTL, DCP_HIGHPASS_RANDOM_ENABLE, mask_sh), \ |
---|
| 284 | + XFM_SF(DENORM_CONTROL, DENORM_MODE, mask_sh), \ |
---|
| 285 | + XFM_SF(DATA_FORMAT, INTERLEAVE_EN, mask_sh), \ |
---|
| 286 | + XFM_SF(GAMUT_REMAP_C11_C12, GAMUT_REMAP_C11, mask_sh), \ |
---|
| 287 | + XFM_SF(GAMUT_REMAP_C11_C12, GAMUT_REMAP_C12, mask_sh), \ |
---|
| 288 | + XFM_SF(GAMUT_REMAP_C13_C14, GAMUT_REMAP_C13, mask_sh), \ |
---|
| 289 | + XFM_SF(GAMUT_REMAP_C13_C14, GAMUT_REMAP_C14, mask_sh), \ |
---|
| 290 | + XFM_SF(GAMUT_REMAP_C21_C22, GAMUT_REMAP_C21, mask_sh), \ |
---|
| 291 | + XFM_SF(GAMUT_REMAP_C21_C22, GAMUT_REMAP_C22, mask_sh), \ |
---|
| 292 | + XFM_SF(GAMUT_REMAP_C23_C24, GAMUT_REMAP_C23, mask_sh), \ |
---|
| 293 | + XFM_SF(GAMUT_REMAP_C23_C24, GAMUT_REMAP_C24, mask_sh), \ |
---|
| 294 | + XFM_SF(GAMUT_REMAP_C31_C32, GAMUT_REMAP_C31, mask_sh), \ |
---|
| 295 | + XFM_SF(GAMUT_REMAP_C31_C32, GAMUT_REMAP_C32, mask_sh), \ |
---|
| 296 | + XFM_SF(GAMUT_REMAP_C33_C34, GAMUT_REMAP_C33, mask_sh), \ |
---|
| 297 | + XFM_SF(GAMUT_REMAP_C33_C34, GAMUT_REMAP_C34, mask_sh), \ |
---|
| 298 | + XFM_SF(GAMUT_REMAP_CONTROL, GRPH_GAMUT_REMAP_MODE, mask_sh), \ |
---|
| 299 | + XFM_SF(OUTPUT_CSC_C11_C12, OUTPUT_CSC_C11, mask_sh),\ |
---|
| 300 | + XFM_SF(OUTPUT_CSC_C11_C12, OUTPUT_CSC_C12, mask_sh),\ |
---|
| 301 | + XFM_SF(OUTPUT_CSC_CONTROL, OUTPUT_CSC_GRPH_MODE, mask_sh),\ |
---|
| 302 | + XFM_SF(REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START, mask_sh),\ |
---|
| 303 | + XFM_SF(REGAMMA_CNTLA_START_CNTL, REGAMMA_CNTLA_EXP_REGION_START_SEGMENT, mask_sh),\ |
---|
| 304 | + XFM_SF(REGAMMA_CNTLA_SLOPE_CNTL, REGAMMA_CNTLA_EXP_REGION_LINEAR_SLOPE, mask_sh),\ |
---|
| 305 | + XFM_SF(REGAMMA_CNTLA_END_CNTL1, REGAMMA_CNTLA_EXP_REGION_END, mask_sh),\ |
---|
| 306 | + XFM_SF(REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_BASE, mask_sh),\ |
---|
| 307 | + XFM_SF(REGAMMA_CNTLA_END_CNTL2, REGAMMA_CNTLA_EXP_REGION_END_SLOPE, mask_sh),\ |
---|
| 308 | + XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_LUT_OFFSET, mask_sh),\ |
---|
| 309 | + XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION0_NUM_SEGMENTS, mask_sh),\ |
---|
| 310 | + XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_LUT_OFFSET, mask_sh),\ |
---|
| 311 | + XFM_SF(REGAMMA_CNTLA_REGION_0_1, REGAMMA_CNTLA_EXP_REGION1_NUM_SEGMENTS, mask_sh),\ |
---|
| 312 | + XFM_SF(REGAMMA_LUT_WRITE_EN_MASK, REGAMMA_LUT_WRITE_EN_MASK, mask_sh),\ |
---|
| 313 | + XFM_SF(REGAMMA_CONTROL, GRPH_REGAMMA_MODE, mask_sh),\ |
---|
| 314 | + XFM_SF(SCL_TAP_CONTROL, SCL_H_NUM_OF_TAPS, mask_sh), \ |
---|
| 315 | + XFM_SF(SCL_TAP_CONTROL, SCL_V_NUM_OF_TAPS, mask_sh), \ |
---|
| 316 | + XFM_SF(SCL_BYPASS_CONTROL, SCL_BYPASS_MODE, mask_sh), \ |
---|
| 317 | + XFM_SF(EXT_OVERSCAN_LEFT_RIGHT, EXT_OVERSCAN_LEFT, mask_sh), \ |
---|
| 318 | + XFM_SF(EXT_OVERSCAN_LEFT_RIGHT, EXT_OVERSCAN_RIGHT, mask_sh), \ |
---|
| 319 | + XFM_SF(EXT_OVERSCAN_TOP_BOTTOM, EXT_OVERSCAN_TOP, mask_sh), \ |
---|
| 320 | + XFM_SF(EXT_OVERSCAN_TOP_BOTTOM, EXT_OVERSCAN_BOTTOM, mask_sh), \ |
---|
| 321 | + XFM_SF(SCL_COEF_RAM_SELECT, SCL_C_RAM_FILTER_TYPE, mask_sh), \ |
---|
| 322 | + XFM_SF(SCL_COEF_RAM_SELECT, SCL_C_RAM_PHASE, mask_sh), \ |
---|
| 323 | + XFM_SF(SCL_COEF_RAM_SELECT, SCL_C_RAM_TAP_PAIR_IDX, mask_sh), \ |
---|
| 324 | + XFM_SF(SCL_COEF_RAM_TAP_DATA, SCL_C_RAM_EVEN_TAP_COEF_EN, mask_sh), \ |
---|
| 325 | + XFM_SF(SCL_COEF_RAM_TAP_DATA, SCL_C_RAM_EVEN_TAP_COEF, mask_sh), \ |
---|
| 326 | + XFM_SF(SCL_COEF_RAM_TAP_DATA, SCL_C_RAM_ODD_TAP_COEF_EN, mask_sh), \ |
---|
| 327 | + XFM_SF(SCL_COEF_RAM_TAP_DATA, SCL_C_RAM_ODD_TAP_COEF, mask_sh), \ |
---|
| 328 | + XFM_SF(VIEWPORT_START, VIEWPORT_X_START, mask_sh), \ |
---|
| 329 | + XFM_SF(VIEWPORT_START, VIEWPORT_Y_START, mask_sh), \ |
---|
| 330 | + XFM_SF(VIEWPORT_SIZE, VIEWPORT_HEIGHT, mask_sh), \ |
---|
| 331 | + XFM_SF(VIEWPORT_SIZE, VIEWPORT_WIDTH, mask_sh), \ |
---|
| 332 | + XFM_SF(SCL_HORZ_FILTER_SCALE_RATIO, SCL_H_SCALE_RATIO, mask_sh), \ |
---|
| 333 | + XFM_SF(SCL_VERT_FILTER_SCALE_RATIO, SCL_V_SCALE_RATIO, mask_sh), \ |
---|
| 334 | + XFM_SF(SCL_HORZ_FILTER_INIT_RGB_LUMA, SCL_H_INIT_INT_RGB_Y, mask_sh), \ |
---|
| 335 | + XFM_SF(SCL_HORZ_FILTER_INIT_RGB_LUMA, SCL_H_INIT_FRAC_RGB_Y, mask_sh), \ |
---|
| 336 | + XFM_SF(SCL_HORZ_FILTER_INIT_CHROMA, SCL_H_INIT_INT_CBCR, mask_sh), \ |
---|
| 337 | + XFM_SF(SCL_HORZ_FILTER_INIT_CHROMA, SCL_H_INIT_FRAC_CBCR, mask_sh), \ |
---|
| 338 | + XFM_SF(SCL_VERT_FILTER_INIT, SCL_V_INIT_INT, mask_sh), \ |
---|
| 339 | + XFM_SF(SCL_VERT_FILTER_INIT, SCL_V_INIT_FRAC, mask_sh), \ |
---|
| 340 | + XFM_SF(SCL_HORZ_FILTER_CONTROL, SCL_H_FILTER_PICK_NEAREST, mask_sh), \ |
---|
| 341 | + XFM_SF(SCL_VERT_FILTER_CONTROL, SCL_V_FILTER_PICK_NEAREST, mask_sh), \ |
---|
| 342 | + XFM_SF(DC_LB_MEMORY_SPLIT, DC_LB_MEMORY_CONFIG, mask_sh), \ |
---|
| 343 | + XFM_SF(DC_LB_MEM_SIZE, DC_LB_MEM_SIZE, mask_sh) |
---|
| 344 | +#endif |
---|
206 | 345 | |
---|
207 | 346 | #define XFM_COMMON_MASK_SH_LIST_SOC_BASE(mask_sh) \ |
---|
208 | 347 | XFM_SF(DCP0_OUT_CLAMP_CONTROL_B_CB, OUT_CLAMP_MIN_B_CB, mask_sh), \ |
---|
.. | .. |
---|
302 | 441 | type DCP_RGB_RANDOM_ENABLE; \ |
---|
303 | 442 | type DCP_HIGHPASS_RANDOM_ENABLE; \ |
---|
304 | 443 | type DENORM_MODE; \ |
---|
| 444 | + type INTERLEAVE_EN; \ |
---|
305 | 445 | type PIXEL_DEPTH; \ |
---|
306 | 446 | type PIXEL_EXPAN_MODE; \ |
---|
307 | 447 | type GAMUT_REMAP_C11; \ |
---|
.. | .. |
---|
365 | 505 | type SCL_V_SCALE_RATIO; \ |
---|
366 | 506 | type SCL_H_INIT_INT; \ |
---|
367 | 507 | type SCL_H_INIT_FRAC; \ |
---|
| 508 | + type SCL_H_INIT_INT_RGB_Y; \ |
---|
| 509 | + type SCL_H_INIT_FRAC_RGB_Y; \ |
---|
| 510 | + type SCL_H_INIT_INT_CBCR; \ |
---|
| 511 | + type SCL_H_INIT_FRAC_CBCR; \ |
---|
368 | 512 | type SCL_V_INIT_INT; \ |
---|
369 | 513 | type SCL_V_INIT_FRAC; \ |
---|
| 514 | + type DC_LB_MEMORY_CONFIG; \ |
---|
| 515 | + type DC_LB_MEM_SIZE; \ |
---|
370 | 516 | type LB_MEMORY_CONFIG; \ |
---|
371 | 517 | type LB_MEMORY_SIZE; \ |
---|
372 | 518 | type SCL_V_2TAP_HARDCODE_COEF_EN; \ |
---|
373 | 519 | type SCL_H_2TAP_HARDCODE_COEF_EN; \ |
---|
| 520 | + type SCL_V_FILTER_PICK_NEAREST; \ |
---|
| 521 | + type SCL_H_FILTER_PICK_NEAREST; \ |
---|
374 | 522 | type SCL_COEF_UPDATE_COMPLETE; \ |
---|
375 | 523 | type ALPHA_EN |
---|
376 | 524 | |
---|
.. | .. |
---|
383 | 531 | }; |
---|
384 | 532 | |
---|
385 | 533 | struct dce_transform_registers { |
---|
| 534 | +#if defined(CONFIG_DRM_AMD_DC_SI) |
---|
| 535 | + uint32_t DATA_FORMAT; |
---|
| 536 | +#endif |
---|
386 | 537 | uint32_t LB_DATA_FORMAT; |
---|
387 | 538 | uint32_t GAMUT_REMAP_CONTROL; |
---|
388 | 539 | uint32_t GAMUT_REMAP_C11_C12; |
---|
.. | .. |
---|
438 | 589 | uint32_t SCL_HORZ_FILTER_SCALE_RATIO; |
---|
439 | 590 | uint32_t SCL_VERT_FILTER_SCALE_RATIO; |
---|
440 | 591 | uint32_t SCL_HORZ_FILTER_INIT; |
---|
| 592 | +#if defined(CONFIG_DRM_AMD_DC_SI) |
---|
| 593 | + uint32_t SCL_HORZ_FILTER_INIT_RGB_LUMA; |
---|
| 594 | + uint32_t SCL_HORZ_FILTER_INIT_CHROMA; |
---|
| 595 | +#endif |
---|
441 | 596 | uint32_t SCL_VERT_FILTER_INIT; |
---|
442 | 597 | uint32_t SCL_AUTOMATIC_MODE_CONTROL; |
---|
| 598 | +#if defined(CONFIG_DRM_AMD_DC_SI) |
---|
| 599 | + uint32_t DC_LB_MEMORY_SPLIT; |
---|
| 600 | + uint32_t DC_LB_MEM_SIZE; |
---|
| 601 | +#endif |
---|
443 | 602 | uint32_t LB_MEMORY_CTRL; |
---|
444 | 603 | uint32_t SCL_UPDATE; |
---|
445 | 604 | uint32_t SCL_F_SHARP_CONTROL; |
---|
.. | .. |
---|
456 | 615 | struct init_int_and_frac h_init; |
---|
457 | 616 | struct init_int_and_frac v_init; |
---|
458 | 617 | }; |
---|
| 618 | + |
---|
| 619 | +#if defined(CONFIG_DRM_AMD_DC_SI) |
---|
| 620 | +struct sclh_ratios_inits { |
---|
| 621 | + uint32_t h_int_scale_ratio; |
---|
| 622 | + uint32_t v_int_scale_ratio; |
---|
| 623 | + struct init_int_and_frac h_init_luma; |
---|
| 624 | + struct init_int_and_frac h_init_chroma; |
---|
| 625 | + struct init_int_and_frac v_init; |
---|
| 626 | +}; |
---|
| 627 | +#endif |
---|
459 | 628 | |
---|
460 | 629 | enum ram_filter_type { |
---|
461 | 630 | FILTER_TYPE_RGB_Y_VERTICAL = 0, /* 0 - RGB/Y Vertical filter */ |
---|
.. | .. |
---|
489 | 658 | const struct dce_transform_shift *xfm_shift, |
---|
490 | 659 | const struct dce_transform_mask *xfm_mask); |
---|
491 | 660 | |
---|
| 661 | +#if defined(CONFIG_DRM_AMD_DC_SI) |
---|
| 662 | +void dce60_transform_construct(struct dce_transform *xfm_dce, |
---|
| 663 | + struct dc_context *ctx, |
---|
| 664 | + uint32_t inst, |
---|
| 665 | + const struct dce_transform_registers *regs, |
---|
| 666 | + const struct dce_transform_shift *xfm_shift, |
---|
| 667 | + const struct dce_transform_mask *xfm_mask); |
---|
| 668 | +#endif |
---|
| 669 | + |
---|
492 | 670 | bool dce_transform_get_optimal_number_of_taps( |
---|
493 | 671 | struct transform *xfm, |
---|
494 | 672 | struct scaler_data *scl_data, |
---|