aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorChris Brandt <chris.brandt@renesas.com>2017-11-29 14:49:21 -0500
committerMarek Vasut <marex@denx.de>2017-12-09 13:39:27 +0100
commit243fd6420d2275275b8267ead971a7dbd69b369f (patch)
tree8d37a37d7eb58ea23c5037f4b17868765197ffaf /drivers
parent335f7b1290ce24a729a9689a1db834c743226ca8 (diff)
downloadu-boot-243fd6420d2275275b8267ead971a7dbd69b369f.zip
u-boot-243fd6420d2275275b8267ead971a7dbd69b369f.tar.gz
u-boot-243fd6420d2275275b8267ead971a7dbd69b369f.tar.bz2
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.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
index 28d2bc8..e0ca2cb 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