linux-kernel-test/drivers/usb/gadget
Peter Chen f79a60b878 usb: fsl_udc_core: prime status stage once data stage has primed
- For Control Read transfer, the ACK handshake on an IN transaction
may be corrupted, so the device may not receive the ACK for data
stage, the complete irq will not occur at this situation.
Therefore, we need to move prime status stage from complete irq
routine to the place where the data stage has just primed, or the
host will never get ACK for status stage.
The above issue has been described at USB2.0 spec chapter 8.5.3.3.

- After adding prime status stage just after prime the data stage,
there is a potential problem when the status dTD is added before the data stage
has primed by hardware. The reason is the device's dTD descriptor has NO direction bit,
if data stage (IN) prime hasn't finished, the status stage(OUT)
dTD will be added at data stage dTD's Next dTD Pointer, so when the data stage
transfer has finished, the status dTD will be primed as IN by hardware,
then the host will never receive ACK from the device side for status stage.

- Delete below code at fsl_ep_queue:
       /* Update ep0 state */
       if ((ep_index(ep) == 0))
               udc->ep0_state = DATA_STATE_XMIT;
the udc->ep0_state will be updated again after udc->driver->setup
finishes.

It is tested at i.mx51 bbg board with g_mass_storage, g_ether, g_serial.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2012-04-10 19:11:44 +03:00
..
acm_ms.c usb: gadget: add new usb gadget for ACM and mass storage 2011-10-13 20:46:27 +03:00
amd5536udc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
amd5536udc.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
at91_udc.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
at91_udc.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
atmel_usba_udc.c ARM: device tree work 2012-03-27 16:47:35 -07:00
atmel_usba_udc.h
audio.c usb: gadget: Add Audio Class 2.0 Driver 2012-02-15 10:10:31 +02:00
cdc2.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
ci13xxx_msm.c usb: Convert all users to new usb_phy 2012-02-27 15:41:48 +02:00
ci13xxx_pci.c
ci13xxx_udc.c This merge is rather big. Here's what it contains: 2012-03-01 09:20:28 -08:00
ci13xxx_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
composite.c usb: gadget: SS Isoc endpoints use comp_desc->bMaxBurst too 2012-01-24 15:42:57 +02:00
config.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
dbgp.c usb: gadget: rename usb_gadget_driver::speed to max_speed 2011-12-12 11:45:12 +02:00
dummy_hcd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
epautoconf.c This merge is rather big. Here's what it contains: 2012-03-01 09:20:28 -08:00
ether.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
f_acm.c usb: gadget: add usb3.0 descriptors to serial gadgets 2012-02-09 10:11:36 +02:00
f_ecm.c usb: gadget: Add Interface Association Descriptor to ECM 2012-01-30 11:17:26 +02:00
f_eem.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
f_fs.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-03-21 13:36:41 -07:00
f_hid.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
f_loopback.c usb: gadget: zero: fix bug in loopback autoresume handling 2012-01-30 11:10:20 +02:00
f_mass_storage.c This merge is rather big. Here's what it contains: 2012-03-01 09:20:28 -08:00
f_midi.c Allocate correct size (portably) in drivers/usb/gadget/f_midi.c::f_midi_bind() 2012-03-02 16:22:11 -08:00
f_ncm.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
f_obex.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
f_phonet.c f_phonet: fix skb truesize underestimation 2012-03-27 22:50:54 -04:00
f_rndis.c usb: gadget: update Michal Nazarewicz's email address 2012-01-24 11:45:11 +02:00
f_serial.c usb: gadget: add usb3.0 descriptors to serial gadgets 2012-02-09 10:11:36 +02:00
f_sourcesink.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
f_subset.c usb gadget: fix a section mismatch when compiling g_ffs with CONFIG_USB_FUNCTIONFS_ETH 2012-03-13 14:29:33 -07:00
f_uac1.c usb: gadget: audio: Move string IDs to audio.c 2012-02-15 10:10:25 +02:00
f_uac2.c usb: gadget: Add Audio Class 2.0 Driver 2012-02-15 10:10:31 +02:00
f_uvc.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
f_uvc.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
file_storage.c usb/gadget: use common defines within the storage gadget 2012-02-28 11:08:33 -08:00
fsl_mxc_udc.c usb: fsl_mxc_udc.c: Remove compile-time dependency of MX35 SoC type 2011-11-29 23:19:04 +09:00
fsl_qe_udc.c usb: gadget: Clear usb_endpoint_descriptor inside the struct usb_ep on disable 2012-02-24 12:22:38 +02:00
fsl_qe_udc.h usb: fix a typo in a comment 2011-04-13 16:41:00 -07:00
fsl_udc_core.c usb: fsl_udc_core: prime status stage once data stage has primed 2012-04-10 19:11:44 +03:00
fsl_usb2_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
fusb300_udc.c usb: gadget: rename usb_gadget_driver::speed to max_speed 2011-12-12 11:45:12 +02:00
fusb300_udc.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
g_ffs.c usb: gadget: update Michal Nazarewicz's email address 2012-01-24 11:45:11 +02:00
g_zero.h
gadget_chips.h usb: gadget: introduce gadget_is_dwc3() 2011-08-22 16:00:46 -07:00
gmidi.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
goku_udc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
goku_udc.h
hid.c USB: gadget: Make g_hid device class conform to spec. 2012-03-08 13:11:34 -08:00
imx_udc.c usb: gadget: rename usb_gadget_driver::speed to max_speed 2011-12-12 11:45:12 +02:00
imx_udc.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
inode.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-03-21 13:36:41 -07:00
Kconfig ARM: More device tree support updates 2012-03-28 12:34:33 -07:00
langwell_udc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
langwell_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
m66592-udc.c usb: gadget: rename usb_gadget_driver::speed to max_speed 2011-12-12 11:45:12 +02:00
m66592-udc.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
Makefile usb: gadget: mv_udc: drop ARCH dependency 2011-12-20 12:55:06 +02:00
mass_storage.c usb: gadget: update Michal Nazarewicz's email address 2012-01-24 11:45:11 +02:00
multi.c usb: gadget: update Michal Nazarewicz's email address 2012-01-24 11:45:11 +02:00
mv_udc_core.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
mv_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
ncm.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
ndis.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
net2272.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
net2272.h USB: net2272: driver for PLX NET2272 USB device controller 2011-06-06 16:47:27 -07:00
net2280.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
net2280.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
nokia.c usb: gadget: add max_speed to usb_composite_driver 2011-07-01 14:27:05 -07:00
omap_udc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
omap_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
pch_udc.c usb/gadget/pch_udc: Fix compile error 2012-03-06 07:00:14 -08:00
printer.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
pxa25x_udc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
pxa25x_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
pxa27x_udc.c usb: otg: Convert all users to pass struct usb_otg for OTG functions 2012-02-27 15:41:52 +02:00
pxa27x_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
r8a66597-udc.c usb: gadget: r8a66597: use generic map/unmap routines 2012-02-28 14:49:08 +02:00
r8a66597-udc.h usb: gadget: r8a66597-udc: add support for SUDMAC 2011-10-13 20:38:39 +03:00
rndis.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
rndis.h
s3c2410_udc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
s3c2410_udc.h misc latin1 to utf8 conversions 2012-01-02 13:04:55 +01:00
s3c-hsotg.c Merge branch 'for-next/gadget' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next 2011-12-13 09:37:40 -08:00
s3c-hsudc.c This merge is rather big. Here's what it contains: 2012-03-01 09:20:28 -08:00
serial.c usb: gadget: add usb3.0 descriptors to serial gadgets 2012-02-09 10:11:36 +02:00
storage_common.c This merge is rather big. Here's what it contains: 2012-03-01 09:20:28 -08:00
u_ether.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
u_ether.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
u_phonet.h
u_serial.c TTY: remove unneeded tty->index checks 2012-03-08 11:42:21 -08:00
u_serial.h usb: gadget: add usb_endpoint_descriptor to struct usb_ep 2011-06-28 11:14:36 -07:00
u_uac1.c usb: gadget: Rename audio function to uac1 2012-02-15 10:09:48 +02:00
u_uac1.h usb: gadget: Rename audio function to uac1 2012-02-15 10:09:48 +02:00
udc-core.c usb: gadget: udc-core: stop UDC on device-initiated disconnect 2012-04-10 12:21:32 +03:00
usbstring.c USB: remove homegrown UTF conversion routine for gadgets 2011-11-18 10:51:01 -08:00
uvc_queue.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
uvc_queue.h
uvc_v4l2.c Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb 2011-10-25 12:23:15 +02:00
uvc_video.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
uvc.h Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb 2011-10-25 12:23:15 +02:00
webcam.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
zero.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30