David Brownell wrote:
On Friday 21 January 2005 1:21 am, Vladimir Trukhin wrote:
So the following conditions are always FALSE in this context. Seems like the hardware (UDCCS registers specifically) doesn't give us the correct status info.
----------- taken from pxa2xx_udc.c:pxa2xx_ep_set_halt() ----------- ... 1081 if ((ep->bEndpointAddress & USB_DIR_IN) != 0 1082 && ((*ep->reg_udccs & UDCCS_BI_TFS) == 0 1083 || !list_empty(&ep->queue))) { 1084 local_irq_restore(flags); 1085 return -EAGAIN; 1086 } ... ---------------------------------------------------------------------------------------
Hmm, does the following patch help at all? Presumably it compiles!
It's kind of dirty; the real fix should probably be to not return the request from the queue until its ZLP gets ACKed. And it may well break with DMA (but nobody's using that lately).
I'm afraid not :( Result is the same as before if I apply the patch as it is.
Should I enable DMA in pxa2xx_udc? If so, the result is differrent and the host can't recognize the usb device at all.
Here is the log of Windows session:
---------------------------------------------------------------------------------------
<7>g_file_storage gadget-lun0: open backing file: /app/storage
<6>g_file_storage gadget: File-backed Storage Gadget, version: 20 October 2004
<6>g_file_storage gadget: Number of LUNs=1
<6>g_file_storage gadget-lun0: ro=0, file: /app/storage
<7>g_file_storage gadget: transport=Bulk-only (x50)
<7>g_file_storage gadget: protocol=Transparent SCSI (x06)
<7>g_file_storage gadget: VendorID=x0525, ProductID=xa4a5, Release=x0303
<7>g_file_storage gadget: removable=0, stall=1, buflen=16384
<7>g_file_storage gadget: I/O thread pid: 141
<7>udc: registered gadget driver 'g_file_storage'
<6>udc: USB reset
<7>udc: host EP0_IDLE, uicr FF.FE, usir 00.00, ufnr 40.00
<7>udc: udccr 03 = uda ude
<7>udc: udccfr 04 = acm
<7>udc: ep0 driver 'g_file_storage'
<7>udc: udccs0 EP0_IDLE 00 =
<7>udc: ep0 IN 0/0, OUT 0/0
******************************************* usb cable plugged in *******************************************
<7>udc: USB suspend <7>g_file_storage gadget: suspend <7>udc: USB resume <7>g_file_storage gadget: resume <7>udc: USB reset start <7>g_file_storage gadget: disconnect or port reset <7>g_file_storage gadget-lun0: fdatasync -> 0 <6>udc: USB reset <7>udc: USB suspend <7>g_file_storage gadget: suspend <7>udc: USB resume <7>g_file_storage gadget: resume <7>udc: USB reset start <7>g_file_storage gadget: disconnect or port reset <7>g_file_storage gadget-lun0: fdatasync -> 0 <6>udc: USB reset <7>udc: SETUP 80.06 v0100 i0000 l0040 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 01 00 00 40 00 <7>g_file_storage gadget: get device descriptor <7>g_file_storage gadget: ep0-in, length 18: <7> 0: 12 01 00 02 00 00 00 10 25 05 a5 a4 03 03 01 02 <7> 10: 03 01 <7>udc: USB reset start <7>g_file_storage gadget: disconnect or port reset <7>g_file_storage gadget-lun0: fdatasync -> 0 <6>udc: USB reset <7>udc: SETUP 80.06 v0100 i0000 l0012 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 01 00 00 12 00 <7>g_file_storage gadget: get device descriptor <7>g_file_storage gadget: ep0-in, length 18: <7> 0: 12 01 00 02 00 00 00 10 25 05 a5 a4 03 03 01 02 <7> 10: 03 01 <7>udc: SETUP 80.06 v0200 i0000 l0009 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 02 00 00 09 00 <7>g_file_storage gadget: get configuration descriptor <7>g_file_storage gadget: ep0-in, length 9: <7> 0: 09 02 20 00 01 01 00 c0 01 <7>udc: SETUP 80.06 v0300 i0000 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 03 00 00 ff 00 <7>g_file_storage gadget: get string descriptor <7>g_file_storage gadget: ep0-in, length 4: <7> 0: 04 03 09 04 <7>udc: SETUP 80.06 v0303 i0409 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 03 03 09 04 ff 00 <7>g_file_storage gadget: get string descriptor <7>g_file_storage gadget: ep0-in, length 26: <7> 0: 1a 03 33 00 32 00 33 00 30 00 32 00 30 00 34 00 <7> 10: 46 00 36 00 33 00 37 00 34 00 <7>udc: SETUP 80.06 v0200 i0000 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 02 00 00 ff 00 <7>g_file_storage gadget: get configuration descriptor <7>g_file_storage gadget: ep0-in, length 32: <7> 0: 1a 03 33 00 32 00 33 00 30 00 32 00 30 00 34 00 <7> 10: 46 00 36 00 33 00 37 00 34 00 05 02 02 40 00 00 <7>udc: USB reset start <7>g_file_storage gadget: disconnect or port reset <7>g_file_storage gadget-lun0: fdatasync -> 0 <6>udc: USB reset <7>udc: SETUP 80.06 v0100 i0000 l0040 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 01 00 00 40 00 <7>g_file_storage gadget: get device descriptor <7>g_file_storage gadget: ep0-in, length 18: <7> 0: 12 01 00 02 00 00 00 10 25 05 a5 a4 03 03 01 02 <7> 10: 03 01 <7>udc: USB reset start <7>g_file_storage gadget: disconnect or port reset <7>g_file_storage gadget-lun0: fdatasync -> 0 <6>udc: USB reset <7>udc: SETUP 80.06 v0100 i0000 l0012 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 01 00 00 12 00 <7>g_file_storage gadget: get device descriptor <7>g_file_storage gadget: ep0-in, length 18: <7> 0: 12 01 00 02 00 00 00 10 25 05 a5 a4 03 03 01 02 <7> 10: 03 01 <7>udc: SETUP 80.06 v0200 i0000 l0009 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 02 00 00 09 00 <7>g_file_storage gadget: get configuration descriptor <7>g_file_storage gadget: ep0-in, length 9: <7> 0: 09 02 20 00 01 01 00 c0 01 <7>udc: SETUP 80.06 v0300 i0000 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 03 00 00 ff 00 <7>g_file_storage gadget: get string descriptor <7>g_file_storage gadget: ep0-in, length 4: <7> 0: 04 03 09 04 <7>udc: SETUP 80.06 v0303 i0409 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 03 03 09 04 ff 00 <7>g_file_storage gadget: get string descriptor <7>g_file_storage gadget: ep0-in, length 26: <7> 0: 1a 03 33 00 32 00 33 00 30 00 32 00 30 00 34 00 <7> 10: 46 00 36 00 33 00 37 00 34 00 <7>udc: SETUP 80.06 v0200 i0000 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 02 00 00 ff 00 <7>g_file_storage gadget: get configuration descriptor <7>g_file_storage gadget: ep0-in, length 32: <7> 0: 1a 03 33 00 32 00 33 00 30 00 32 00 30 00 34 00 <7> 10: 46 00 36 00 33 00 37 00 34 00 05 02 02 40 00 00 <7>udc: USB reset start <7>g_file_storage gadget: disconnect or port reset <7>g_file_storage gadget-lun0: fdatasync -> 0 <6>udc: USB reset <7>udc: SETUP 80.06 v0100 i0000 l0040 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 01 00 00 40 00 <7>g_file_storage gadget: get device descriptor <7>g_file_storage gadget: ep0-in, length 18: <7> 0: 12 01 00 02 00 00 00 10 25 05 a5 a4 03 03 01 02 <7> 10: 03 01 <7>udc: USB reset start <7>g_file_storage gadget: disconnect or port reset <7>g_file_storage gadget-lun0: fdatasync -> 0 <6>udc: USB reset <7>udc: SETUP 80.06 v0100 i0000 l0012 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 01 00 00 12 00 <7>g_file_storage gadget: get device descriptor <7>g_file_storage gadget: ep0-in, length 18: <7> 0: 12 01 00 02 00 00 00 10 25 05 a5 a4 03 03 01 02 <7> 10: 03 01 <7>udc: SETUP 80.06 v0200 i0000 l0009 <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 02 00 00 09 00 <7>g_file_storage gadget: get configuration descriptor <7>g_file_storage gadget: ep0-in, length 9: <7> 0: 09 02 20 00 01 01 00 c0 01 <7>udc: SETUP 80.06 v0300 i0000 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 03 00 00 ff 00 <7>g_file_storage gadget: get string descriptor <7>g_file_storage gadget: ep0-in, length 4: <7> 0: 04 03 09 04 <7>udc: SETUP 80.06 v0303 i0409 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 03 03 09 04 ff 00 <7>g_file_storage gadget: get string descriptor <7>g_file_storage gadget: ep0-in, length 26: <7> 0: 1a 03 33 00 32 00 33 00 30 00 32 00 30 00 34 00 <7> 10: 46 00 36 00 33 00 37 00 34 00 <7>udc: SETUP 80.06 v0200 i0000 l00ff <7>g_file_storage gadget: ep0-setup, length 8: <7> 0: 80 06 00 02 00 00 ff 00 <7>g_file_storage gadget: get configuration descriptor <7>g_file_storage gadget: ep0-in, length 32: <7> 0: 1a 03 33 00 32 00 33 00 30 00 32 00 30 00 34 00 <7> 10: 46 00 36 00 33 00 37 00 34 00 05 02 02 40 00 00 <7>udc: USB suspend <7>g_file_storage gadget: suspend ---------------------------------------------------------------------------------------
Linux session:
---------------------------------------------------------------------------------------
<7>udc: USB resume
<7>g_file_storage gadget: resume
<7>udc: USB suspend
<7>g_file_storage gadget: suspend
<7>udc: USB resume
<7>g_file_storage gadget: resume
<7>udc: USB suspend
<7>g_file_storage gadget: suspend
<7>udc: USB resume
<7>g_file_storage gadget: resume
<7>udc: USB reset start
<7>g_file_storage gadget: disconnect or port reset
<7>g_file_storage gadget-lun0: fdatasync -> 0
<6>udc: USB reset
<7>udc: USB suspend
<7>g_file_storage gadget: suspend
<7>udc: USB resume
<7>g_file_storage gadget: resume
<7>udc: USB reset start
<7>g_file_storage gadget: disconnect or port reset
<7>g_file_storage gadget-lun0: fdatasync -> 0
<6>udc: USB reset
<7>udc: SETUP 80.06 v0100 i0000 l0008
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 80 06 00 01 00 00 08 00
<7>g_file_storage gadget: get device descriptor
<7>g_file_storage gadget: ep0-in, length 8:
<7> 0: 12 01 00 02 00 00 00 10
<7>udc: SETUP 80.06 v0100 i0000 l0012
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 80 06 00 01 00 00 12 00
<7>g_file_storage gadget: get device descriptor
<7>g_file_storage gadget: ep0-in, length 18:
<7> 0: 12 01 00 02 00 00 00 10 25 05 a5 a4 03 03 01 02
<7> 10: 03 01
<7>udc: SETUP 80.06 v0600 i0000 l000a
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 80 06 00 06 00 00 0a 00
<7>udc: protocol STALL, 81 err -95
<7>udc: SETUP 80.06 v0600 i0000 l000a
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 80 06 00 06 00 00 0a 00
<7>udc: protocol STALL, 81 err -95
<7>udc: ep0 re-stall
<7>udc: SETUP 80.06 v0600 i0000 l000a
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 80 06 00 06 00 00 0a 00
<7>udc: protocol STALL, 81 err -95
<7>udc: ep0 re-stall
<7>udc: SETUP 80.06 v0200 i0000 l0009
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 80 06 00 02 00 00 09 00
<7>g_file_storage gadget: get configuration descriptor
<7>g_file_storage gadget: ep0-in, length 9:
<7> 0: 09 02 20 00 01 01 00 c0 01
<7>udc: SETUP 80.06 v0200 i0000 l0020
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 80 06 00 02 00 00 20 00
<7>g_file_storage gadget: get configuration descriptor
<7>g_file_storage gadget: ep0-in, length 32:
<7> 0: 09 02 20 00 01 01 00 c0 01 09 04 00 00 02 08 06
<7> 10: 50 00 07 05 81 02 40 00 00 07 05 02 02 40 00 00
<7>udc: SETUP 00.09 v0001 i0000 l0000
<7>g_file_storage gadget: ep0-setup, length 8:
<7> 0: 00 09 01 00 00 00 00 00
<7>g_file_storage gadget: set configuration
<7>g_file_storage gadget: set interface 0
<7>udc: ep1in-bulk using dma8
<7>udc: enabled ep1in-bulk
<7>udc: enabled ep2out-bulk
<6>g_file_storage gadget: full speed config #1
<7>udc: ep0 config ack
<7>g_file_storage gadget: bulk-out, length 31:
<7> 0: 55 53 42 43 00 00 00 00 00 00 00 00 00 00 06 00
<7> 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
<7>g_file_storage gadget: SCSI command: TEST UNIT READY; Dc=6, Dn=0; Hc=6, Hn=0
<7>g_file_storage gadget: sending command-failure status
<7>g_file_storage gadget: sense data: SK x06, ASC x29, ASCQ x00; info x0
<7>g_file_storage gadget: bulk-in, length 13:
<7> 0: 55 53 42 53 00 00 00 00 00 00 00 00 01
<7>g_file_storage gadget: bulk-out, length 31:
<7> 0: 55 53 42 43 01 00 00 00 12 00 00 00 80 00 06 03
<7> 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
<7>g_file_storage gadget: SCSI command: REQUEST SENSE; Dc=6, Di=0; Hc=6, Hi=18
<7>g_file_storage gadget: bulk-in, length 0:
<3>IRQ LOCK: IRQ4 is locking the system, disabled
<7>g_file_storage gadget: bulk-in set halt
<7>g_file_storage gadget: delayed bulk-in endpoint halt
---------------------------------------------------------------------------------------
Vlad Trukhin
------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel