linux/drivers/usb/chipidea
Peter Chen 7e1f01e6c0 usb: chipidea: udc: using the correct stall implementation
commit 56ffa1d154 upstream.

According to spec, there are functional and protocol stalls.

For functional stall, it is for bulk and interrupt endpoints,
below are cases for it:
- Host sends SET_FEATURE request for Set-Halt, the udc driver
needs to set stall, and return true unconditionally.
- The gadget driver may call usb_ep_set_halt to stall certain
endpoints, if there is a transfer in pending, the udc driver
should not set stall, and return -EAGAIN accordingly.
These two kinds of stall need to be cleared by host using CLEAR_FEATURE
request (Clear-Halt).

For protocol stall, it is for control endpoint, this stall will
be set if the control request has failed. This stall will be
cleared by next setup request (hardware will do it).

It fixed usbtest (drivers/usb/misc/usbtest.c) Test 13 "set/clear halt"
test failure, meanwhile, this change has been verified by
USB2 CV Compliance Test and MSC Tests.

Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Felipe Balbi <balbi@ti.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-10-22 14:43:23 -07:00
..
bits.h usb: chipidea: support runtime power management for otg fsm mode 2015-03-18 16:19:12 +01:00
ci.h usb: chipidea: use hrtimer for otg fsm timers 2015-03-26 10:54:39 +01:00
ci_hdrc_imx.c usb: chipidea: imx: fix a typo for imx6sx 2015-10-22 14:43:21 -07:00
ci_hdrc_imx.h usb: chipidea: usbmisc_imx: add .set_wakeup interface 2015-03-18 16:19:09 +01:00
ci_hdrc_msm.c usb: chipidea: remove flag CI_HDRC_REQUIRE_TRANSCEIVER 2014-11-26 09:28:12 -08:00
ci_hdrc_pci.c chipidea: pci: register nop PHY 2015-03-18 16:19:11 +01:00
ci_hdrc_usb2.c usb: chipidea: fix platform_no_drv_owner.cocci warnings 2014-11-26 11:47:43 -08:00
ci_hdrc_zevio.c Chipidea: TI-NSPIRE USB OTG hardware does not support high speed and must connect at full speed 2015-03-18 16:19:11 +01:00
core.c usb: chipidea: ehci_init_driver is intended to call one time 2015-08-16 20:52:13 -07:00
debug.c usb: chipidea: debug: avoid out of bound read 2015-05-06 14:28:18 +08:00
debug.h usb: chipidea: drop "13xxx" infix 2013-06-24 16:16:55 -07:00
host.c usb: chipidea: ehci_init_driver is intended to call one time 2015-08-16 20:52:13 -07:00
host.h usb: chipidea: ehci_init_driver is intended to call one time 2015-08-16 20:52:13 -07:00
Kconfig chipidea: pci: make it depends on NOP_USB_XCEIV 2015-03-26 10:54:39 +01:00
Makefile chipidea: introduce specific Kconfig options for glue drivers 2015-03-26 10:54:39 +01:00
otg.c usb: chipidea: add runtime power management support 2015-03-18 16:19:08 +01:00
otg.h usb: chipidea: using one inline function to cover queue work operations 2014-05-23 11:35:02 +09:00
otg_fsm.c usb: chipidea: otg: remove mutex unlock and lock while stop and start role 2015-04-28 12:51:30 +02:00
otg_fsm.h usb: chipidea: use hrtimer for otg fsm timers 2015-03-26 10:54:39 +01:00
udc.c usb: chipidea: udc: using the correct stall implementation 2015-10-22 14:43:23 -07:00
udc.h usb: chipidea: add role init and destroy APIs 2013-08-14 12:37:19 -07:00
usbmisc_imx.c usb: chipidea: usbmisc_imx: fix returnvar.cocci warnings 2015-03-26 10:44:37 +01:00