@@ -60,7 +60,7 @@ MODULE_FIRMWARE("amdgpu/psp_14_0_0_ta.bin");
60
60
#define GFX_CMD_USB_PD_USE_LFB 0x480
61
61
62
62
/* Retry times for vmbx ready wait */
63
- #define PSP_VMBX_POLLING_LIMIT 20000
63
+ #define PSP_VMBX_POLLING_LIMIT 3000
64
64
65
65
/* VBIOS gfl defines */
66
66
#define MBOX_READY_MASK 0x80000000
@@ -161,14 +161,18 @@ static int psp_v13_0_wait_for_vmbx_ready(struct psp_context *psp)
161
161
static int psp_v13_0_wait_for_bootloader (struct psp_context * psp )
162
162
{
163
163
struct amdgpu_device * adev = psp -> adev ;
164
- int retry_loop , ret ;
164
+ int retry_loop , retry_cnt , ret ;
165
165
166
+ retry_cnt =
167
+ (amdgpu_ip_version (adev , MP0_HWIP , 0 ) == IP_VERSION (13 , 0 , 6 )) ?
168
+ PSP_VMBX_POLLING_LIMIT :
169
+ 10 ;
166
170
/* Wait for bootloader to signify that it is ready having bit 31 of
167
171
* C2PMSG_35 set to 1. All other bits are expected to be cleared.
168
172
* If there is an error in processing command, bits[7:0] will be set.
169
173
* This is applicable for PSP v13.0.6 and newer.
170
174
*/
171
- for (retry_loop = 0 ; retry_loop < PSP_VMBX_POLLING_LIMIT ; retry_loop ++ ) {
175
+ for (retry_loop = 0 ; retry_loop < retry_cnt ; retry_loop ++ ) {
172
176
ret = psp_wait_for (
173
177
psp , SOC15_REG_OFFSET (MP0 , 0 , regMP0_SMN_C2PMSG_35 ),
174
178
0x80000000 , 0xffffffff , false);
0 commit comments