diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c index 5f46877f78cf..df1844d0800f 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c @@ -60,7 +60,7 @@ MODULE_FIRMWARE("amdgpu/psp_14_0_0_ta.bin");  #define GFX_CMD_USB_PD_USE_LFB 0x480  /* Retry times for vmbx ready wait */ -#define PSP_VMBX_POLLING_LIMIT 20000 +#define PSP_VMBX_POLLING_LIMIT 3000  /* VBIOS gfl defines */  #define MBOX_READY_MASK 0x80000000 @@ -161,14 +161,18 @@ static int psp_v13_0_wait_for_vmbx_ready(struct psp_context *psp)  static int psp_v13_0_wait_for_bootloader(struct psp_context *psp)  {  	struct amdgpu_device *adev = psp->adev; -	int retry_loop, ret; +	int retry_loop, retry_cnt, ret; +	retry_cnt = +		(amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(13, 0, 6)) ? +			PSP_VMBX_POLLING_LIMIT : +			10;  	/* Wait for bootloader to signify that it is ready having bit 31 of  	 * C2PMSG_35 set to 1. All other bits are expected to be cleared.  	 * If there is an error in processing command, bits[7:0] will be set.  	 * This is applicable for PSP v13.0.6 and newer.  	 */ -	for (retry_loop = 0; retry_loop < PSP_VMBX_POLLING_LIMIT; retry_loop++) { +	for (retry_loop = 0; retry_loop < retry_cnt; retry_loop++) {  		ret = psp_wait_for(  			psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35),  			0x80000000, 0xffffffff, false);  | 
