projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'u-boot-imx/master'
[oweals/u-boot.git]
/
drivers
/
usb
/
musb
/
musb_udc.c
diff --git
a/drivers/usb/musb/musb_udc.c
b/drivers/usb/musb/musb_udc.c
index 6f6ed61d08b627b31f42a991e1af33c48dca45f8..e0b4217dc3f5060c1fe8d2489f452722d804b003 100644
(file)
--- a/
drivers/usb/musb/musb_udc.c
+++ b/
drivers/usb/musb/musb_udc.c
@@
-162,8
+162,6
@@
static void musb_db_regs(void)
static void musb_peri_softconnect(void)
{
u8 power, devctl;
static void musb_peri_softconnect(void)
{
u8 power, devctl;
- u8 intrusb;
- u16 intrrx, intrtx;
/* Power off MUSB */
power = readb(&musbr->power);
/* Power off MUSB */
power = readb(&musbr->power);
@@
-171,9
+169,9
@@
static void musb_peri_softconnect(void)
writeb(power, &musbr->power);
/* Read intr to clear */
writeb(power, &musbr->power);
/* Read intr to clear */
-
intrusb =
readb(&musbr->intrusb);
-
intrrx =
readw(&musbr->intrrx);
-
intrtx =
readw(&musbr->intrtx);
+ readb(&musbr->intrusb);
+ readw(&musbr->intrrx);
+ readw(&musbr->intrtx);
udelay(1000 * 1000); /* 1 sec */
udelay(1000 * 1000); /* 1 sec */
@@
-642,8
+640,17
@@
static void musb_peri_ep0(void)
static void musb_peri_rx_ep(unsigned int ep)
{
static void musb_peri_rx_ep(unsigned int ep)
{
- u16 peri_rxcount = readw(&musbr->ep[ep].epN.rxcount);
+ u16 peri_rxcount;
+ u8 peri_rxcsr = readw(&musbr->ep[ep].epN.rxcsr);
+ if (!(peri_rxcsr & MUSB_RXCSR_RXPKTRDY)) {
+ if (debug_level > 0)
+ serial_printf("ERROR : %s %d without MUSB_RXCSR_RXPKTRDY set\n",
+ __PRETTY_FUNCTION__, ep);
+ return;
+ }
+
+ peri_rxcount = readw(&musbr->ep[ep].epN.rxcount);
if (peri_rxcount) {
struct usb_endpoint_instance *endpoint;
u32 length;
if (peri_rxcount) {
struct usb_endpoint_instance *endpoint;
u32 length;