| .. | .. |
|---|
| 54 | 54 | SRI(OTG_3D_STRUCTURE_CONTROL, OTG, inst),\ |
|---|
| 55 | 55 | SRI(OTG_STEREO_STATUS, OTG, inst),\ |
|---|
| 56 | 56 | SRI(OTG_V_TOTAL_MAX, OTG, inst),\ |
|---|
| 57 | + SRI(OTG_V_TOTAL_MID, OTG, inst),\ |
|---|
| 57 | 58 | SRI(OTG_V_TOTAL_MIN, OTG, inst),\ |
|---|
| 58 | 59 | SRI(OTG_V_TOTAL_CONTROL, OTG, inst),\ |
|---|
| 59 | 60 | SRI(OTG_TRIGA_CNTL, OTG, inst),\ |
|---|
| .. | .. |
|---|
| 67 | 68 | SRI(OTG_CLOCK_CONTROL, OTG, inst),\ |
|---|
| 68 | 69 | SRI(OTG_VERTICAL_INTERRUPT0_CONTROL, OTG, inst),\ |
|---|
| 69 | 70 | SRI(OTG_VERTICAL_INTERRUPT0_POSITION, OTG, inst),\ |
|---|
| 71 | + SRI(OTG_VERTICAL_INTERRUPT1_CONTROL, OTG, inst),\ |
|---|
| 72 | + SRI(OTG_VERTICAL_INTERRUPT1_POSITION, OTG, inst),\ |
|---|
| 70 | 73 | SRI(OTG_VERTICAL_INTERRUPT2_CONTROL, OTG, inst),\ |
|---|
| 71 | 74 | SRI(OTG_VERTICAL_INTERRUPT2_POSITION, OTG, inst),\ |
|---|
| 72 | 75 | SRI(OPTC_INPUT_CLOCK_CONTROL, ODM, inst),\ |
|---|
| .. | .. |
|---|
| 82 | 85 | SRI(OTG_CRC0_WINDOWA_X_CONTROL, OTG, inst),\ |
|---|
| 83 | 86 | SRI(OTG_CRC0_WINDOWA_Y_CONTROL, OTG, inst),\ |
|---|
| 84 | 87 | SRI(OTG_CRC0_WINDOWB_X_CONTROL, OTG, inst),\ |
|---|
| 85 | | - SRI(OTG_CRC0_WINDOWB_Y_CONTROL, OTG, inst) |
|---|
| 88 | + SRI(OTG_CRC0_WINDOWB_Y_CONTROL, OTG, inst),\ |
|---|
| 89 | + SR(GSL_SOURCE_SELECT),\ |
|---|
| 90 | + SRI(OTG_GLOBAL_CONTROL2, OTG, inst),\ |
|---|
| 91 | + SRI(OTG_TRIGA_MANUAL_TRIG, OTG, inst) |
|---|
| 86 | 92 | |
|---|
| 87 | 93 | #define TG_COMMON_REG_LIST_DCN1_0(inst) \ |
|---|
| 88 | 94 | TG_COMMON_REG_LIST_DCN(inst),\ |
|---|
| 89 | 95 | SRI(OTG_TEST_PATTERN_PARAMETERS, OTG, inst),\ |
|---|
| 90 | 96 | SRI(OTG_TEST_PATTERN_CONTROL, OTG, inst),\ |
|---|
| 91 | | - SRI(OTG_TEST_PATTERN_COLOR, OTG, inst) |
|---|
| 97 | + SRI(OTG_TEST_PATTERN_COLOR, OTG, inst),\ |
|---|
| 98 | + SRI(OTG_MANUAL_FLOW_CONTROL, OTG, inst) |
|---|
| 92 | 99 | |
|---|
| 93 | 100 | |
|---|
| 94 | 101 | struct dcn_optc_registers { |
|---|
| .. | .. |
|---|
| 119 | 126 | uint32_t OTG_3D_STRUCTURE_CONTROL; |
|---|
| 120 | 127 | uint32_t OTG_STEREO_STATUS; |
|---|
| 121 | 128 | uint32_t OTG_V_TOTAL_MAX; |
|---|
| 129 | + uint32_t OTG_V_TOTAL_MID; |
|---|
| 122 | 130 | uint32_t OTG_V_TOTAL_MIN; |
|---|
| 123 | 131 | uint32_t OTG_V_TOTAL_CONTROL; |
|---|
| 124 | 132 | uint32_t OTG_TRIGA_CNTL; |
|---|
| 133 | + uint32_t OTG_TRIGA_MANUAL_TRIG; |
|---|
| 134 | + uint32_t OTG_MANUAL_FLOW_CONTROL; |
|---|
| 125 | 135 | uint32_t OTG_FORCE_COUNT_NOW_CNTL; |
|---|
| 126 | 136 | uint32_t OTG_STATIC_SCREEN_CONTROL; |
|---|
| 127 | 137 | uint32_t OTG_STATUS_FRAME_COUNT; |
|---|
| .. | .. |
|---|
| 135 | 145 | uint32_t OTG_CLOCK_CONTROL; |
|---|
| 136 | 146 | uint32_t OTG_VERTICAL_INTERRUPT0_CONTROL; |
|---|
| 137 | 147 | uint32_t OTG_VERTICAL_INTERRUPT0_POSITION; |
|---|
| 148 | + uint32_t OTG_VERTICAL_INTERRUPT1_CONTROL; |
|---|
| 149 | + uint32_t OTG_VERTICAL_INTERRUPT1_POSITION; |
|---|
| 138 | 150 | uint32_t OTG_VERTICAL_INTERRUPT2_CONTROL; |
|---|
| 139 | 151 | uint32_t OTG_VERTICAL_INTERRUPT2_POSITION; |
|---|
| 140 | 152 | uint32_t OPTC_INPUT_CLOCK_CONTROL; |
|---|
| .. | .. |
|---|
| 146 | 158 | uint32_t OTG_GSL_WINDOW_Y; |
|---|
| 147 | 159 | uint32_t OTG_VUPDATE_KEEPOUT; |
|---|
| 148 | 160 | uint32_t OTG_CRC_CNTL; |
|---|
| 161 | + uint32_t OTG_CRC_CNTL2; |
|---|
| 149 | 162 | uint32_t OTG_CRC0_DATA_RG; |
|---|
| 150 | 163 | uint32_t OTG_CRC0_DATA_B; |
|---|
| 151 | 164 | uint32_t OTG_CRC0_WINDOWA_X_CONTROL; |
|---|
| 152 | 165 | uint32_t OTG_CRC0_WINDOWA_Y_CONTROL; |
|---|
| 153 | 166 | uint32_t OTG_CRC0_WINDOWB_X_CONTROL; |
|---|
| 154 | 167 | uint32_t OTG_CRC0_WINDOWB_Y_CONTROL; |
|---|
| 168 | + uint32_t GSL_SOURCE_SELECT; |
|---|
| 169 | + uint32_t DWB_SOURCE_SELECT; |
|---|
| 170 | + uint32_t OTG_DSC_START_POSITION; |
|---|
| 171 | + uint32_t OPTC_DATA_FORMAT_CONTROL; |
|---|
| 172 | + uint32_t OPTC_BYTES_PER_PIXEL; |
|---|
| 173 | + uint32_t OPTC_WIDTH_CONTROL; |
|---|
| 174 | +#if defined(CONFIG_DRM_AMD_DC_DCN3_0) |
|---|
| 175 | + uint32_t OTG_BLANK_DATA_COLOR; |
|---|
| 176 | + uint32_t OTG_BLANK_DATA_COLOR_EXT; |
|---|
| 177 | + uint32_t OTG_DRR_TRIGGER_WINDOW; |
|---|
| 178 | + uint32_t OTG_M_CONST_DTO0; |
|---|
| 179 | + uint32_t OTG_M_CONST_DTO1; |
|---|
| 180 | + uint32_t OTG_DRR_V_TOTAL_CHANGE; |
|---|
| 181 | + uint32_t OTG_GLOBAL_CONTROL4; |
|---|
| 182 | +#endif |
|---|
| 155 | 183 | }; |
|---|
| 156 | 184 | |
|---|
| 157 | 185 | #define TG_COMMON_MASK_SH_LIST_DCN(mask_sh)\ |
|---|
| .. | .. |
|---|
| 167 | 195 | SF(OTG0_OTG_GLOBAL_CONTROL0, OTG_MASTER_UPDATE_LOCK_SEL, mask_sh),\ |
|---|
| 168 | 196 | SF(OTG0_OTG_DOUBLE_BUFFER_CONTROL, OTG_UPDATE_PENDING, mask_sh),\ |
|---|
| 169 | 197 | SF(OTG0_OTG_DOUBLE_BUFFER_CONTROL, OTG_BLANK_DATA_DOUBLE_BUFFER_EN, mask_sh),\ |
|---|
| 198 | + SF(OTG0_OTG_DOUBLE_BUFFER_CONTROL, OTG_RANGE_TIMING_DBUF_UPDATE_MODE, mask_sh),\ |
|---|
| 170 | 199 | SF(OTG0_OTG_H_TOTAL, OTG_H_TOTAL, mask_sh),\ |
|---|
| 171 | 200 | SF(OTG0_OTG_H_BLANK_START_END, OTG_H_BLANK_START, mask_sh),\ |
|---|
| 172 | 201 | SF(OTG0_OTG_H_BLANK_START_END, OTG_H_BLANK_END, mask_sh),\ |
|---|
| .. | .. |
|---|
| 196 | 225 | SF(OTG0_OTG_3D_STRUCTURE_CONTROL, OTG_3D_STRUCTURE_V_UPDATE_MODE, mask_sh),\ |
|---|
| 197 | 226 | SF(OTG0_OTG_3D_STRUCTURE_CONTROL, OTG_3D_STRUCTURE_STEREO_SEL_OVR, mask_sh),\ |
|---|
| 198 | 227 | SF(OTG0_OTG_V_TOTAL_MAX, OTG_V_TOTAL_MAX, mask_sh),\ |
|---|
| 228 | + SF(OTG0_OTG_V_TOTAL_MID, OTG_V_TOTAL_MID, mask_sh),\ |
|---|
| 199 | 229 | SF(OTG0_OTG_V_TOTAL_MIN, OTG_V_TOTAL_MIN, mask_sh),\ |
|---|
| 200 | 230 | SF(OTG0_OTG_V_TOTAL_CONTROL, OTG_V_TOTAL_MIN_SEL, mask_sh),\ |
|---|
| 201 | 231 | SF(OTG0_OTG_V_TOTAL_CONTROL, OTG_V_TOTAL_MAX_SEL, mask_sh),\ |
|---|
| 202 | 232 | SF(OTG0_OTG_V_TOTAL_CONTROL, OTG_FORCE_LOCK_ON_EVENT, mask_sh),\ |
|---|
| 203 | 233 | SF(OTG0_OTG_V_TOTAL_CONTROL, OTG_SET_V_TOTAL_MIN_MASK_EN, mask_sh),\ |
|---|
| 204 | 234 | SF(OTG0_OTG_V_TOTAL_CONTROL, OTG_SET_V_TOTAL_MIN_MASK, mask_sh),\ |
|---|
| 235 | + SF(OTG0_OTG_V_TOTAL_CONTROL, OTG_VTOTAL_MID_REPLACING_MAX_EN, mask_sh),\ |
|---|
| 236 | + SF(OTG0_OTG_V_TOTAL_CONTROL, OTG_VTOTAL_MID_FRAME_NUM, mask_sh),\ |
|---|
| 205 | 237 | SF(OTG0_OTG_FORCE_COUNT_NOW_CNTL, OTG_FORCE_COUNT_NOW_CLEAR, mask_sh),\ |
|---|
| 206 | 238 | SF(OTG0_OTG_FORCE_COUNT_NOW_CNTL, OTG_FORCE_COUNT_NOW_MODE, mask_sh),\ |
|---|
| 207 | 239 | SF(OTG0_OTG_FORCE_COUNT_NOW_CNTL, OTG_FORCE_COUNT_NOW_OCCURRED, mask_sh),\ |
|---|
| .. | .. |
|---|
| 209 | 241 | SF(OTG0_OTG_TRIGA_CNTL, OTG_TRIGA_SOURCE_PIPE_SELECT, mask_sh),\ |
|---|
| 210 | 242 | SF(OTG0_OTG_TRIGA_CNTL, OTG_TRIGA_RISING_EDGE_DETECT_CNTL, mask_sh),\ |
|---|
| 211 | 243 | SF(OTG0_OTG_TRIGA_CNTL, OTG_TRIGA_FALLING_EDGE_DETECT_CNTL, mask_sh),\ |
|---|
| 244 | + SF(OTG0_OTG_TRIGA_CNTL, OTG_TRIGA_POLARITY_SELECT, mask_sh),\ |
|---|
| 245 | + SF(OTG0_OTG_TRIGA_CNTL, OTG_TRIGA_FREQUENCY_SELECT, mask_sh),\ |
|---|
| 246 | + SF(OTG0_OTG_TRIGA_CNTL, OTG_TRIGA_DELAY, mask_sh),\ |
|---|
| 247 | + SF(OTG0_OTG_TRIGA_CNTL, OTG_TRIGA_CLEAR, mask_sh),\ |
|---|
| 248 | + SF(OTG0_OTG_TRIGA_MANUAL_TRIG, OTG_TRIGA_MANUAL_TRIG, mask_sh),\ |
|---|
| 212 | 249 | SF(OTG0_OTG_STATIC_SCREEN_CONTROL, OTG_STATIC_SCREEN_EVENT_MASK, mask_sh),\ |
|---|
| 213 | 250 | SF(OTG0_OTG_STATIC_SCREEN_CONTROL, OTG_STATIC_SCREEN_FRAME_COUNT, mask_sh),\ |
|---|
| 214 | 251 | SF(OTG0_OTG_STATUS_FRAME_COUNT, OTG_FRAME_COUNT, mask_sh),\ |
|---|
| .. | .. |
|---|
| 227 | 264 | SF(OTG0_OTG_VERTICAL_INTERRUPT0_CONTROL, OTG_VERTICAL_INTERRUPT0_INT_ENABLE, mask_sh),\ |
|---|
| 228 | 265 | SF(OTG0_OTG_VERTICAL_INTERRUPT0_POSITION, OTG_VERTICAL_INTERRUPT0_LINE_START, mask_sh),\ |
|---|
| 229 | 266 | SF(OTG0_OTG_VERTICAL_INTERRUPT0_POSITION, OTG_VERTICAL_INTERRUPT0_LINE_END, mask_sh),\ |
|---|
| 267 | + SF(OTG0_OTG_VERTICAL_INTERRUPT1_CONTROL, OTG_VERTICAL_INTERRUPT1_INT_ENABLE, mask_sh),\ |
|---|
| 268 | + SF(OTG0_OTG_VERTICAL_INTERRUPT1_POSITION, OTG_VERTICAL_INTERRUPT1_LINE_START, mask_sh),\ |
|---|
| 230 | 269 | SF(OTG0_OTG_VERTICAL_INTERRUPT2_CONTROL, OTG_VERTICAL_INTERRUPT2_INT_ENABLE, mask_sh),\ |
|---|
| 231 | 270 | SF(OTG0_OTG_VERTICAL_INTERRUPT2_POSITION, OTG_VERTICAL_INTERRUPT2_LINE_START, mask_sh),\ |
|---|
| 232 | 271 | SF(ODM0_OPTC_INPUT_CLOCK_CONTROL, OPTC_INPUT_CLK_EN, mask_sh),\ |
|---|
| .. | .. |
|---|
| 260 | 299 | SF(OTG0_OTG_CRC0_WINDOWB_X_CONTROL, OTG_CRC0_WINDOWB_X_START, mask_sh),\ |
|---|
| 261 | 300 | SF(OTG0_OTG_CRC0_WINDOWB_X_CONTROL, OTG_CRC0_WINDOWB_X_END, mask_sh),\ |
|---|
| 262 | 301 | SF(OTG0_OTG_CRC0_WINDOWB_Y_CONTROL, OTG_CRC0_WINDOWB_Y_START, mask_sh),\ |
|---|
| 263 | | - SF(OTG0_OTG_CRC0_WINDOWB_Y_CONTROL, OTG_CRC0_WINDOWB_Y_END, mask_sh) |
|---|
| 302 | + SF(OTG0_OTG_CRC0_WINDOWB_Y_CONTROL, OTG_CRC0_WINDOWB_Y_END, mask_sh),\ |
|---|
| 303 | + SF(GSL_SOURCE_SELECT, GSL0_READY_SOURCE_SEL, mask_sh),\ |
|---|
| 304 | + SF(GSL_SOURCE_SELECT, GSL1_READY_SOURCE_SEL, mask_sh),\ |
|---|
| 305 | + SF(GSL_SOURCE_SELECT, GSL2_READY_SOURCE_SEL, mask_sh),\ |
|---|
| 306 | + SF(OTG0_OTG_GLOBAL_CONTROL2, MANUAL_FLOW_CONTROL_SEL, mask_sh) |
|---|
| 307 | + |
|---|
| 264 | 308 | |
|---|
| 265 | 309 | |
|---|
| 266 | 310 | #define TG_COMMON_MASK_SH_LIST_DCN1_0(mask_sh)\ |
|---|
| .. | .. |
|---|
| 276 | 320 | SF(OTG0_OTG_TEST_PATTERN_CONTROL, OTG_TEST_PATTERN_COLOR_FORMAT, mask_sh),\ |
|---|
| 277 | 321 | SF(OTG0_OTG_TEST_PATTERN_COLOR, OTG_TEST_PATTERN_MASK, mask_sh),\ |
|---|
| 278 | 322 | SF(OTG0_OTG_TEST_PATTERN_COLOR, OTG_TEST_PATTERN_DATA, mask_sh),\ |
|---|
| 279 | | - SF(ODM0_OPTC_DATA_SOURCE_SELECT, OPTC_SRC_SEL, mask_sh) |
|---|
| 323 | + SF(ODM0_OPTC_DATA_SOURCE_SELECT, OPTC_SRC_SEL, mask_sh),\ |
|---|
| 324 | + SF(OTG0_OTG_MANUAL_FLOW_CONTROL, MANUAL_FLOW_CONTROL, mask_sh),\ |
|---|
| 280 | 325 | |
|---|
| 281 | 326 | #define TG_REG_FIELD_LIST_DCN1_0(type) \ |
|---|
| 282 | 327 | type VSTARTUP_START;\ |
|---|
| .. | .. |
|---|
| 319 | 364 | type OTG_3D_STRUCTURE_V_UPDATE_MODE;\ |
|---|
| 320 | 365 | type OTG_3D_STRUCTURE_STEREO_SEL_OVR;\ |
|---|
| 321 | 366 | type OTG_V_TOTAL_MAX;\ |
|---|
| 367 | + type OTG_V_TOTAL_MID;\ |
|---|
| 322 | 368 | type OTG_V_TOTAL_MIN;\ |
|---|
| 323 | 369 | type OTG_V_TOTAL_MIN_SEL;\ |
|---|
| 324 | 370 | type OTG_V_TOTAL_MAX_SEL;\ |
|---|
| 371 | + type OTG_VTOTAL_MID_REPLACING_MAX_EN;\ |
|---|
| 372 | + type OTG_VTOTAL_MID_FRAME_NUM;\ |
|---|
| 325 | 373 | type OTG_FORCE_LOCK_ON_EVENT;\ |
|---|
| 326 | 374 | type OTG_SET_V_TOTAL_MIN_MASK_EN;\ |
|---|
| 327 | 375 | type OTG_SET_V_TOTAL_MIN_MASK;\ |
|---|
| .. | .. |
|---|
| 332 | 380 | type OTG_TRIGA_SOURCE_PIPE_SELECT;\ |
|---|
| 333 | 381 | type OTG_TRIGA_RISING_EDGE_DETECT_CNTL;\ |
|---|
| 334 | 382 | type OTG_TRIGA_FALLING_EDGE_DETECT_CNTL;\ |
|---|
| 383 | + type OTG_TRIGA_POLARITY_SELECT;\ |
|---|
| 384 | + type OTG_TRIGA_FREQUENCY_SELECT;\ |
|---|
| 385 | + type OTG_TRIGA_DELAY;\ |
|---|
| 386 | + type OTG_TRIGA_CLEAR;\ |
|---|
| 387 | + type OTG_TRIGA_MANUAL_TRIG;\ |
|---|
| 335 | 388 | type OTG_STATIC_SCREEN_EVENT_MASK;\ |
|---|
| 336 | 389 | type OTG_STATIC_SCREEN_FRAME_COUNT;\ |
|---|
| 337 | 390 | type OTG_FRAME_COUNT;\ |
|---|
| .. | .. |
|---|
| 343 | 396 | type OTG_BLACK_COLOR_B_CB;\ |
|---|
| 344 | 397 | type OTG_BLACK_COLOR_G_Y;\ |
|---|
| 345 | 398 | type OTG_BLACK_COLOR_R_CR;\ |
|---|
| 399 | + type OTG_BLANK_DATA_COLOR_BLUE_CB;\ |
|---|
| 400 | + type OTG_BLANK_DATA_COLOR_GREEN_Y;\ |
|---|
| 401 | + type OTG_BLANK_DATA_COLOR_RED_CR;\ |
|---|
| 402 | + type OTG_BLANK_DATA_COLOR_BLUE_CB_EXT;\ |
|---|
| 403 | + type OTG_BLANK_DATA_COLOR_GREEN_Y_EXT;\ |
|---|
| 404 | + type OTG_BLANK_DATA_COLOR_RED_CR_EXT;\ |
|---|
| 405 | + type OTG_VTOTAL_MID_REPLACING_MIN_EN;\ |
|---|
| 346 | 406 | type OTG_TEST_PATTERN_INC0;\ |
|---|
| 347 | 407 | type OTG_TEST_PATTERN_INC1;\ |
|---|
| 348 | 408 | type OTG_TEST_PATTERN_VRES;\ |
|---|
| .. | .. |
|---|
| 361 | 421 | type OTG_VERTICAL_INTERRUPT0_INT_ENABLE;\ |
|---|
| 362 | 422 | type OTG_VERTICAL_INTERRUPT0_LINE_START;\ |
|---|
| 363 | 423 | type OTG_VERTICAL_INTERRUPT0_LINE_END;\ |
|---|
| 424 | + type OTG_VERTICAL_INTERRUPT1_INT_ENABLE;\ |
|---|
| 425 | + type OTG_VERTICAL_INTERRUPT1_LINE_START;\ |
|---|
| 364 | 426 | type OTG_VERTICAL_INTERRUPT2_INT_ENABLE;\ |
|---|
| 365 | 427 | type OTG_VERTICAL_INTERRUPT2_LINE_START;\ |
|---|
| 366 | 428 | type OPTC_INPUT_CLK_EN;\ |
|---|
| .. | .. |
|---|
| 405 | 467 | type OTG_CRC0_WINDOWB_X_START;\ |
|---|
| 406 | 468 | type OTG_CRC0_WINDOWB_X_END;\ |
|---|
| 407 | 469 | type OTG_CRC0_WINDOWB_Y_START;\ |
|---|
| 408 | | - type OTG_CRC0_WINDOWB_Y_END; |
|---|
| 470 | + type OTG_CRC0_WINDOWB_Y_END;\ |
|---|
| 471 | + type GSL0_READY_SOURCE_SEL;\ |
|---|
| 472 | + type GSL1_READY_SOURCE_SEL;\ |
|---|
| 473 | + type GSL2_READY_SOURCE_SEL;\ |
|---|
| 474 | + type MANUAL_FLOW_CONTROL;\ |
|---|
| 475 | + type MANUAL_FLOW_CONTROL_SEL; |
|---|
| 409 | 476 | |
|---|
| 477 | +#if defined(CONFIG_DRM_AMD_DC_DCN3_0) |
|---|
| 410 | 478 | |
|---|
| 411 | 479 | #define TG_REG_FIELD_LIST(type) \ |
|---|
| 412 | | - TG_REG_FIELD_LIST_DCN1_0(type) |
|---|
| 480 | + TG_REG_FIELD_LIST_DCN1_0(type)\ |
|---|
| 481 | + type OTG_V_SYNC_MODE;\ |
|---|
| 482 | + type OTG_DRR_TRIGGER_WINDOW_START_X;\ |
|---|
| 483 | + type OTG_DRR_TRIGGER_WINDOW_END_X;\ |
|---|
| 484 | + type OTG_DRR_V_TOTAL_CHANGE_LIMIT;\ |
|---|
| 485 | + type OTG_OUT_MUX;\ |
|---|
| 486 | + type OTG_M_CONST_DTO_PHASE;\ |
|---|
| 487 | + type OTG_M_CONST_DTO_MODULO;\ |
|---|
| 488 | + type MASTER_UPDATE_LOCK_DB_X;\ |
|---|
| 489 | + type MASTER_UPDATE_LOCK_DB_Y;\ |
|---|
| 490 | + type MASTER_UPDATE_LOCK_DB_EN;\ |
|---|
| 491 | + type GLOBAL_UPDATE_LOCK_EN;\ |
|---|
| 492 | + type DIG_UPDATE_LOCATION;\ |
|---|
| 493 | + type OTG_DSC_START_POSITION_X;\ |
|---|
| 494 | + type OTG_DSC_START_POSITION_LINE_NUM;\ |
|---|
| 495 | + type OPTC_NUM_OF_INPUT_SEGMENT;\ |
|---|
| 496 | + type OPTC_SEG0_SRC_SEL;\ |
|---|
| 497 | + type OPTC_SEG1_SRC_SEL;\ |
|---|
| 498 | + type OPTC_SEG2_SRC_SEL;\ |
|---|
| 499 | + type OPTC_SEG3_SRC_SEL;\ |
|---|
| 500 | + type OPTC_MEM_SEL;\ |
|---|
| 501 | + type OPTC_DATA_FORMAT;\ |
|---|
| 502 | + type OPTC_DSC_MODE;\ |
|---|
| 503 | + type OPTC_DSC_BYTES_PER_PIXEL;\ |
|---|
| 504 | + type OPTC_DSC_SLICE_WIDTH;\ |
|---|
| 505 | + type OPTC_SEGMENT_WIDTH;\ |
|---|
| 506 | + type OPTC_DWB0_SOURCE_SELECT;\ |
|---|
| 507 | + type OPTC_DWB1_SOURCE_SELECT;\ |
|---|
| 508 | + type MASTER_UPDATE_LOCK_DB_START_X;\ |
|---|
| 509 | + type MASTER_UPDATE_LOCK_DB_END_X;\ |
|---|
| 510 | + type MASTER_UPDATE_LOCK_DB_START_Y;\ |
|---|
| 511 | + type MASTER_UPDATE_LOCK_DB_END_Y;\ |
|---|
| 512 | + type DIG_UPDATE_POSITION_X;\ |
|---|
| 513 | + type DIG_UPDATE_POSITION_Y;\ |
|---|
| 514 | + type OTG_H_TIMING_DIV_MODE;\ |
|---|
| 515 | + type OTG_DRR_TIMING_DBUF_UPDATE_MODE;\ |
|---|
| 516 | + type OTG_CRC_DSC_MODE;\ |
|---|
| 517 | + type OTG_CRC_DATA_STREAM_COMBINE_MODE;\ |
|---|
| 518 | + type OTG_CRC_DATA_STREAM_SPLIT_MODE;\ |
|---|
| 519 | + type OTG_CRC_DATA_FORMAT; |
|---|
| 520 | +#else |
|---|
| 521 | + |
|---|
| 522 | +#define TG_REG_FIELD_LIST(type) \ |
|---|
| 523 | + TG_REG_FIELD_LIST_DCN1_0(type)\ |
|---|
| 524 | + type MASTER_UPDATE_LOCK_DB_X;\ |
|---|
| 525 | + type MASTER_UPDATE_LOCK_DB_Y;\ |
|---|
| 526 | + type MASTER_UPDATE_LOCK_DB_EN;\ |
|---|
| 527 | + type GLOBAL_UPDATE_LOCK_EN;\ |
|---|
| 528 | + type DIG_UPDATE_LOCATION;\ |
|---|
| 529 | + type OTG_DSC_START_POSITION_X;\ |
|---|
| 530 | + type OTG_DSC_START_POSITION_LINE_NUM;\ |
|---|
| 531 | + type OPTC_NUM_OF_INPUT_SEGMENT;\ |
|---|
| 532 | + type OPTC_SEG0_SRC_SEL;\ |
|---|
| 533 | + type OPTC_SEG1_SRC_SEL;\ |
|---|
| 534 | + type OPTC_MEM_SEL;\ |
|---|
| 535 | + type OPTC_DATA_FORMAT;\ |
|---|
| 536 | + type OPTC_DSC_MODE;\ |
|---|
| 537 | + type OPTC_DSC_BYTES_PER_PIXEL;\ |
|---|
| 538 | + type OPTC_DSC_SLICE_WIDTH;\ |
|---|
| 539 | + type OPTC_SEGMENT_WIDTH;\ |
|---|
| 540 | + type OPTC_DWB0_SOURCE_SELECT;\ |
|---|
| 541 | + type OPTC_DWB1_SOURCE_SELECT;\ |
|---|
| 542 | + type OTG_CRC_DSC_MODE;\ |
|---|
| 543 | + type OTG_CRC_DATA_STREAM_COMBINE_MODE;\ |
|---|
| 544 | + type OTG_CRC_DATA_STREAM_SPLIT_MODE;\ |
|---|
| 545 | + type OTG_CRC_DATA_FORMAT; |
|---|
| 546 | +#endif |
|---|
| 413 | 547 | |
|---|
| 414 | 548 | |
|---|
| 415 | 549 | struct dcn_optc_shift { |
|---|
| .. | .. |
|---|
| 427 | 561 | const struct dcn_optc_shift *tg_shift; |
|---|
| 428 | 562 | const struct dcn_optc_mask *tg_mask; |
|---|
| 429 | 563 | |
|---|
| 430 | | - enum controller_id controller_id; |
|---|
| 564 | + int opp_count; |
|---|
| 431 | 565 | |
|---|
| 432 | 566 | uint32_t max_h_total; |
|---|
| 433 | 567 | uint32_t max_v_total; |
|---|
| .. | .. |
|---|
| 438 | 572 | uint32_t min_v_sync_width; |
|---|
| 439 | 573 | uint32_t min_v_blank; |
|---|
| 440 | 574 | uint32_t min_v_blank_interlace; |
|---|
| 575 | + |
|---|
| 576 | + int vstartup_start; |
|---|
| 577 | + int vupdate_offset; |
|---|
| 578 | + int vupdate_width; |
|---|
| 579 | + int vready_offset; |
|---|
| 580 | + enum signal_type signal; |
|---|
| 441 | 581 | }; |
|---|
| 442 | 582 | |
|---|
| 443 | 583 | void dcn10_timing_generator_init(struct optc *optc); |
|---|
| .. | .. |
|---|
| 461 | 601 | uint32_t h_total; |
|---|
| 462 | 602 | uint32_t underflow_occurred_status; |
|---|
| 463 | 603 | uint32_t otg_enabled; |
|---|
| 604 | + uint32_t blank_enabled; |
|---|
| 464 | 605 | }; |
|---|
| 465 | 606 | |
|---|
| 466 | 607 | void optc1_read_otg_state(struct optc *optc1, |
|---|
| 467 | 608 | struct dcn_otg_state *s); |
|---|
| 609 | + |
|---|
| 610 | +bool optc1_get_hw_timing(struct timing_generator *tg, |
|---|
| 611 | + struct dc_crtc_timing *hw_crtc_timing); |
|---|
| 468 | 612 | |
|---|
| 469 | 613 | bool optc1_validate_timing( |
|---|
| 470 | 614 | struct timing_generator *optc, |
|---|
| .. | .. |
|---|
| 473 | 617 | void optc1_program_timing( |
|---|
| 474 | 618 | struct timing_generator *optc, |
|---|
| 475 | 619 | const struct dc_crtc_timing *dc_crtc_timing, |
|---|
| 620 | + int vready_offset, |
|---|
| 621 | + int vstartup_start, |
|---|
| 622 | + int vupdate_offset, |
|---|
| 623 | + int vupdate_width, |
|---|
| 624 | + const enum signal_type signal, |
|---|
| 476 | 625 | bool use_vbios); |
|---|
| 477 | 626 | |
|---|
| 478 | | -void optc1_program_vline_interrupt(struct timing_generator *optc, |
|---|
| 479 | | - const struct dc_crtc_timing *dc_crtc_timing, |
|---|
| 480 | | - unsigned long long vsync_delta); |
|---|
| 627 | +void optc1_setup_vertical_interrupt0( |
|---|
| 628 | + struct timing_generator *optc, |
|---|
| 629 | + uint32_t start_line, |
|---|
| 630 | + uint32_t end_line); |
|---|
| 631 | +void optc1_setup_vertical_interrupt1( |
|---|
| 632 | + struct timing_generator *optc, |
|---|
| 633 | + uint32_t start_line); |
|---|
| 634 | +void optc1_setup_vertical_interrupt2( |
|---|
| 635 | + struct timing_generator *optc, |
|---|
| 636 | + uint32_t start_line); |
|---|
| 481 | 637 | |
|---|
| 482 | 638 | void optc1_program_global_sync( |
|---|
| 483 | | - struct timing_generator *optc); |
|---|
| 639 | + struct timing_generator *optc, |
|---|
| 640 | + int vready_offset, |
|---|
| 641 | + int vstartup_start, |
|---|
| 642 | + int vupdate_offset, |
|---|
| 643 | + int vupdate_width); |
|---|
| 484 | 644 | |
|---|
| 485 | 645 | bool optc1_disable_crtc(struct timing_generator *optc); |
|---|
| 486 | 646 | |
|---|
| .. | .. |
|---|
| 533 | 693 | |
|---|
| 534 | 694 | void optc1_set_static_screen_control( |
|---|
| 535 | 695 | struct timing_generator *optc, |
|---|
| 536 | | - uint32_t value); |
|---|
| 696 | + uint32_t event_triggers, |
|---|
| 697 | + uint32_t num_frames); |
|---|
| 537 | 698 | |
|---|
| 538 | 699 | void optc1_program_stereo(struct timing_generator *optc, |
|---|
| 539 | 700 | const struct dc_crtc_timing *timing, struct crtc_stereo_flags *flags); |
|---|
| .. | .. |
|---|
| 550 | 711 | |
|---|
| 551 | 712 | void optc1_set_blank_data_double_buffer(struct timing_generator *optc, bool enable); |
|---|
| 552 | 713 | |
|---|
| 714 | +void optc1_set_timing_double_buffer(struct timing_generator *optc, bool enable); |
|---|
| 715 | + |
|---|
| 553 | 716 | bool optc1_get_otg_active_size(struct timing_generator *optc, |
|---|
| 554 | 717 | uint32_t *otg_active_width, |
|---|
| 555 | 718 | uint32_t *otg_active_height); |
|---|
| .. | .. |
|---|
| 565 | 728 | bool optc1_get_crc(struct timing_generator *optc, |
|---|
| 566 | 729 | uint32_t *r_cr, uint32_t *g_y, uint32_t *b_cb); |
|---|
| 567 | 730 | |
|---|
| 731 | +bool optc1_is_two_pixels_per_containter(const struct dc_crtc_timing *timing); |
|---|
| 732 | + |
|---|
| 733 | +void optc1_set_vtg_params(struct timing_generator *optc, |
|---|
| 734 | + const struct dc_crtc_timing *dc_crtc_timing); |
|---|
| 735 | + |
|---|
| 568 | 736 | #endif /* __DC_TIMING_GENERATOR_DCN10_H__ */ |
|---|