imx: usb: ehci-mx6: wait_for_bit to check reg status
Subsystems (2)
PATCH 1/1 imx: usb: ehci-mx6: wait_for_bit to check reg status
Add wait_for_bit to check reg bit status and replace unbounded loops to check usb command status
Signed-off-by Adrian Alonso <[email protected]>
---
Patch depends on the following patch set:
imx: usb: ehci-mx6: add usb support for imx7d soc
imx: usb: ehci-mx6: document board specific functions
imx: usb: ehci-mx6: reg accessor cleanups
drivers/usb/host/ehci-mx6.c | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-)
drivers/usb/host/ehci-mx6.c +33 -4
@@ -117,12 +117,39 @@ static void usb_power_config(int index) 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 */ static int usb_phy_enable (int index,struct usb_ehci *ehci) {void __iomem *phy_reg;void __iomem *phy_ctrl;void __iomem *usb_cmd; +int ret;if (index >=ARRAY_SIZE (phy_bases))return 0 ;
@@ -133,12 +160,14 @@ static int usb_phy_enable(int index, struct usb_ehci *ehci)/* Stop then Reset */ clrbits_le32 (usb_cmd,UCMD_RUN_STOP ); -while (readl (usb_cmd) &UCMD_RUN_STOP ) - ; + ret =wait_for_bit (usb_cmd,UCMD_RUN_STOP ,0 ); +if (ret) +return ret;setbits_le32 (usb_cmd,UCMD_RESET ); -while (readl (usb_cmd) &UCMD_RESET ) - ; + ret =wait_for_bit (usb_cmd,UCMD_RESET ,0 ); +if (ret) +return ret;/* Reset USBPHY module */ setbits_le32 (phy_ctrl,USBPHY_CTRL_SFTRST );
Signature · 1 line
2.1.4
PATCH 1/1 imx: usb: ehci-mx6: wait_for_bit to check reg status
Quoted 4 lines · Adrian Alonso
Add
wait_for_bitto check reg bit status and replace unbounded loops to check usb command statusSigned-off-by Adrian Alonso <[email protected]>
Applied to u-boot-usb/master, thanks!
Best regards,
Marek Vasut