Hi,

I am trying to write a driver for the Silicon Laboratories CP2101 USB to
RS232 converter chip.

The protocol looks relatively simple after analysing the windows driver
with sniffers.

The device has only 1 configuration, which has a bulk in endpoint and a
bulk out endpoint.
The control pipe is used to set the baud rates, data bits, flow control
etc and is relatively straight forward.
The bulk in/out endpoints are used to send the raw serial data.

In windows, when the device is plugged in, it gets 3 descriptors from
the device and issues a select configuration.
There is then no activity until the port is used.
The first transfer which occurs is this:

00000130        468.14388924    UsbSnoop - IRP_MJ_INTERNAL_DEVICE_CONTROL,
IOCTL_INTERNAL_USB_SUBMIT_URB   
00000132        468.14457424    >>>>>>> URB 5 going down...     
00000133        468.14466420    -- URB_FUNCTION_VENDOR_INTERFACE:       
00000134        468.14493239      TransferFlags          = 00000000
(USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)  
00000135        468.14498128      TransferBufferLength = 00000000       
00000136        468.14500418      TransferBuffer       = 00000000       
00000137        468.14502737      TransferBufferMDL    = 00000000       
00000139        468.14509637        no data supplied    
00000140        468.14512738      UrbLink                 = 00000000    
00000141        468.14515336      RequestTypeReservedBits = 00  
00000142        468.14517739      Request                 = 11  
00000143        468.14520225      Value                   = 0000        
00000144        468.14522628      Index                   = 0000        
00000146        468.16538638    <<<<<<< URB 5 coming back...    
00000147        468.16546824    -- URB_FUNCTION_CONTROL_TRANSFER:       
00000148        468.16551517      PipeHandle           = 811d87b4       
00000149        468.16555931      TransferFlags        = 00000002
(USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)   
00000150        468.16558836      TransferBufferLength = 00000000       
00000151        468.16560233      TransferBuffer       = 00000000       
00000152        468.16561630      TransferBufferMDL    = 00000000       
00000153        468.16565625      UrbLink              = 00000000       
00000154        468.16593142      SetupPacket          : 41 11 00 00 00 00 00 
00        


In the linux driver, i try:
result = usb_control_msg (dev, usb_sndctrlpipe (dev, 0),
                                  0x11, 0x00,
                                  0x0000, 0, NULL, 0, 1000);
dbg("%s - result %d", __FUNCTION__, result);

The function fails with a result of -32 which appears to be EPIPE
which is either Babble detect or Endpoint stalled


Any advice would be greatly appreciated.


-- 
Craig Shelley
Email:  [EMAIL PROTECTED]
Jabber: [EMAIL PROTECTED]

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to