diff options
| author | Andrew Murray <amurray@embedded-bits.co.uk> | 2013-10-01 15:58:56 +0100 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-10-07 07:43:46 -0400 | 
| commit | ddd025bb6e283744dc93d3653a0b6fbd5c35e904 (patch) | |
| tree | 6163e25243a8ff5a2a40799cceb6f7a7e516cd42 /drivers/usb/musb/musb_hcd.c | |
| parent | 6478cde618ad3bfdb9b62f62e8c76498b0d6637f (diff) | |
| download | olio-uboot-2014.01-ddd025bb6e283744dc93d3653a0b6fbd5c35e904.tar.xz olio-uboot-2014.01-ddd025bb6e283744dc93d3653a0b6fbd5c35e904.zip | |
usb: Fix error handling in musb_hcd.c
The wait_until_[rx|tx]ep_ready functions return a u8 to indicate success
containing the value 0, 1 or -1. This patch changes the return type to an
int to accommodate the negative return values.
These functions are used in the file using calls such as if (!wait_until...
Where a -1 is returned it is mishandled and treated as success instead of
a CRC error. This patch addresses this.
Cc: Marek Vasut <marex@denx.de>
Cc: Tom Rini <trini@ti.com>
Signed-off-by: Andrew Murray <amurray@embedded-bits.co.uk>
Acked-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'drivers/usb/musb/musb_hcd.c')
| -rw-r--r-- | drivers/usb/musb/musb_hcd.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index 3dc5d6a55..41a8126b3 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -267,7 +267,7 @@ static int wait_until_ep0_ready(struct usb_device *dev, u32 bit_mask)  /*   * waits until tx ep is ready. Returns 1 when ep is ready and 0 on error.   */ -static u8 wait_until_txep_ready(struct usb_device *dev, u8 ep) +static int wait_until_txep_ready(struct usb_device *dev, u8 ep)  {  	u16 csr;  	int timeout = CONFIG_MUSB_TIMEOUT; @@ -299,7 +299,7 @@ static u8 wait_until_txep_ready(struct usb_device *dev, u8 ep)  /*   * waits until rx ep is ready. Returns 1 when ep is ready and 0 on error.   */ -static u8 wait_until_rxep_ready(struct usb_device *dev, u8 ep) +static int wait_until_rxep_ready(struct usb_device *dev, u8 ep)  {  	u16 csr;  	int timeout = CONFIG_MUSB_TIMEOUT; @@ -1009,7 +1009,7 @@ int submit_bulk_msg(struct usb_device *dev, unsigned long pipe,  			writew(csr | MUSB_TXCSR_TXPKTRDY, &musbr->txcsr);  			/* Wait until the TxPktRdy bit is cleared */ -			if (!wait_until_txep_ready(dev, MUSB_BULK_EP)) { +			if (wait_until_txep_ready(dev, MUSB_BULK_EP) != 1) {  				readw(&musbr->txcsr);  				usb_settoggle(dev, ep, dir_out,  				(csr >> MUSB_TXCSR_H_DATATOGGLE_SHIFT) & 1); @@ -1044,7 +1044,7 @@ int submit_bulk_msg(struct usb_device *dev, unsigned long pipe,  			writew(csr | MUSB_RXCSR_H_REQPKT, &musbr->rxcsr);  			/* Wait until the RxPktRdy bit is set */ -			if (!wait_until_rxep_ready(dev, MUSB_BULK_EP)) { +			if (wait_until_rxep_ready(dev, MUSB_BULK_EP) != 1) {  				csr = readw(&musbr->rxcsr);  				usb_settoggle(dev, ep, dir_out,  				(csr >> MUSB_S_RXCSR_H_DATATOGGLE) & 1); @@ -1217,7 +1217,7 @@ int submit_int_msg(struct usb_device *dev, unsigned long pipe,  			writew(csr | MUSB_RXCSR_H_REQPKT, &musbr->rxcsr);  			/* Wait until the RxPktRdy bit is set */ -			if (!wait_until_rxep_ready(dev, MUSB_INTR_EP)) { +			if (wait_until_rxep_ready(dev, MUSB_INTR_EP) != 1) {  				csr = readw(&musbr->rxcsr);  				usb_settoggle(dev, ep, dir_out,  				(csr >> MUSB_S_RXCSR_H_DATATOGGLE) & 1); |