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()
135 struct dc_reg_helper_state *offload, in dmub_flush_buffer_execute() argument
138 submit_dmub_read_modify_write(offload, ctx); in dmub_flush_buffer_execute()
142 struct dc_reg_helper_state *offload, in dmub_flush_burst_write_buffer_execute() argument
145 submit_dmub_burst_write(offload, ctx); in dmub_flush_burst_write_buffer_execute()
151 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_value_burst_set_pack() local
152 struct dmub_rb_cmd_burst_write *cmd_buf = &offload->cmd_data.burst_write; in dmub_reg_value_burst_set_pack()
155 if (offload->reg_seq_count == DMUB_BURST_WRITE_VALUES__MAX) in dmub_reg_value_burst_set_pack()
156 dmub_flush_burst_write_buffer_execute(offload, ctx); in dmub_reg_value_burst_set_pack()
158 if (offload->cmd_data.cmd_common.header.type == DMUB_CMD__REG_SEQ_BURST_WRITE && in dmub_reg_value_burst_set_pack()
160 dmub_flush_burst_write_buffer_execute(offload, ctx); in dmub_reg_value_burst_set_pack()
167 cmd_buf->write_values[offload->reg_seq_count] = reg_val; in dmub_reg_value_burst_set_pack()
168 offload->reg_seq_count++; in dmub_reg_value_burst_set_pack()
176 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_value_pack() local
177 struct dmub_rb_cmd_read_modify_write *cmd_buf = &offload->cmd_data.read_modify_write; in dmub_reg_value_pack()
181 if (offload->cmd_data.cmd_common.header.type != DMUB_CMD__REG_SEQ_BURST_WRITE && in dmub_reg_value_pack()
182 offload->reg_seq_count == DMUB_READ_MODIFY_WRITE_SEQ__MAX) in dmub_reg_value_pack()
183 dmub_flush_buffer_execute(offload, ctx); in dmub_reg_value_pack()
185 if (offload->should_burst_write) { in dmub_reg_value_pack()
189 offload->should_burst_write = false; in dmub_reg_value_pack()
195 seq = &cmd_buf->seq[offload->reg_seq_count]; in dmub_reg_value_pack()
197 if (offload->reg_seq_count) { in dmub_reg_value_pack()
198 if (cmd_buf->seq[offload->reg_seq_count - 1].addr == addr) in dmub_reg_value_pack()
199 offload->same_addr_count++; in dmub_reg_value_pack()
201 offload->same_addr_count = 0; in dmub_reg_value_pack()
207 offload->reg_seq_count++; in dmub_reg_value_pack()
215 struct dc_reg_helper_state *offload = &ctx->dmub_srv->reg_helper_offload; in dmub_reg_wait_done_pack() local
216 struct dmub_rb_cmd_reg_wait *cmd_buf = &offload->cmd_data.reg_wait; in dmub_reg_wait_done_pack()
499 // when reg read, there should not be any offload. in generic_read_indirect_reg()
640 struct dc_reg_helper_state *offload = in reg_sequence_start_gather() local
643 /* caller sequence mismatch. need to debug caller. offload will not work!!! */ in reg_sequence_start_gather()
644 ASSERT(!offload->gather_in_progress); in reg_sequence_start_gather()
646 offload->gather_in_progress = true; in reg_sequence_start_gather()
652 struct dc_reg_helper_state *offload; in reg_sequence_start_execute() local
657 offload = &ctx->dmub_srv->reg_helper_offload; in reg_sequence_start_execute()
659 if (offload && offload->gather_in_progress) { in reg_sequence_start_execute()
660 offload->gather_in_progress = false; in reg_sequence_start_execute()
661 offload->should_burst_write = false; in reg_sequence_start_execute()
662 switch (offload->cmd_data.cmd_common.header.type) { in reg_sequence_start_execute()
664 submit_dmub_read_modify_write(offload, ctx); in reg_sequence_start_execute()
667 submit_dmub_reg_wait(offload, ctx); in reg_sequence_start_execute()
670 submit_dmub_burst_write(offload, ctx); in reg_sequence_start_execute()
681 struct dc_reg_helper_state *offload; in reg_sequence_wait_done() local
686 offload = &ctx->dmub_srv->reg_helper_offload; in reg_sequence_wait_done()
688 if (offload && in reg_sequence_wait_done()