FAQ: [#5972] Sl811-hcd.c USB removal(2010)

Document created by Aaronwu Employee on Sep 10, 2013
Version 1Show Document
  • View in full screen mode

[#5972] Sl811-hcd.c USB removal

Submitted By: Chris Brissette

Open Date

2010-03-16 09:21:41     Close Date

2010-03-24 12:16:29

Priority:

Medium     Assignee:

Michael Hennerich

Status:

Closed     Fixed In Release:

N/A

Found In Release:

2009R1.1-RC4     Release:

svn8416

Category:

N/A     Board:

N/A

Processor:

ALL     Silicon Revision:

Is this bug repeatable?:

Yes     Resolution:

Fixed

Uboot version or rev.:

2009R1     Toolchain version or rev.:

4.1.2 svn

App binary format:

N/A     

Summary: Sl811-hcd.c USB removal

Details:

 

After patch from

http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_item_id=5381

 

USB Detection / Removal counter works about 50 % of the time. The counter quickly will miss a disconnect and will not recover.

 

You get the error

hub 1-0:1.0: unable to enumerate USB device on port 1

From that point on, the only way to recover, is to reload the module sl811-hcd.ko

 

Seems to miss the disconnect when there are pending transactions, (Wifi sticks show it the worst) We had luck using power control and shutting down the device, (with usb memory sticks) then removing.  But with WiFi there is alot of transactions pending and the counter misses the removal.

 

 

Follow-ups

 

--- Michael Hennerich                                        2010-03-18 08:13:01

Should be fixed on trunk and 2009R1

 

Index: sl811-hcd.c

===================================================================

--- sl811-hcd.c (revision 8459)

+++ sl811-hcd.c (working copy)

@@ -720,10 +720,10 @@

                /* port status seems weird until after reset, so

                 * force the reset and make khubd clean up later.

                 */

-               if (sl811->stat_insrmv & 1)

+               if (irqstat & SL11H_INTMASK_RD)

+                       sl811->port1 &= ~(1 <<

USB_PORT_FEAT_CONNECTION);

+               else

                        sl811->port1 |= 1 <<

USB_PORT_FEAT_CONNECTION;

-               else

-                       sl811->port1 &= ~(1 <<

USB_PORT_FEAT_CONNECTION);

 

                sl811->port1 |= 1 << USB_PORT_FEAT_C_CONNECTION;

 

--- Chris Brissette                                          2010-03-22 08:39:01

Looks good now, thank you.

 

--- Michael Hennerich                                        2010-03-24 12:15:12

close it

 

 

 

    Files

    Changes

    Commits

    Dependencies

    Duplicates

    Associations

    Tags

 

File Name     File Type     File Size     Posted By

No Files Were Found

Attachments

    Outcomes