[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-usb-devel
Subject:    Re: [linux-usb-devel] uhci error message
From:       Johannes Erdfelt <johannes () erdfelt ! com>
Date:       2003-01-29 20:16:09
[Download RAW message or body]

On Wed, Jan 29, 2003, Oliver Kurth <oku@masqmail.cx> wrote:
> On Wed, Jan 29, 2003 at 11:44:16AM -0500, Johannes Erdfelt wrote:
> > On Wed, Jan 29, 2003, Oliver Kurth <oku@masqmail.cx> wrote:
> > > With my at76c503 driver, I get this error:
> 
> > > This happens just after the usbdfu module (in at76c503 package) has
> > > downloaded the firmware, in the probe() function. I guess one reason
> > > might be that at that moment the device has changed its interfaces
> > > and this confuses uhci. It does not happen on another host with
> > > ohci. Haven't tried usb-uhci yet.
> > > 
> > > Is this anything I have to worry about? Anything I can do in the driver?
> > > 
> > > I looked at the relevant code of uhci_result_control() in uhci, but
> > > I do not understand it yet.
> > 
> > It's not because it's getting confused. The UHCI driver is at a lower
> > layer than that.
> 
> So low it can't get confused? ;-)

Pretty much. It just performs the transfers the higher layers ask it to.
Nothing changes at the lower layer because a configuration changed, etc.
It's all just bits to it.

> > When you say "changed its interfaces", what do you mean? That you had
> > switched alternate settings? You had switched configuration?
> 
> I mean that the lsusb output differs: the interface class changes and
> it gets two more bulk endpoints. See here:
> 
> before: (just after plugging in)
> 
> Bus 001 Device 005: ID 0d5c:a002  
>   Language IDs: none (invalid length string descriptor bf; len=0)
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass          254 
>   bDeviceSubClass         1 
>   bDeviceProtocol         0 
>   bMaxPacketSize0         8
>   idVendor           0x0d5c 
>   idProduct          0xa002 
>   bcdDevice            1.00
>   iManufacturer           0 
>   iProduct                0 
>   iSerial                 0 
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           25
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0x80
>     MaxPower              500mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass       254 
>       bInterfaceSubClass      1 
>       bInterfaceProtocol      0 
>       iInterface              0 
>   unknown descriptor type: 07 21 01 13 05 00 04
>   Language IDs: none (invalid length string descriptor bf; len=0)
> 
> 
> after the fw is loaded:
> 
> Bus 001 Device 004: ID 0d5c:a002  
>   Language IDs: none (invalid length string descriptor bf; len=0)
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass          254 
>   bDeviceSubClass         1 
>   bDeviceProtocol         0 
>   bMaxPacketSize0         8
>   idVendor           0x0d5c 
>   idProduct          0xa002 
>   bcdDevice            1.00
>   iManufacturer           0 
>   iProduct                0 
>   iSerial                 0 
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           32
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0x80
>     MaxPower              500mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass       255 Vendor Specific Class
>       bInterfaceSubClass      0 
>       bInterfaceProtocol    255 
>       iInterface              0 
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x85  EP 5 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               none
>         wMaxPacketSize         64
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               none
>         wMaxPacketSize         64
>         bInterval               0
>   Language IDs: none (invalid length string descriptor bf; len=0)
> 
> Too make it more clear, here is a diff:
[snip diff]
> Sorry for this long message. And, as I said, I do not know whether
> that really is the problem, I thought it might be. And no, I did
> not change the configuration. I do that later, after the error message.
> But I get the error message when the device has just been plugged in,
> so it does not know of any configuration change.

So after the you upload the firmware, it disconnects and then comes back
as a different device, right?

If so, the error you received isn't too surprising. The device
disappeared, there's nothing to communicate with anymore.

I'm not exactly sure why the core was still communicating however.

JE



-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic