[U-Boot] [PATCH 1/2] usb: fix for USB_ST_STALLED status reporting in ehci_submit_async()

2010-11-02 Thread Anatolij Gustschin
Checking the status field of the qTD token in the current code
do not take into acount cases where endpoint stall (halted) bit
is set together with XactErr status bit. As a result clearing
stall on an endpoint won't be done if this status bit was also
set. Check for halted bit and report USB_ST_STALLED status
if the host controller also indicates endpoit stall condition.

Signed-off-by: Anatolij Gustschin ag...@denx.de
---
 drivers/usb/host/ehci-hcd.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 982f96e..c7fba10 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -491,6 +491,8 @@ ehci_submit_async(struct usb_device *dev, unsigned long 
pipe, void *buffer,
break;
default:
dev-status = USB_ST_CRC_ERR;
+   if ((token  0x40) == 0x40)
+   dev-status |= USB_ST_STALLED;
break;
}
dev-act_len = length - ((token  16)  0x7fff);
-- 
1.7.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 1/2] usb: fix for USB_ST_STALLED status reporting in ehci_submit_async()

2010-11-02 Thread Remy Bohmer
Hi,

2010/11/2 Anatolij Gustschin ag...@denx.de:
 Checking the status field of the qTD token in the current code
 do not take into acount cases where endpoint stall (halted) bit
 is set together with XactErr status bit. As a result clearing
 stall on an endpoint won't be done if this status bit was also
 set. Check for halted bit and report USB_ST_STALLED status
 if the host controller also indicates endpoit stall condition.

 Signed-off-by: Anatolij Gustschin ag...@denx.de
 ---
  drivers/usb/host/ehci-hcd.c |    2 ++
  1 files changed, 2 insertions(+), 0 deletions(-)

 diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
 index 982f96e..c7fba10 100644
 --- a/drivers/usb/host/ehci-hcd.c
 +++ b/drivers/usb/host/ehci-hcd.c
 @@ -491,6 +491,8 @@ ehci_submit_async(struct usb_device *dev, unsigned long 
 pipe, void *buffer,
                        break;
                default:
                        dev-status = USB_ST_CRC_ERR;
 +                       if ((token  0x40) == 0x40)
 +                               dev-status |= USB_ST_STALLED;
                        break;
                }
                dev-act_len = length - ((token  16)  0x7fff);

Applied to u-boot-usb

Thanks.

Remy
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot