diff options
| author | Vijayavardhan Vennapusa <vvreddy@codeaurora.org> | 2017-02-18 17:57:08 +0530 |
|---|---|---|
| committer | Vijayavardhan Vennapusa <vvreddy@codeaurora.org> | 2017-02-23 11:48:35 +0530 |
| commit | 02702e795b3f56fcd6efb58623169fe9ec639c5c (patch) | |
| tree | ead5b89b198143fec36a9357dd368a2c993108c1 /drivers/usb | |
| parent | 3a7e752617514960c5cecdf84e12b13dc63c04c7 (diff) | |
USB: u_data_ipa: Fix pm_runtime_get/put() mismatch
If IPA driver is disabled or IPA driver can fail when tether_bridge_init()
is called as part of connect_work. In this case, as part of connect_work,
results in not decrementing pm_usage counter, which causes USB not
entering low power mode. Fix the issue by decrementing pm_usage counter
in error cases.
Change-Id: I7fdb7a28e3e2da6d4c0b01e69e3551f81d000aa4
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/gadget/function/u_data_ipa.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/usb/gadget/function/u_data_ipa.c b/drivers/usb/gadget/function/u_data_ipa.c index 83a98f1196f8..baf5eae578a4 100644 --- a/drivers/usb/gadget/function/u_data_ipa.c +++ b/drivers/usb/gadget/function/u_data_ipa.c @@ -413,6 +413,7 @@ static void ipa_data_connect_work(struct work_struct *w) if (!gadget) { spin_unlock_irqrestore(&port->port_lock, flags); + usb_gadget_autopm_put_async(port->gadget); pr_err("%s: gport is NULL.\n", __func__); return; } @@ -676,6 +677,8 @@ disconnect_usb_bam_ipa_out: usb_bam_disconnect_ipa(port->usb_bam_type, &port->ipa_params); is_ipa_disconnected = true; } + if (port->func_type == USB_IPA_FUNC_RMNET) + teth_bridge_disconnect(port->ipa_params.src_client); unconfig_msm_ep_in: spin_lock_irqsave(&port->port_lock, flags); /* check if USB cable is disconnected or not */ @@ -698,6 +701,7 @@ out: spin_lock_irqsave(&port->port_lock, flags); port->is_connected = false; spin_unlock_irqrestore(&port->port_lock, flags); + usb_gadget_autopm_put_async(port->gadget); } /** |
