diff options
Diffstat (limited to 'drivers/gpu/drm/amd/display/dmub/src')
| -rw-r--r-- | drivers/gpu/drm/amd/display/dmub/src/dmub_dcn31.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn31.c b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn31.c index 19141bf84a8c..fc667cb17eb0 100644 --- a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn31.c +++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn31.c @@ -83,7 +83,7 @@ static inline void dmub_dcn31_translate_addr(const union dmub_addr *addr_in,  void dmub_dcn31_reset(struct dmub_srv *dmub)  {  	union dmub_gpint_data_register cmd; -	const uint32_t timeout = 30; +	const uint32_t timeout = 100;  	uint32_t in_reset, scratch, i;  	REG_GET(DMCUB_CNTL2, DMCUB_SOFT_RESET, &in_reset); @@ -98,21 +98,21 @@ void dmub_dcn31_reset(struct dmub_srv *dmub)  		/**  		 * Timeout covers both the ACK and the wait  		 * for remaining work to finish. -		 * -		 * This is mostly bound by the PHY disable sequence. -		 * Each register check will be greater than 1us, so -		 * don't bother using udelay.  		 */  		for (i = 0; i < timeout; ++i) {  			if (dmub->hw_funcs.is_gpint_acked(dmub, cmd))  				break; + +			udelay(1);  		}  		for (i = 0; i < timeout; ++i) {  			scratch = dmub->hw_funcs.get_gpint_response(dmub);  			if (scratch == DMUB_GPINT__STOP_FW_RESPONSE)  				break; + +			udelay(1);  		}  		/* Force reset in case we timed out, DMCUB is likely hung. */ |