#include <common.h>
#include <usb.h>
#include <errno.h>
+#include <wait_bit.h>
#include <linux/compiler.h>
#include <usb/ehci-fsl.h>
#include <asm/io.h>
void __iomem *phy_reg;
void __iomem *phy_ctrl;
void __iomem *usb_cmd;
+ int ret;
if (index >= ARRAY_SIZE(phy_bases))
return 0;
/* Stop then Reset */
clrbits_le32(usb_cmd, UCMD_RUN_STOP);
- while (readl(usb_cmd) & UCMD_RUN_STOP)
- ;
+ ret = wait_for_bit(__func__, usb_cmd, UCMD_RUN_STOP, false, 10000,
+ false);
+ if (ret)
+ return ret;
setbits_le32(usb_cmd, UCMD_RESET);
- while (readl(usb_cmd) & UCMD_RESET)
- ;
+ ret = wait_for_bit(__func__, usb_cmd, UCMD_RESET, false, 10000, false);
+ if (ret)
+ return ret;
/* Reset USBPHY module */
setbits_le32(phy_ctrl, USBPHY_CTRL_SFTRST);