|
29 | 29 | #include "hw_sequencer.h"
|
30 | 30 | #include "hw_sequencer_private.h"
|
31 | 31 | #include "basics/dc_common.h"
|
| 32 | +#include "resource.h" |
| 33 | +#include "dc_dmub_srv.h" |
32 | 34 |
|
33 | 35 | #define NUM_ELEMENTS(a) (sizeof(a) / sizeof((a)[0]))
|
34 | 36 |
|
@@ -530,6 +532,15 @@ void hwss_build_fast_sequence(struct dc *dc,
|
530 | 532 | block_sequence[*num_steps].params.update_plane_addr_params.pipe_ctx = current_mpc_pipe;
|
531 | 533 | block_sequence[*num_steps].func = HUBP_UPDATE_PLANE_ADDR;
|
532 | 534 | (*num_steps)++;
|
| 535 | + |
| 536 | + if (resource_is_pipe_type(current_mpc_pipe, OTG_MASTER) && |
| 537 | + current_mpc_pipe->stream->mall_stream_config.type == SUBVP_MAIN) { |
| 538 | + block_sequence[*num_steps].params.subvp_save_surf_addr.dc_dmub_srv = dc->ctx->dmub_srv; |
| 539 | + block_sequence[*num_steps].params.subvp_save_surf_addr.addr = ¤t_mpc_pipe->plane_state->address; |
| 540 | + block_sequence[*num_steps].params.subvp_save_surf_addr.subvp_index = current_mpc_pipe->subvp_index; |
| 541 | + block_sequence[*num_steps].func = DMUB_SUBVP_SAVE_SURF_ADDR; |
| 542 | + (*num_steps)++; |
| 543 | + } |
533 | 544 | }
|
534 | 545 |
|
535 | 546 | if (hws->funcs.set_input_transfer_func && current_mpc_pipe->plane_state->update_flags.bits.gamma_change) {
|
@@ -697,6 +708,9 @@ void hwss_execute_sequence(struct dc *dc,
|
697 | 708 | case DMUB_SEND_DMCUB_CMD:
|
698 | 709 | hwss_send_dmcub_cmd(params);
|
699 | 710 | break;
|
| 711 | + case DMUB_SUBVP_SAVE_SURF_ADDR: |
| 712 | + hwss_subvp_save_surf_addr(params); |
| 713 | + break; |
700 | 714 | default:
|
701 | 715 | ASSERT(false);
|
702 | 716 | break;
|
@@ -789,6 +803,15 @@ void hwss_set_ocsc_default(union block_sequence_params *params)
|
789 | 803 | ocsc_mode);
|
790 | 804 | }
|
791 | 805 |
|
| 806 | +void hwss_subvp_save_surf_addr(union block_sequence_params *params) |
| 807 | +{ |
| 808 | + struct dc_dmub_srv *dc_dmub_srv = params->subvp_save_surf_addr.dc_dmub_srv; |
| 809 | + const struct dc_plane_address *addr = params->subvp_save_surf_addr.addr; |
| 810 | + uint8_t subvp_index = params->subvp_save_surf_addr.subvp_index; |
| 811 | + |
| 812 | + dc_dmub_srv_subvp_save_surf_addr(dc_dmub_srv, addr, subvp_index); |
| 813 | +} |
| 814 | + |
792 | 815 | void get_mclk_switch_visual_confirm_color(
|
793 | 816 | struct dc *dc,
|
794 | 817 | struct dc_state *context,
|
|
0 commit comments