• Home
  • Raw
  • Download

Lines Matching refs:smumgr

37 static int smu7_set_smc_sram_address(struct pp_smumgr *smumgr, uint32_t smc_addr, uint32_t limit)  in smu7_set_smc_sram_address()  argument
42 cgs_write_register(smumgr->device, mmSMC_IND_INDEX_11, smc_addr); in smu7_set_smc_sram_address()
43 …SMUM_WRITE_FIELD(smumgr->device, SMC_IND_ACCESS_CNTL, AUTO_INCREMENT_IND_11, 0); /* on ci, SMC_IND… in smu7_set_smc_sram_address()
48 int smu7_copy_bytes_from_smc(struct pp_smumgr *smumgr, uint32_t smc_start_address, uint32_t *dest, … in smu7_copy_bytes_from_smc() argument
62 smu7_read_smc_sram_dword(smumgr, addr, &data, limit); in smu7_copy_bytes_from_smc()
72 smu7_read_smc_sram_dword(smumgr, addr, &data, limit); in smu7_copy_bytes_from_smc()
84 int smu7_copy_bytes_to_smc(struct pp_smumgr *smumgr, uint32_t smc_start_address, in smu7_copy_bytes_to_smc() argument
102 result = smu7_set_smc_sram_address(smumgr, addr, limit); in smu7_copy_bytes_to_smc()
107 cgs_write_register(smumgr->device, mmSMC_IND_DATA_11, data); in smu7_copy_bytes_to_smc()
118 result = smu7_set_smc_sram_address(smumgr, addr, limit); in smu7_copy_bytes_to_smc()
124 original_data = cgs_read_register(smumgr->device, mmSMC_IND_DATA_11); in smu7_copy_bytes_to_smc()
138 result = smu7_set_smc_sram_address(smumgr, addr, limit); in smu7_copy_bytes_to_smc()
143 cgs_write_register(smumgr->device, mmSMC_IND_DATA_11, data); in smu7_copy_bytes_to_smc()
150 int smu7_program_jump_on_start(struct pp_smumgr *smumgr) in smu7_program_jump_on_start() argument
154 smu7_copy_bytes_to_smc(smumgr, 0x0, data, 4, sizeof(data)+1); in smu7_program_jump_on_start()
159 bool smu7_is_smc_ram_running(struct pp_smumgr *smumgr) in smu7_is_smc_ram_running() argument
161 …return ((0 == SMUM_READ_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMC_SYSCON_CLOCK_CNT… in smu7_is_smc_ram_running()
162 && (0x20100 <= cgs_read_ind_register(smumgr->device, CGS_IND_REG__SMC, ixSMC_PC_C))); in smu7_is_smc_ram_running()
165 int smu7_send_msg_to_smc(struct pp_smumgr *smumgr, uint16_t msg) in smu7_send_msg_to_smc() argument
169 if (!smu7_is_smc_ram_running(smumgr)) in smu7_send_msg_to_smc()
173 SMUM_WAIT_FIELD_UNEQUAL(smumgr, SMC_RESP_0, SMC_RESP, 0); in smu7_send_msg_to_smc()
175 ret = SMUM_READ_FIELD(smumgr->device, SMC_RESP_0, SMC_RESP); in smu7_send_msg_to_smc()
180 cgs_write_register(smumgr->device, mmSMC_MESSAGE_0, msg); in smu7_send_msg_to_smc()
182 SMUM_WAIT_FIELD_UNEQUAL(smumgr, SMC_RESP_0, SMC_RESP, 0); in smu7_send_msg_to_smc()
184 ret = SMUM_READ_FIELD(smumgr->device, SMC_RESP_0, SMC_RESP); in smu7_send_msg_to_smc()
192 int smu7_send_msg_to_smc_without_waiting(struct pp_smumgr *smumgr, uint16_t msg) in smu7_send_msg_to_smc_without_waiting() argument
194 cgs_write_register(smumgr->device, mmSMC_MESSAGE_0, msg); in smu7_send_msg_to_smc_without_waiting()
199 int smu7_send_msg_to_smc_with_parameter(struct pp_smumgr *smumgr, uint16_t msg, uint32_t parameter) in smu7_send_msg_to_smc_with_parameter() argument
201 if (!smu7_is_smc_ram_running(smumgr)) { in smu7_send_msg_to_smc_with_parameter()
205 SMUM_WAIT_FIELD_UNEQUAL(smumgr, SMC_RESP_0, SMC_RESP, 0); in smu7_send_msg_to_smc_with_parameter()
207 cgs_write_register(smumgr->device, mmSMC_MSG_ARG_0, parameter); in smu7_send_msg_to_smc_with_parameter()
209 return smu7_send_msg_to_smc(smumgr, msg); in smu7_send_msg_to_smc_with_parameter()
212 int smu7_send_msg_to_smc_with_parameter_without_waiting(struct pp_smumgr *smumgr, uint16_t msg, uin… in smu7_send_msg_to_smc_with_parameter_without_waiting() argument
214 cgs_write_register(smumgr->device, mmSMC_MSG_ARG_0, parameter); in smu7_send_msg_to_smc_with_parameter_without_waiting()
216 return smu7_send_msg_to_smc_without_waiting(smumgr, msg); in smu7_send_msg_to_smc_with_parameter_without_waiting()
219 int smu7_send_msg_to_smc_offset(struct pp_smumgr *smumgr) in smu7_send_msg_to_smc_offset() argument
221 cgs_write_register(smumgr->device, mmSMC_MSG_ARG_0, 0x20000); in smu7_send_msg_to_smc_offset()
223 cgs_write_register(smumgr->device, mmSMC_MESSAGE_0, PPSMC_MSG_Test); in smu7_send_msg_to_smc_offset()
225 SMUM_WAIT_FIELD_UNEQUAL(smumgr, SMC_RESP_0, SMC_RESP, 0); in smu7_send_msg_to_smc_offset()
227 if (1 != SMUM_READ_FIELD(smumgr->device, SMC_RESP_0, SMC_RESP)) in smu7_send_msg_to_smc_offset()
233 int smu7_wait_for_smc_inactive(struct pp_smumgr *smumgr) in smu7_wait_for_smc_inactive() argument
235 if (!smu7_is_smc_ram_running(smumgr)) in smu7_wait_for_smc_inactive()
238 SMUM_WAIT_VFPF_INDIRECT_FIELD(smumgr, SMC_IND, SMC_SYSCON_CLOCK_CNTL_0, cken, 0); in smu7_wait_for_smc_inactive()
289 int smu7_read_smc_sram_dword(struct pp_smumgr *smumgr, uint32_t smc_addr, uint32_t *value, uint32_t… in smu7_read_smc_sram_dword() argument
293 result = smu7_set_smc_sram_address(smumgr, smc_addr, limit); in smu7_read_smc_sram_dword()
298 *value = cgs_read_register(smumgr->device, mmSMC_IND_DATA_11); in smu7_read_smc_sram_dword()
302 int smu7_write_smc_sram_dword(struct pp_smumgr *smumgr, uint32_t smc_addr, uint32_t value, uint32_t… in smu7_write_smc_sram_dword() argument
306 result = smu7_set_smc_sram_address(smumgr, smc_addr, limit); in smu7_write_smc_sram_dword()
311 cgs_write_register(smumgr->device, mmSMC_IND_DATA_11, value); in smu7_write_smc_sram_dword()
354 static int smu7_populate_single_firmware_entry(struct pp_smumgr *smumgr, in smu7_populate_single_firmware_entry() argument
361 result = cgs_get_firmware_info(smumgr->device, in smu7_populate_single_firmware_entry()
384 int smu7_request_smu_load_fw(struct pp_smumgr *smumgr) in smu7_request_smu_load_fw() argument
386 struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(smumgr->backend); in smu7_request_smu_load_fw()
391 if (!smumgr->reload_fw) { in smu7_request_smu_load_fw()
397 cgs_write_ind_register(smumgr->device, CGS_IND_REG__SMC, in smu7_request_smu_load_fw()
398 smu_data->soft_regs_start + smum_get_offsetof(smumgr, in smu7_request_smu_load_fw()
402 if (smumgr->chip_id > CHIP_TOPAZ) { /* add support for Topaz */ in smu7_request_smu_load_fw()
403 …smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_SMU_DRAM_ADDR_HI, smu_data->smu_buffer.mc_ad… in smu7_request_smu_load_fw()
404 …smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_SMU_DRAM_ADDR_LO, smu_data->smu_buffer.mc_ad… in smu7_request_smu_load_fw()
428 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
431 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
434 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
437 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
440 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
443 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
446 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
449 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
452 PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, in smu7_request_smu_load_fw()
456 …smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_HI, smu_data->header_buffer.mc… in smu7_request_smu_load_fw()
457 …smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_LO, smu_data->header_buffer.mc… in smu7_request_smu_load_fw()
459 if (smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_LoadUcodes, fw_to_load)) in smu7_request_smu_load_fw()
466 int smu7_check_fw_load_finish(struct pp_smumgr *smumgr, uint32_t fw_type) in smu7_check_fw_load_finish() argument
468 struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(smumgr->backend); in smu7_check_fw_load_finish()
472 ret = smum_wait_on_indirect_register(smumgr, mmSMC_IND_INDEX_11, in smu7_check_fw_load_finish()
473 smu_data->soft_regs_start + smum_get_offsetof(smumgr, in smu7_check_fw_load_finish()
480 int smu7_reload_firmware(struct pp_smumgr *smumgr) in smu7_reload_firmware() argument
482 return smumgr->smumgr_funcs->start_smu(smumgr); in smu7_reload_firmware()
485 static int smu7_upload_smc_firmware_data(struct pp_smumgr *smumgr, uint32_t length, uint32_t *src, … in smu7_upload_smc_firmware_data() argument
491 cgs_write_register(smumgr->device, mmSMC_IND_INDEX_11, 0x20000); in smu7_upload_smc_firmware_data()
492 SMUM_WRITE_FIELD(smumgr->device, SMC_IND_ACCESS_CNTL, AUTO_INCREMENT_IND_11, 1); in smu7_upload_smc_firmware_data()
495 cgs_write_register(smumgr->device, mmSMC_IND_DATA_11, *src++); in smu7_upload_smc_firmware_data()
497 SMUM_WRITE_FIELD(smumgr->device, SMC_IND_ACCESS_CNTL, AUTO_INCREMENT_IND_11, 0); in smu7_upload_smc_firmware_data()
505 int smu7_upload_smu_firmware_image(struct pp_smumgr *smumgr) in smu7_upload_smu_firmware_image() argument
508 struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(smumgr->backend); in smu7_upload_smu_firmware_image()
513 cgs_get_firmware_info(smumgr->device, in smu7_upload_smu_firmware_image()
516 cgs_get_firmware_info(smumgr->device, in smu7_upload_smu_firmware_image()
519 …result = smu7_upload_smc_firmware_data(smumgr, info.image_size, (uint32_t *)info.kptr, SMU7_SMC_SI… in smu7_upload_smu_firmware_image()
525 int smu7_init(struct pp_smumgr *smumgr) in smu7_init() argument
532 smu_data = (struct smu7_smumgr *)(smumgr->backend); in smu7_init()
539 smu_allocate_memory(smumgr->device, in smu7_init()
553 kfree(smumgr->backend); in smu7_init()
554 cgs_free_gpu_mem(smumgr->device, in smu7_init()
558 smu_allocate_memory(smumgr->device, in smu7_init()
572 kfree(smumgr->backend); in smu7_init()
573 cgs_free_gpu_mem(smumgr->device, in smu7_init()
581 int smu7_smu_fini(struct pp_smumgr *smumgr) in smu7_smu_fini() argument
583 if (smumgr->backend) { in smu7_smu_fini()
584 kfree(smumgr->backend); in smu7_smu_fini()
585 smumgr->backend = NULL; in smu7_smu_fini()
587 cgs_rel_firmware(smumgr->device, CGS_UCODE_ID_SMU); in smu7_smu_fini()