From 632c2b712b85fff010f4ee07c0fe51de351e3789 Mon Sep 17 00:00:00 2001 From: "Wu, Hao" Date: Thu, 10 Nov 2011 07:04:54 +0800 Subject: [PATCH] usb/android_gadget: disconnect from host when disabling android_gadget BZ: 13984 This patch adds gadget_disconnect() the first time disabling android_gadget via userspace interface /sys/class/android_usb/android0/enable. This will ensure the host can enumerate correctly when it is enabled next time. Change-Id: Ib4c6c0fb7d72b7a1bcb2120ac0a4d23e7da6ec4b Signed-off-by: Wu, Hao Reviewed-on: http://android.intel.com:8080/23757 Reviewed-by: Gross, Mark Tested-by: Gross, Mark --- drivers/usb/gadget/android.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/usb/gadget/android.c b/drivers/usb/gadget/android.c index d109bfb..38f1fda 100644 --- a/drivers/usb/gadget/android.c +++ b/drivers/usb/gadget/android.c @@ -838,6 +838,9 @@ static ssize_t enable_store(struct device *pdev, struct device_attribute *attr, usb_gadget_disconnect(cdev->gadget); usb_remove_config(cdev, &android_config_driver); dev->enabled = false; + } else if (!enabled && !dev->enabled) { + usb_gadget_disconnect(cdev->gadget); + dev->enabled = false; } else { pr_err("android_usb: already %s\n", dev->enabled ? "enabled" : "disabled"); -- 2.7.4