diff options
Diffstat (limited to 'drivers/usb/early/xhci-dbc.c')
| -rw-r--r-- | drivers/usb/early/xhci-dbc.c | 15 | 
1 files changed, 11 insertions, 4 deletions
| diff --git a/drivers/usb/early/xhci-dbc.c b/drivers/usb/early/xhci-dbc.c index 933d77ad0a64..4502108069cd 100644 --- a/drivers/usb/early/xhci-dbc.c +++ b/drivers/usb/early/xhci-dbc.c @@ -14,7 +14,6 @@  #include <linux/pci_ids.h>  #include <linux/memblock.h>  #include <linux/io.h> -#include <linux/iopoll.h>  #include <asm/pci-direct.h>  #include <asm/fixmap.h>  #include <linux/bcd.h> @@ -136,9 +135,17 @@ static int handshake(void __iomem *ptr, u32 mask, u32 done, int wait, int delay)  {  	u32 result; -	return readl_poll_timeout_atomic(ptr, result, -					 ((result & mask) == done), -					 delay, wait); +	/* Can not use readl_poll_timeout_atomic() for early boot things */ +	do { +		result = readl(ptr); +		result &= mask; +		if (result == done) +			return 0; +		udelay(delay); +		wait -= delay; +	} while (wait > 0); + +	return -ETIMEDOUT;  }  static void __init xdbc_bios_handoff(void) |