usb/android gadget: notify uplevel when function disabled via sysfs interface
authorWu, Hao <hao.wu@intel.com>
Thu, 12 Jan 2012 16:59:51 +0000 (00:59 +0800)
committerbuildbot <buildbot@intel.com>
Tue, 17 Jan 2012 18:10:49 +0000 (10:10 -0800)
BZ: 18273

Lack notification to uplevel, which cause incorrect ui in status bar.
so add this notification from driver to uplevel.

Change-Id: I766612f3f4de5124c7a8d46d668db7be24879788
Signed-off-by: Wu, Hao <hao.wu@intel.com>
Reviewed-on: http://android.intel.com:8080/31734
Reviewed-by: Tang, Richard <richard.tang@intel.com>
Reviewed-by: Kuppuswamy, Sathyanarayanan <sathyanarayanan.kuppuswamy@intel.com>
Reviewed-by: Yang, Fei <fei.yang@intel.com>
Tested-by: Sun, Jianhua <jianhua.sun@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/usb/gadget/android.c

index 1f751ba..dc7df30 100644 (file)
@@ -173,6 +173,8 @@ static void android_work(struct work_struct *data)
                uevent_envp = configured;
        else if (dev->connected != dev->sw_connected)
                uevent_envp = dev->connected ? connected : disconnected;
+       else if (!cdev->config && dev->connected)
+               uevent_envp = connected;
        dev->sw_connected = dev->connected;
        spin_unlock_irqrestore(&cdev->lock, flags);
 
@@ -844,6 +846,10 @@ static ssize_t enable_store(struct device *pdev, struct device_attribute *attr,
        } else if (!enabled && dev->enabled) {
                usb_gadget_disconnect(cdev->gadget);
                usb_remove_config(cdev, &android_config_driver);
+
+               /* notify uplevel to correct status */
+               schedule_work(&dev->work);
+
                dev->enabled = false;
        } else if (!enabled && !dev->enabled) {
                usb_gadget_disconnect(cdev->gadget);