Lines Matching full:offload

43 	struct dc_reg_helper_state *offload,  in submit_dmub_read_modify_write()  argument
46 struct dmub_rb_cmd_read_modify_write *cmd_buf = &offload->cmd_data.read_modify_write; in submit_dmub_read_modify_write()
48 offload->should_burst_write = in submit_dmub_read_modify_write()
49 (offload->same_addr_count == (DMUB_READ_MODIFY_WRITE_SEQ__MAX - 1)); in submit_dmub_read_modify_write()
51 sizeof(struct dmub_cmd_read_modify_write_sequence) * offload->reg_seq_count; in submit_dmub_read_modify_write()
53 dc_wake_and_execute_dmub_cmd(ctx, &offload->cmd_data, DM_DMUB_WAIT_TYPE_NO_WAIT); in submit_dmub_read_modify_write()
57 offload->reg_seq_count = 0; in submit_dmub_read_modify_write()
58 offload->same_addr_count = 0; in submit_dmub_read_modify_write()
62 struct dc_reg_helper_state *offload, in submit_dmub_burst_write() argument
65 struct dmub_rb_cmd_burst_write *cmd_buf = &offload->cmd_data.burst_write; in submit_dmub_burst_write()
68 sizeof(uint32_t) * offload->reg_seq_count; in submit_dmub_burst_write()
70 dc_wake_and_execute_dmub_cmd(ctx, &offload->cmd_data, DM_DMUB_WAIT_TYPE_NO_WAIT); in submit_dmub_burst_write()
74 offload->reg_seq_count = 0; in submit_dmub_burst_write()
78 struct dc_reg_helper_state *offload, in submit_dmub_reg_wait() argument
81 struct dmub_rb_cmd_reg_wait *cmd_buf = &offload->cmd_data.reg_wait; in submit_dmub_reg_wait()
83 dc_wake_and_execute_dmub_cmd(ctx, &offload->cmd_data, DM_DMUB_WAIT_TYPE_NO_WAIT); in submit_dmub_reg_wait()
86 offload->reg_seq_count = 0; in submit_dmub_reg_wait()
130 struct dc_reg_helper_state *offload, in dmub_flush_buffer_execute() argument
133 submit_dmub_read_modify_write(offload, ctx); in dmub_flush_buffer_execute()
137 struct dc_reg_helper_state *offload, in dmub_flush_burst_write_buffer_execute() argument
140 submit_dmub_burst_write(offload, ctx); in dmub_flush_burst_write_buffer_execute()
146 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_value_burst_set_pack() local
147 struct dmub_rb_cmd_burst_write *cmd_buf = &offload->cmd_data.burst_write; in dmub_reg_value_burst_set_pack()
150 if (offload->reg_seq_count == DMUB_BURST_WRITE_VALUES__MAX) in dmub_reg_value_burst_set_pack()
151 dmub_flush_burst_write_buffer_execute(offload, ctx); in dmub_reg_value_burst_set_pack()
153 if (offload->cmd_data.cmd_common.header.type == DMUB_CMD__REG_SEQ_BURST_WRITE && in dmub_reg_value_burst_set_pack()
155 dmub_flush_burst_write_buffer_execute(offload, ctx); in dmub_reg_value_burst_set_pack()
162 cmd_buf->write_values[offload->reg_seq_count] = reg_val; in dmub_reg_value_burst_set_pack()
163 offload->reg_seq_count++; in dmub_reg_value_burst_set_pack()
171 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_value_pack() local
172 struct dmub_rb_cmd_read_modify_write *cmd_buf = &offload->cmd_data.read_modify_write; in dmub_reg_value_pack()
176 if (offload->cmd_data.cmd_common.header.type != DMUB_CMD__REG_SEQ_BURST_WRITE && in dmub_reg_value_pack()
177 offload->reg_seq_count == DMUB_READ_MODIFY_WRITE_SEQ__MAX) in dmub_reg_value_pack()
178 dmub_flush_buffer_execute(offload, ctx); in dmub_reg_value_pack()
180 if (offload->should_burst_write) { in dmub_reg_value_pack()
184 offload->should_burst_write = false; in dmub_reg_value_pack()
190 seq = &cmd_buf->seq[offload->reg_seq_count]; in dmub_reg_value_pack()
192 if (offload->reg_seq_count) { in dmub_reg_value_pack()
193 if (cmd_buf->seq[offload->reg_seq_count - 1].addr == addr) in dmub_reg_value_pack()
194 offload->same_addr_count++; in dmub_reg_value_pack()
196 offload->same_addr_count = 0; in dmub_reg_value_pack()
202 offload->reg_seq_count++; in dmub_reg_value_pack()
210 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_wait_done_pack() local
211 struct dmub_rb_cmd_reg_wait *cmd_buf = &offload->cmd_data.reg_wait; in dmub_reg_wait_done_pack()
493 // when reg read, there should not be any offload. in generic_read_indirect_reg()
634 struct dc_reg_helper_state *offload = in reg_sequence_start_gather() local
637 /* caller sequence mismatch. need to debug caller. offload will not work!!! */ in reg_sequence_start_gather()
638 ASSERT(!offload->gather_in_progress); in reg_sequence_start_gather()
640 offload->gather_in_progress = true; in reg_sequence_start_gather()
646 struct dc_reg_helper_state *offload; in reg_sequence_start_execute() local
651 offload = &ctx->dmub_srv->reg_helper_offload; in reg_sequence_start_execute()
653 if (offload && offload->gather_in_progress) { in reg_sequence_start_execute()
654 offload->gather_in_progress = false; in reg_sequence_start_execute()
655 offload->should_burst_write = false; in reg_sequence_start_execute()
656 switch (offload->cmd_data.cmd_common.header.type) { in reg_sequence_start_execute()
658 submit_dmub_read_modify_write(offload, ctx); in reg_sequence_start_execute()
661 submit_dmub_reg_wait(offload, ctx); in reg_sequence_start_execute()
664 submit_dmub_burst_write(offload, ctx); in reg_sequence_start_execute()
675 struct dc_reg_helper_state *offload; in reg_sequence_wait_done() local
680 offload = &ctx->dmub_srv->reg_helper_offload; in reg_sequence_wait_done()
682 if (offload && in reg_sequence_wait_done()