@@ -167,7 +167,8 @@ int avs_cldma_load_basefw(struct avs_dev *adev, struct firmware *fw)
167167 (reg & AVS_ROM_INIT_DONE ) == AVS_ROM_INIT_DONE ,
168168 AVS_ROM_INIT_POLLING_US , SKL_ROM_INIT_TIMEOUT_US );
169169 if (ret < 0 ) {
170- dev_err (adev -> dev , "rom init timeout: %d\n" , ret );
170+ dev_err (adev -> dev , "rom init failed: %d, status: 0x%08x, lec: 0x%08x\n" ,
171+ ret , reg , snd_hdac_adsp_readl (adev , AVS_FW_REG_ERROR (adev )));
171172 avs_dsp_core_disable (adev , AVS_MAIN_CORE_MASK );
172173 return ret ;
173174 }
@@ -180,7 +181,8 @@ int avs_cldma_load_basefw(struct avs_dev *adev, struct firmware *fw)
180181 AVS_FW_INIT_POLLING_US , AVS_FW_INIT_TIMEOUT_US );
181182 hda_cldma_stop (cl );
182183 if (ret < 0 ) {
183- dev_err (adev -> dev , "transfer fw failed: %d\n" , ret );
184+ dev_err (adev -> dev , "transfer fw failed: %d, status: 0x%08x, lec: 0x%08x\n" ,
185+ ret , reg , snd_hdac_adsp_readl (adev , AVS_FW_REG_ERROR (adev )));
184186 avs_dsp_core_disable (adev , AVS_MAIN_CORE_MASK );
185187 return ret ;
186188 }
@@ -308,12 +310,13 @@ avs_hda_init_rom(struct avs_dev *adev, unsigned int dma_id, bool purge)
308310 }
309311
310312 /* await ROM init */
311- ret = snd_hdac_adsp_readq_poll (adev , spec -> sram -> rom_status_offset , reg ,
313+ ret = snd_hdac_adsp_readl_poll (adev , spec -> sram -> rom_status_offset , reg ,
312314 (reg & 0xF ) == AVS_ROM_INIT_DONE ||
313315 (reg & 0xF ) == APL_ROM_FW_ENTERED ,
314316 AVS_ROM_INIT_POLLING_US , APL_ROM_INIT_TIMEOUT_US );
315317 if (ret < 0 ) {
316- dev_err (adev -> dev , "rom init timeout: %d\n" , ret );
318+ dev_err (adev -> dev , "rom init failed: %d, status: 0x%08x, lec: 0x%08x\n" ,
319+ ret , reg , snd_hdac_adsp_readl (adev , AVS_FW_REG_ERROR (adev )));
317320 goto err ;
318321 }
319322
@@ -337,15 +340,15 @@ static int avs_imr_load_basefw(struct avs_dev *adev)
337340
338341 /* DMA id ignored when flashing from IMR as no transfer occurs. */
339342 ret = avs_hda_init_rom (adev , 0 , false);
340- if (ret < 0 ) {
341- dev_err (adev -> dev , "rom init failed: %d\n" , ret );
343+ if (ret < 0 )
342344 return ret ;
343- }
344345
345346 ret = wait_for_completion_timeout (& adev -> fw_ready ,
346347 msecs_to_jiffies (AVS_FW_INIT_TIMEOUT_MS ));
347348 if (!ret ) {
348- dev_err (adev -> dev , "firmware ready timeout\n" );
349+ dev_err (adev -> dev , "firmware ready timeout, status: 0x%08x, lec: 0x%08x\n" ,
350+ snd_hdac_adsp_readl (adev , AVS_FW_REG_STATUS (adev )),
351+ snd_hdac_adsp_readl (adev , AVS_FW_REG_ERROR (adev )));
349352 avs_dsp_core_disable (adev , AVS_MAIN_CORE_MASK );
350353 return - ETIMEDOUT ;
351354 }
@@ -392,7 +395,7 @@ int avs_hda_load_basefw(struct avs_dev *adev, struct firmware *fw)
392395 ret = avs_hda_init_rom (adev , dma_id , true);
393396 if (!ret )
394397 break ;
395- dev_info (adev -> dev , "#%d rom init fail : %d\n" , i + 1 , ret );
398+ dev_info (adev -> dev , "#%d rom init failed : %d\n" , i + 1 , ret );
396399 }
397400 if (ret < 0 )
398401 goto cleanup_resources ;
@@ -404,7 +407,8 @@ int avs_hda_load_basefw(struct avs_dev *adev, struct firmware *fw)
404407 AVS_FW_INIT_POLLING_US , AVS_FW_INIT_TIMEOUT_US );
405408 snd_hdac_dsp_trigger (hstream , false);
406409 if (ret < 0 ) {
407- dev_err (adev -> dev , "transfer fw failed: %d\n" , ret );
410+ dev_err (adev -> dev , "transfer fw failed: %d, status: 0x%08x, lec: 0x%08x\n" ,
411+ ret , reg , snd_hdac_adsp_readl (adev , AVS_FW_REG_ERROR (adev )));
408412 avs_dsp_core_disable (adev , AVS_MAIN_CORE_MASK );
409413 }
410414
@@ -584,7 +588,9 @@ static int avs_dsp_load_basefw(struct avs_dev *adev)
584588 ret = wait_for_completion_timeout (& adev -> fw_ready ,
585589 msecs_to_jiffies (AVS_FW_INIT_TIMEOUT_MS ));
586590 if (!ret ) {
587- dev_err (adev -> dev , "firmware ready timeout\n" );
591+ dev_err (adev -> dev , "firmware ready timeout, status: 0x%08x, lec: 0x%08x\n" ,
592+ snd_hdac_adsp_readl (adev , AVS_FW_REG_STATUS (adev )),
593+ snd_hdac_adsp_readl (adev , AVS_FW_REG_ERROR (adev )));
588594 avs_dsp_core_disable (adev , AVS_MAIN_CORE_MASK );
589595 ret = - ETIMEDOUT ;
590596 goto release_fw ;
@@ -675,16 +681,12 @@ int avs_dsp_first_boot_firmware(struct avs_dev *adev)
675681 }
676682
677683 ret = avs_ipc_get_hw_config (adev , & adev -> hw_cfg );
678- if (ret ) {
679- dev_err (adev -> dev , "get hw cfg failed: %d\n" , ret );
684+ if (ret )
680685 return AVS_IPC_RET (ret );
681- }
682686
683687 ret = avs_ipc_get_fw_config (adev , & adev -> fw_cfg );
684- if (ret ) {
685- dev_err (adev -> dev , "get fw cfg failed: %d\n" , ret );
688+ if (ret )
686689 return AVS_IPC_RET (ret );
687- }
688690
689691 adev -> core_refs = devm_kcalloc (adev -> dev , adev -> hw_cfg .dsp_cores ,
690692 sizeof (* adev -> core_refs ), GFP_KERNEL );
0 commit comments