summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@freescale.com>2013-11-26 13:33:21 +0800
committerPeter Chen <peter.chen@freescale.com>2013-11-29 16:47:58 +0800
commitfbcc9b5b7c142fa8e97c05fd4dd6c787712ae868 (patch)
tree9d4ba843b350e7b9c257c8ec2a2f1bd04c126086 /sound
parentc2cd7fb85116694372ee3228c939fb958c261835 (diff)
ENGR00289645 usb: chipidea: udc: don't do hardware access if gadget has stopped
After _gadget_stop_activity is executed, we can consider the hardware operation for gadget has finished, and the udc can be stopped and enter low power mode. So, any later hardware operations (from usb_ep_ops APIs or usb_gadget_ops APIs) should be considered invalid, any deinitializatons has been covered at _gadget_stop_activity. I meet this problem when I plug out usb cable from PC (using g_mass_storage), my callstack like: vbus interrupt->.vbus_session->composite_disconnect ->pm_runtime_put_sync(&_gadget->dev), the composite_disconnect will call fsg_disable, but fsg_disable calls usb_ep_disable using async way, there are register accesses for usb_ep_disable. So sometimes, I get system hang due to visit register without clock, sometimes not. The Linux Kernel USB maintainer Alan Stern suggests this kinds of solution. See: http://marc.info/?l=linux-usb&m=138541769810983&w=2. Signed-off-by: Peter Chen <peter.chen@freescale.com> (cherry picked from commit ac760d29366f19eb1a4d4c37899b33019570a447)
Diffstat (limited to 'sound')
0 files changed, 0 insertions, 0 deletions