From: Wu, Hao Date: Thu, 12 Jan 2012 16:59:51 +0000 (+0800) Subject: usb/android gadget: notify uplevel when function disabled via sysfs interface X-Git-Tag: 2.1b_release~1592 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c85ff79dd94a716ab65390a423bffa5d5216a133;p=kernel%2Fkernel-mfld-blackbay.git usb/android gadget: notify uplevel when function disabled via sysfs interface 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 Reviewed-on: http://android.intel.com:8080/31734 Reviewed-by: Tang, Richard Reviewed-by: Kuppuswamy, Sathyanarayanan Reviewed-by: Yang, Fei Tested-by: Sun, Jianhua Reviewed-by: buildbot Tested-by: buildbot --- diff --git a/drivers/usb/gadget/android.c b/drivers/usb/gadget/android.c index 1f751ba..dc7df30 100644 --- a/drivers/usb/gadget/android.c +++ b/drivers/usb/gadget/android.c @@ -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);