|
|
|
@ -111,6 +111,7 @@ static int wait_until_ep0_ready(struct usb_device *dev, u32 bit_mask) |
|
|
|
|
{ |
|
|
|
|
u16 csr; |
|
|
|
|
int result = 1; |
|
|
|
|
int timeout = CONFIG_MUSB_TIMEOUT; |
|
|
|
|
|
|
|
|
|
while (result > 0) { |
|
|
|
|
csr = readw(&musbr->txcsr); |
|
|
|
@ -152,7 +153,17 @@ static int wait_until_ep0_ready(struct usb_device *dev, u32 bit_mask) |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Check the timeout */ |
|
|
|
|
if (--timeout) |
|
|
|
|
udelay(1); |
|
|
|
|
else { |
|
|
|
|
dev->status = USB_ST_CRC_ERR; |
|
|
|
|
result = -1; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -162,6 +173,7 @@ static int wait_until_ep0_ready(struct usb_device *dev, u32 bit_mask) |
|
|
|
|
static u8 wait_until_txep_ready(struct usb_device *dev, u8 ep) |
|
|
|
|
{ |
|
|
|
|
u16 csr; |
|
|
|
|
int timeout = CONFIG_MUSB_TIMEOUT; |
|
|
|
|
|
|
|
|
|
do { |
|
|
|
|
if (check_stall(ep, 1)) { |
|
|
|
@ -174,6 +186,15 @@ static u8 wait_until_txep_ready(struct usb_device *dev, u8 ep) |
|
|
|
|
dev->status = USB_ST_CRC_ERR; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Check the timeout */ |
|
|
|
|
if (--timeout) |
|
|
|
|
udelay(1); |
|
|
|
|
else { |
|
|
|
|
dev->status = USB_ST_CRC_ERR; |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} while (csr & MUSB_TXCSR_TXPKTRDY); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
@ -184,6 +205,7 @@ static u8 wait_until_txep_ready(struct usb_device *dev, u8 ep) |
|
|
|
|
static u8 wait_until_rxep_ready(struct usb_device *dev, u8 ep) |
|
|
|
|
{ |
|
|
|
|
u16 csr; |
|
|
|
|
int timeout = CONFIG_MUSB_TIMEOUT; |
|
|
|
|
|
|
|
|
|
do { |
|
|
|
|
if (check_stall(ep, 0)) { |
|
|
|
@ -196,6 +218,15 @@ static u8 wait_until_rxep_ready(struct usb_device *dev, u8 ep) |
|
|
|
|
dev->status = USB_ST_CRC_ERR; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Check the timeout */ |
|
|
|
|
if (--timeout) |
|
|
|
|
udelay(1); |
|
|
|
|
else { |
|
|
|
|
dev->status = USB_ST_CRC_ERR; |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} while (!(csr & MUSB_RXCSR_RXPKTRDY)); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|