diff options
author | Chris Brandt <chris.brandt@renesas.com> | 2017-11-29 14:49:21 -0500 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2017-12-09 13:39:27 +0100 |
commit | 243fd6420d2275275b8267ead971a7dbd69b369f (patch) | |
tree | 8d37a37d7eb58ea23c5037f4b17868765197ffaf /drivers | |
parent | 335f7b1290ce24a729a9689a1db834c743226ca8 (diff) |
usb: r8a66597: convert wait loop to readw_poll_timeout
It is better to use an existing wait loop implementation.
Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/host/r8a66597-hcd.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c index 28d2bc8454..e0ca2cb0d4 100644 --- a/drivers/usb/host/r8a66597-hcd.c +++ b/drivers/usb/host/r8a66597-hcd.c @@ -10,6 +10,7 @@ #include <console.h> #include <usb.h> #include <asm/io.h> +#include <linux/iopoll.h> #include "r8a66597.h" @@ -297,7 +298,6 @@ static int send_setup_packet(struct r8a66597 *r8a66597, struct usb_device *dev, int timeout = 3000; #if defined(CONFIG_RZA_USB) u16 dcpctr; - int timeout2 = 10000; #endif u16 devsel = setup->request == USB_REQ_SET_ADDRESS ? 0 : dev->devnum; @@ -308,13 +308,10 @@ static int send_setup_packet(struct r8a66597 *r8a66597, struct usb_device *dev, #if defined(CONFIG_RZA_USB) dcpctr = r8a66597_read(r8a66597, DCPCTR); if ((dcpctr & PID) == PID_BUF) { - timeout2 = 10000; - while (!(dcpctr & BSTS)) { - dcpctr = r8a66597_read(r8a66597, DCPCTR); - if (timeout2-- < 0) { - printf("DCPCTR clear timeout!\n"); - break; - } + if (readw_poll_timeout(r8a66597->reg + DCPCTR, dcpctr, + dcpctr & BSTS, 1000) < 0) { + printf("DCPCTR BSTS timeout!\n"); + return -ETIMEDOUT; } } #endif |