|
@@ -8,6 +8,7 @@
|
|
#include <common.h>
|
|
#include <common.h>
|
|
#include <usb.h>
|
|
#include <usb.h>
|
|
#include <errno.h>
|
|
#include <errno.h>
|
|
|
|
+#include <wait_bit.h>
|
|
#include <linux/compiler.h>
|
|
#include <linux/compiler.h>
|
|
#include <usb/ehci-fsl.h>
|
|
#include <usb/ehci-fsl.h>
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
@@ -117,32 +118,6 @@ static void usb_power_config(int index)
|
|
pll_480_ctrl_set);
|
|
pll_480_ctrl_set);
|
|
}
|
|
}
|
|
|
|
|
|
-static int wait_for_bit(u32 *reg, const u32 mask, bool set)
|
|
|
|
-{
|
|
|
|
- u32 val;
|
|
|
|
- const unsigned int timeout = 10000;
|
|
|
|
- unsigned long start = get_timer(0);
|
|
|
|
-
|
|
|
|
- while(1) {
|
|
|
|
- val = readl(reg);
|
|
|
|
- if (!set)
|
|
|
|
- val = ~val;
|
|
|
|
-
|
|
|
|
- if ((val & mask) == mask)
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- if (get_timer(start) > timeout)
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- udelay(1);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- debug("%s: Timeout (reg=%p mask=%08x wait_set=%i)\n",
|
|
|
|
- __func__, reg, mask, set);
|
|
|
|
-
|
|
|
|
- return -ETIMEDOUT;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/* Return 0 : host node, <>0 : device mode */
|
|
/* Return 0 : host node, <>0 : device mode */
|
|
static int usb_phy_enable(int index, struct usb_ehci *ehci)
|
|
static int usb_phy_enable(int index, struct usb_ehci *ehci)
|
|
{
|
|
{
|
|
@@ -160,12 +135,13 @@ static int usb_phy_enable(int index, struct usb_ehci *ehci)
|
|
|
|
|
|
/* Stop then Reset */
|
|
/* Stop then Reset */
|
|
clrbits_le32(usb_cmd, UCMD_RUN_STOP);
|
|
clrbits_le32(usb_cmd, UCMD_RUN_STOP);
|
|
- ret = wait_for_bit(usb_cmd, UCMD_RUN_STOP, 0);
|
|
|
|
|
|
+ ret = wait_for_bit(__func__, usb_cmd, UCMD_RUN_STOP, false, 10000,
|
|
|
|
+ false);
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
setbits_le32(usb_cmd, UCMD_RESET);
|
|
setbits_le32(usb_cmd, UCMD_RESET);
|
|
- ret = wait_for_bit(usb_cmd, UCMD_RESET, 0);
|
|
|
|
|
|
+ ret = wait_for_bit(__func__, usb_cmd, UCMD_RESET, false, 10000, false);
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|