linux/drivers
Sebastian Andrzej Siewior 5bdb1dcc63 usb: dwc3: ep0: handle delayed_status again
Since the re-worked ep0 handling (which uses HW's hints to recognize the ep0
status) we lost the delayed status handling. This is used by the file and mass
storage gadget to gain some extra time so setup its internal status before it
can proceed further requests.
In particular the storage gadget does nothing on USB_REQ_SET_CONFIGURATION but
wakes up a thread which handles the request. If the udc driver continues ep0
handling before the thread did its work then then endpoint is not yet
configured and further requests will fail. Once the gadget is ready, it will
enqueue an empty packet which is used for synchronization.
In order to fix this issue, the patch does the following:
Set ->delayed_status once the delayed_status has been notices and do not
continue on the next XferNotReady event. We will continues ep0 processing once
the gadget enqueued the zero packet for synchronization.

A cleaner approach would be to enforce the gadget to enqueue an empty
(zero) request even for the status phase but this would do for now.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2011-12-12 11:48:31 +02:00
..
accessibility
acpi pstore: pass allocated memory region back to caller 2011-11-17 12:58:07 -08:00
amba
ata libata: fix build without BMDMA 2011-11-17 02:11:42 -05:00
atm
auxdisplay
base PM / Driver core: leave runtime PM enabled during system shutdown 2011-12-07 22:26:56 +01:00
bcma
block paride: fix potential information leak in pg_read() 2011-11-16 09:21:50 +01:00
bluetooth Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2011-11-09 16:22:15 -05:00
cdrom
char fix typo/thinko in get_random_bytes() 2011-11-17 11:42:54 -02:00
clk
clocksource Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
connector
cpufreq [CPUFREQ] db8500: fix build error due to undeclared i variable 2011-11-11 22:28:33 -05:00
cpuidle Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2011-11-07 10:13:52 -08:00
crypto Merge git://github.com/herbertx/crypto 2011-11-25 21:55:07 -08:00
dca
devfreq PM / devfreq: correct Kconfig dependency 2011-11-14 23:31:35 +01:00
dio
dma Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
edac drivers/edac/mpc85xx_edac.c: fix memory controller compatible for edac 2011-11-24 01:59:38 -06:00
eisa
firewire Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
firmware Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound 2011-12-02 08:10:51 -08:00
gpio gpio: fix a build failure on KS8695 GPIO 2011-12-05 15:30:33 -08:00
gpu vmwgfx: Use kcalloc instead of kzalloc to allocate array 2011-12-07 10:44:41 +00:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2011-12-02 08:25:46 -08:00
hv
hwmon hwmon: convert drivers/hwmon/* to use module_platform_driver() 2011-11-26 09:48:20 -08:00
hwspinlock Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-08 18:34:16 -08:00
i2c Merge branch 'fixes' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-12-01 11:53:54 -08:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 2011-11-18 22:04:12 -02:00
idle Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2011-11-07 10:13:52 -08:00
ieee802154
infiniband Merge branches 'cxgb4', 'ipoib', 'misc' and 'qib' into for-next 2011-11-29 18:01:53 -08:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2011-11-22 09:18:06 -08:00
iommu intr_remapping: Fix section mismatch in ir_dev_scope_init() 2011-12-05 18:22:53 +01:00
isdn isdn: avoid copying too long drvid 2011-11-29 18:39:37 -05:00
leds Revert "leds: save the delay values after a successful call to blink_set()" 2011-11-15 22:41:50 -02:00
lguest
macintosh m68k/irq: Remove obsolete IRQ_FLG_* users 2011-11-08 22:35:48 +01:00
mca
md md: raid5 crash during degradation 2011-12-09 14:26:11 +11:00
media Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2011-11-12 00:03:50 -02:00
memstick
message
mfd mfd: fix build failures in recently added ab5500 code 2011-11-07 21:45:14 -05:00
misc Merge branch 'char-misc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc 2011-11-21 20:36:05 -08:00
mmc arm/imx: fix imx6q mmc error when mounting rootfs 2011-11-11 16:53:35 +01:00
mtd MTD: MAPS: bcm963xx-flash.c: explicitly include module.h 2011-11-07 21:26:55 -05:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2011-12-09 08:08:57 -08:00
nfc
nubus
of of/irq: Get rid of NO_IRQ usage 2011-12-07 09:06:37 -08:00
oprofile Merge branch 'urgent' of git://amd64.org/linux/rric into perf/urgent 2011-11-15 11:03:30 +01:00
parisc
parport
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2011-11-23 14:58:46 -08:00
pcmcia Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
pinctrl pinctrl: hide subsystem from the populace 2011-11-10 09:02:12 +01:00
platform toshiba_acpi: Fix machines that don't support HCI_SYSTEM_EVENT 2011-12-05 13:07:28 -05:00
pnp Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2011-11-07 10:13:52 -08:00
power x86/mrst: Battery fixes 2011-12-05 17:06:37 +01:00
pps
ps3 powerpc/ps3: irq: Remove IRQF_DISABLED 2011-11-08 14:51:46 +11:00
ptp ptp: Fix clock_getres() implementation 2011-12-06 11:38:32 +01:00
rapidio rapidio/tsi721: modify PCIe capability settings 2011-12-09 07:50:29 -08:00
regulator regulator: twl: fix twl4030 support for smps regulators 2011-11-28 18:58:31 +00:00
rtc drivers/rtc/rtc-s3c.c: fix driver clock enable/disable balance issues 2011-12-09 07:50:28 -08:00
s390 [S390] ap: Setup timer for sending messages after reset. 2011-12-01 13:32:18 +01:00
sbus
scsi [SCSI] hpsa: Disable ASPM 2011-11-14 10:47:01 -06:00
sfi
sh Merge branches 'sh/pm-runtime' and 'common/clkfwk' into sh-fixes-for-linus 2011-11-11 16:16:25 +09:00
sn
spi spi/gpio: fix section mismatch warning 2011-12-07 22:17:39 +01:00
ssb
staging Merge branch 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging 2011-12-02 13:30:25 -08:00
target iscsi-target: Fix hex2bin warn_unused compile message 2011-12-06 06:00:59 +00:00
tc
telephony
thermal thermal: Prevent polling from happening during system suspend 2011-11-06 20:38:49 -05:00
tty Merge branch 'tty-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty 2011-11-21 20:36:46 -08:00
uio
usb usb: dwc3: ep0: handle delayed_status again 2011-12-12 11:48:31 +02:00
uwb
vhost
video viafb: correct sync polarity for OLPC DCON 2011-11-22 00:56:17 +00:00
virt
virtio virtio-pci: make reset operation safer 2011-11-24 13:04:48 +10:30
vlynq
w1 Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
watchdog watchdog: fix initialisation printout in s3c2410_wdt 2011-11-16 22:04:17 +01:00
xen xen-gntalloc: signedness bug in add_grefs() 2011-11-16 12:13:48 -05:00
zorro
Kconfig
Makefile