.. | .. |
---|
469 | 469 | |
---|
470 | 470 | void dce110_timing_generator_set_static_screen_control( |
---|
471 | 471 | struct timing_generator *tg, |
---|
472 | | - uint32_t value) |
---|
| 472 | + uint32_t event_triggers, |
---|
| 473 | + uint32_t num_frames) |
---|
473 | 474 | { |
---|
474 | 475 | struct dce110_timing_generator *tg110 = DCE110TG_FROM_TG(tg); |
---|
475 | 476 | uint32_t static_screen_cntl = 0; |
---|
476 | 477 | uint32_t addr = 0; |
---|
477 | 478 | |
---|
| 479 | + // By register spec, it only takes 8 bit value |
---|
| 480 | + if (num_frames > 0xFF) |
---|
| 481 | + num_frames = 0xFF; |
---|
| 482 | + |
---|
478 | 483 | addr = CRTC_REG(mmCRTC_STATIC_SCREEN_CONTROL); |
---|
479 | 484 | static_screen_cntl = dm_read_reg(tg->ctx, addr); |
---|
480 | 485 | |
---|
481 | 486 | set_reg_field_value(static_screen_cntl, |
---|
482 | | - value, |
---|
| 487 | + event_triggers, |
---|
483 | 488 | CRTC_STATIC_SCREEN_CONTROL, |
---|
484 | 489 | CRTC_STATIC_SCREEN_EVENT_MASK); |
---|
485 | 490 | |
---|
486 | 491 | set_reg_field_value(static_screen_cntl, |
---|
487 | | - 2, |
---|
| 492 | + num_frames, |
---|
488 | 493 | CRTC_STATIC_SCREEN_CONTROL, |
---|
489 | 494 | CRTC_STATIC_SCREEN_FRAME_COUNT); |
---|
490 | 495 | |
---|
.. | .. |
---|
1952 | 1957 | |
---|
1953 | 1958 | void dce110_tg_program_timing(struct timing_generator *tg, |
---|
1954 | 1959 | const struct dc_crtc_timing *timing, |
---|
| 1960 | + int vready_offset, |
---|
| 1961 | + int vstartup_start, |
---|
| 1962 | + int vupdate_offset, |
---|
| 1963 | + int vupdate_width, |
---|
| 1964 | + const enum signal_type signal, |
---|
1955 | 1965 | bool use_vbios) |
---|
1956 | 1966 | { |
---|
1957 | 1967 | if (use_vbios) |
---|