summaryrefslogtreecommitdiff
path: root/net/switchdev/switchdev.c
diff options
context:
space:
mode:
authorMayank Rana <mrana@codeaurora.org>2016-10-25 15:44:11 -0700
committerHemant Kumar <hemantk@codeaurora.org>2017-02-27 18:29:57 -0800
commit0d11e5fbc021c7b05e6b4cb4d5e0a4c7ab29ef1f (patch)
tree8144eb61d1357244b6fd20c58f06893822baca60 /net/switchdev/switchdev.c
parentb7ac056fb9578fe8ce7edc9d22fc0ecfa2b1a264 (diff)
f_gsi: Make usb ipa wq as freezable workqueue
USB function driver uses usb_gadget_autopm_get() API to increments USB controller device's PM runtime usage and child count, and also expects that USB controller is resumed. Late suspend disables USB controller device's PM runtime functionality by incrementing disable_depth count and early resume enables it back once system is resumed. This results into pm_runtime_get_sync() returning -EACCESS when APPS is power collapsed and it is resuming due to USB bus resume case. usb_gadget_autopm_get() API is decrementing device's PM runtime usage count if it receives error value from pm_runtime_get_sync() API. USB function driver doesn't check return value which results into continuing USB operation. On next bus suspend, it decrements usage count although it was not incremented in previous resume case which makes PM runtime usage count negative. This can cause multiple issues as below: 1. USB bus resume may take more time causing host re-enumerating USB gadget device 2. Unclock register access on remote wakeup case 3. USB host mode enumeration may fail due to dwc3 device usage count is negative. Fix this issue by making usb ipa wq as freezable workqueue which will make sure that ipa_work_handler() work is executed only after system is resumed and USB controller device's PM runtime is enabled. CRs-Fixed: 1075002, 1074383 Change-Id: I300d1a0081fafcbef3c00c63cddd49be54a651e5 Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Diffstat (limited to 'net/switchdev/switchdev.c')
0 files changed, 0 insertions, 0 deletions