summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLi Jun <jun.li@nxp.com>2016-02-03 16:09:57 +0800
committerLi Jun <jun.li@nxp.com>2016-02-16 15:48:20 +0800
commitfd49596eceeb4e61267f35fb74bf0c04056f2ed7 (patch)
treefb73e2d8aab94182feb09f7c19b9e3035dc54b8f /drivers
parent79aab6fc3c9fca1fa4f83f25a5050ea4afc90f0a (diff)
MLK-12344-3 usb: chipidea: update power lost handling for gadget
After we put gadget disconnect and connect in id switch handling, update power lost work accordingly. Acked-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/chipidea/core.c8
-rw-r--r--drivers/usb/chipidea/udc.c4
2 files changed, 5 insertions, 7 deletions
diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
index a614a2a7fd25..a5936e2aeaaa 100644
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -835,11 +835,13 @@ static void ci_start_new_role(struct ci_hdrc *ci)
{
enum ci_role role = ci_get_role(ci);
- if (ci->role != role)
+ if (ci->role != role) {
ci_handle_id_switch(ci);
-
- if (role == CI_ROLE_GADGET)
+ } else if (role == CI_ROLE_GADGET) {
+ if (ci->vbus_active)
+ usb_gadget_vbus_disconnect(&ci->gadget);
ci_handle_vbus_connected(ci);
+ }
}
static void ci_power_lost_work(struct work_struct *work)
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index 33e7f9c28b0c..a0accd5b8945 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -2077,10 +2077,6 @@ static void udc_suspend_for_power_lost(struct ci_hdrc *ci)
/* Power lost with device mode */
static void udc_resume_from_power_lost(struct ci_hdrc *ci)
{
- /* Force disconnect if power lost with vbus on */
- if (!ci_otg_is_fsm_mode(ci) && ci->vbus_active)
- usb_gadget_vbus_disconnect(&ci->gadget);
-
if (ci->is_otg)
hw_write_otgsc(ci, OTGSC_BSVIS | OTGSC_BSVIE,
OTGSC_BSVIS | OTGSC_BSVIE);