Lines Matching full:offload

40 	struct dc_reg_helper_state *offload,  in submit_dmub_read_modify_write()  argument
43 struct dmub_rb_cmd_read_modify_write *cmd_buf = &offload->cmd_data.read_modify_write; in submit_dmub_read_modify_write()
45 offload->should_burst_write = in submit_dmub_read_modify_write()
46 (offload->same_addr_count == (DMUB_READ_MODIFY_WRITE_SEQ__MAX - 1)); in submit_dmub_read_modify_write()
48 sizeof(struct dmub_cmd_read_modify_write_sequence) * offload->reg_seq_count; in submit_dmub_read_modify_write()
50 dm_execute_dmub_cmd(ctx, &offload->cmd_data, DM_DMUB_WAIT_TYPE_NO_WAIT); in submit_dmub_read_modify_write()
54 offload->reg_seq_count = 0; in submit_dmub_read_modify_write()
55 offload->same_addr_count = 0; in submit_dmub_read_modify_write()
59 struct dc_reg_helper_state *offload, in submit_dmub_burst_write() argument
62 struct dmub_rb_cmd_burst_write *cmd_buf = &offload->cmd_data.burst_write; in submit_dmub_burst_write()
65 sizeof(uint32_t) * offload->reg_seq_count; in submit_dmub_burst_write()
67 dm_execute_dmub_cmd(ctx, &offload->cmd_data, DM_DMUB_WAIT_TYPE_NO_WAIT); in submit_dmub_burst_write()
71 offload->reg_seq_count = 0; in submit_dmub_burst_write()
75 struct dc_reg_helper_state *offload, in submit_dmub_reg_wait() argument
78 struct dmub_rb_cmd_reg_wait *cmd_buf = &offload->cmd_data.reg_wait; in submit_dmub_reg_wait()
80 dm_execute_dmub_cmd(ctx, &offload->cmd_data, DM_DMUB_WAIT_TYPE_NO_WAIT); in submit_dmub_reg_wait()
83 offload->reg_seq_count = 0; in submit_dmub_reg_wait()
132 struct dc_reg_helper_state *offload, in dmub_flush_buffer_execute() argument
135 submit_dmub_read_modify_write(offload, ctx); in dmub_flush_buffer_execute()
139 struct dc_reg_helper_state *offload, in dmub_flush_burst_write_buffer_execute() argument
142 submit_dmub_burst_write(offload, ctx); in dmub_flush_burst_write_buffer_execute()
148 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_value_burst_set_pack() local
149 struct dmub_rb_cmd_burst_write *cmd_buf = &offload->cmd_data.burst_write; in dmub_reg_value_burst_set_pack()
152 if (offload->reg_seq_count == DMUB_BURST_WRITE_VALUES__MAX) in dmub_reg_value_burst_set_pack()
153 dmub_flush_burst_write_buffer_execute(offload, ctx); in dmub_reg_value_burst_set_pack()
155 if (offload->cmd_data.cmd_common.header.type == DMUB_CMD__REG_SEQ_BURST_WRITE && in dmub_reg_value_burst_set_pack()
157 dmub_flush_burst_write_buffer_execute(offload, ctx); in dmub_reg_value_burst_set_pack()
164 cmd_buf->write_values[offload->reg_seq_count] = reg_val; in dmub_reg_value_burst_set_pack()
165 offload->reg_seq_count++; in dmub_reg_value_burst_set_pack()
173 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_value_pack() local
174 struct dmub_rb_cmd_read_modify_write *cmd_buf = &offload->cmd_data.read_modify_write; in dmub_reg_value_pack()
178 if (offload->cmd_data.cmd_common.header.type != DMUB_CMD__REG_SEQ_BURST_WRITE && in dmub_reg_value_pack()
179 offload->reg_seq_count == DMUB_READ_MODIFY_WRITE_SEQ__MAX) in dmub_reg_value_pack()
180 dmub_flush_buffer_execute(offload, ctx); in dmub_reg_value_pack()
182 if (offload->should_burst_write) { in dmub_reg_value_pack()
186 offload->should_burst_write = false; in dmub_reg_value_pack()
192 seq = &cmd_buf->seq[offload->reg_seq_count]; in dmub_reg_value_pack()
194 if (offload->reg_seq_count) { in dmub_reg_value_pack()
195 if (cmd_buf->seq[offload->reg_seq_count - 1].addr == addr) in dmub_reg_value_pack()
196 offload->same_addr_count++; in dmub_reg_value_pack()
198 offload->same_addr_count = 0; in dmub_reg_value_pack()
204 offload->reg_seq_count++; in dmub_reg_value_pack()
212 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_wait_done_pack() local
213 struct dmub_rb_cmd_reg_wait *cmd_buf = &offload->cmd_data.reg_wait; in dmub_reg_wait_done_pack()
496 // when reg read, there should not be any offload. in generic_read_indirect_reg()
637 struct dc_reg_helper_state *offload = in reg_sequence_start_gather() local
640 /* caller sequence mismatch. need to debug caller. offload will not work!!! */ in reg_sequence_start_gather()
641 ASSERT(!offload->gather_in_progress); in reg_sequence_start_gather()
643 offload->gather_in_progress = true; in reg_sequence_start_gather()
649 struct dc_reg_helper_state *offload; in reg_sequence_start_execute() local
654 offload = &ctx->dmub_srv->reg_helper_offload; in reg_sequence_start_execute()
656 if (offload && offload->gather_in_progress) { in reg_sequence_start_execute()
657 offload->gather_in_progress = false; in reg_sequence_start_execute()
658 offload->should_burst_write = false; in reg_sequence_start_execute()
659 switch (offload->cmd_data.cmd_common.header.type) { in reg_sequence_start_execute()
661 submit_dmub_read_modify_write(offload, ctx); in reg_sequence_start_execute()
664 submit_dmub_reg_wait(offload, ctx); in reg_sequence_start_execute()
667 submit_dmub_burst_write(offload, ctx); in reg_sequence_start_execute()
678 struct dc_reg_helper_state *offload; in reg_sequence_wait_done() local
683 offload = &ctx->dmub_srv->reg_helper_offload; in reg_sequence_wait_done()
685 if (offload && in reg_sequence_wait_done()