linux/drivers/usb/chipidea
Jun Li 72dc8df792
usb: chipidea: udc: protect usb interrupt enable
We hit the problem with below sequence:
- ci_udc_vbus_session() update vbus_active flag and ci->driver
is valid,
- before calling the ci_hdrc_gadget_connect(),
usb_gadget_udc_stop() is called by application remove gadget
driver,
- ci_udc_vbus_session() will contine do ci_hdrc_gadget_connect() as
gadget_ready is 1, so udc interrupt is enabled, but ci->driver is
NULL.
- USB connection irq generated but ci->driver is NULL.

As udc irq only should be enabled when gadget driver is binded, so
add spinlock to protect the usb irq enable for vbus session handling.

Signed-off-by: Jun Li <jun.li@nxp.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
2019-11-18 16:45:30 +08:00
..
bits.h USB: chipidea: Remove redundant license text 2017-11-07 15:45:01 +01:00
ci_hdrc_imx.c usb: chipidea: imx: fix EPROBE_DEFER support during driver probe 2019-08-15 14:50:21 +02:00
ci_hdrc_imx.h usb: chipidea: imx: set power polarity 2019-02-27 15:51:02 +01:00
ci_hdrc_msm.c usb: chipidea: msm: Use device-managed registration API 2019-09-03 15:53:27 +02:00
ci_hdrc_pci.c USB: chipidea: Remove redundant license text 2017-11-07 15:45:01 +01:00
ci_hdrc_tegra.c usb: chipidea: tegra: clean up tegra_udc flag code 2019-10-04 14:15:13 +02:00
ci_hdrc_usb2.c USB: chipidea: Remove redundant license text 2017-11-07 15:45:01 +01:00
ci_hdrc_zevio.c USB: chipidea: Remove redundant license text 2017-11-07 15:45:01 +01:00
ci.h usb: chipidea: add role switch class support 2019-08-28 10:39:53 +08:00
core.c usb: chipidea: add role switch class support 2019-08-28 10:39:53 +08:00
debug.c usb: chipidea: debug: create debugfs directory under usb root 2019-11-14 11:14:54 +08:00
host.c usb: chipidea: host: override ehci->hub_control 2018-12-11 09:12:30 +08:00
host.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig usb: chipidea: add role switch class support 2019-08-28 10:39:53 +08:00
Makefile usb: chipidea: Always build ULPI code 2018-07-05 14:22:47 +08:00
otg_fsm.c USB: move many drivers to use DEVICE_ATTR_WO 2018-01-24 08:49:52 +01:00
otg_fsm.h USB: chipidea: Remove redundant license text 2017-11-07 15:45:01 +01:00
otg.c usb: chipidea: add role switch class support 2019-08-28 10:39:53 +08:00
otg.h usb: chipidea: Prevent unbalanced IRQ disable 2018-09-20 17:04:21 +08:00
udc.c usb: chipidea: udc: protect usb interrupt enable 2019-11-18 16:45:30 +08:00
udc.h USB: chipidea: Remove redundant license text 2017-11-07 15:45:01 +01:00
ulpi.c usb: chipidea: Always build ULPI code 2018-07-05 14:22:47 +08:00
usbmisc_imx.c usb: chipidea: imx: Use devm_platform_ioremap_resource() 2019-06-14 17:40:20 +08:00