aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-09-17 03:54:23 +0200
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-09-27 02:50:40 +0200
commitbedf96d235bc589960365fb470046b19faca7afd (patch)
tree7b5ee6c5f65728835e8d7c76b861f602f19f0539
parent40ad5e07e8a06c61141d8007c3b5e02a2c3f9513 (diff)
downloadkernel_i9300_mainline-bedf96d235bc589960365fb470046b19faca7afd.zip
kernel_i9300_mainline-bedf96d235bc589960365fb470046b19faca7afd.tar.gz
kernel_i9300_mainline-bedf96d235bc589960365fb470046b19faca7afd.tar.bz2
Revert "usb: gadget: Add Uevent to notify userspace"
This reverts commit 9ba2a365af59e4a664f48cdfc8d13d12996cba66.
-rw-r--r--drivers/usb/gadget/Kconfig8
-rw-r--r--drivers/usb/gadget/configfs.c154
2 files changed, 3 insertions, 159 deletions
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 010c50a..3c3f31c 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -381,14 +381,6 @@ config USB_CONFIGFS_F_FS
implemented in kernel space (for instance Ethernet, serial or
mass storage) and other are implemented in user space.
-config USB_CONFIGFS_UEVENT
- boolean "Uevent notification of Gadget state"
- depends on USB_CONFIGFS
- help
- Enable uevent notifications to userspace when the gadget
- state changes. The gadget can be in any of the following
- three states: "CONNECTED/DISCONNECTED/CONFIGURED"
-
config USB_CONFIGFS_F_UAC1
bool "Audio Class 1.0"
depends on USB_CONFIGFS
diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c
index 5cc7ebf..f9237fe 100644
--- a/drivers/usb/gadget/configfs.c
+++ b/drivers/usb/gadget/configfs.c
@@ -9,20 +9,6 @@
#include "u_f.h"
#include "u_os_desc.h"
-#ifdef CONFIG_USB_CONFIGFS_UEVENT
-#include <linux/platform_device.h>
-#include <linux/kdev_t.h>
-#include <linux/usb/ch9.h>
-#include "u_fs.h"
-
-#ifdef CONFIG_USB_CONFIGFS_F_ACC
-extern int acc_ctrlrequest(struct usb_composite_dev *cdev,
- const struct usb_ctrlrequest *ctrl);
-void acc_disconnect(void);
-#endif
-static struct class *android_class;
-#endif
-
int check_user_usb_string(const char *name,
struct usb_gadget_strings *stringtab_dev)
{
@@ -74,12 +60,6 @@ struct gadget_info {
bool use_os_desc;
char b_vendor_code;
char qw_sign[OS_STRING_QW_SIGN_LEN];
-#ifdef CONFIG_USB_CONFIGFS_UEVENT
- bool connected;
- bool sw_connected;
- struct work_struct work;
- struct device *dev;
-#endif
};
static inline struct gadget_info *to_gadget_info(struct config_item *item)
@@ -285,7 +265,7 @@ static ssize_t gadget_dev_desc_UDC_store(struct config_item *item,
mutex_lock(&gi->lock);
- if (!strlen(name) || strcmp(name, "none") == 0) {
+ if (!strlen(name)) {
ret = unregister_gadget(gi);
if (ret)
goto err;
@@ -1386,57 +1366,6 @@ err_comp_cleanup:
return ret;
}
-#ifdef CONFIG_USB_CONFIGFS_UEVENT
-static void android_work(struct work_struct *data)
-{
- struct gadget_info *gi = container_of(data, struct gadget_info, work);
- struct usb_composite_dev *cdev = &gi->cdev;
- char *disconnected[2] = { "USB_STATE=DISCONNECTED", NULL };
- char *connected[2] = { "USB_STATE=CONNECTED", NULL };
- char *configured[2] = { "USB_STATE=CONFIGURED", NULL };
- /* 0-connected 1-configured 2-disconnected*/
- bool status[3] = { false, false, false };
- unsigned long flags;
- bool uevent_sent = false;
-
- spin_lock_irqsave(&cdev->lock, flags);
- if (cdev->config)
- status[1] = true;
-
- if (gi->connected != gi->sw_connected) {
- if (gi->connected)
- status[0] = true;
- else
- status[2] = true;
- gi->sw_connected = gi->connected;
- }
- spin_unlock_irqrestore(&cdev->lock, flags);
-
- if (status[0]) {
- kobject_uevent_env(&gi->dev->kobj, KOBJ_CHANGE, connected);
- pr_info("%s: sent uevent %s\n", __func__, connected[0]);
- uevent_sent = true;
- }
-
- if (status[1]) {
- kobject_uevent_env(&gi->dev->kobj, KOBJ_CHANGE, configured);
- pr_info("%s: sent uevent %s\n", __func__, configured[0]);
- uevent_sent = true;
- }
-
- if (status[2]) {
- kobject_uevent_env(&gi->dev->kobj, KOBJ_CHANGE, disconnected);
- pr_info("%s: sent uevent %s\n", __func__, disconnected[0]);
- uevent_sent = true;
- }
-
- if (!uevent_sent) {
- pr_info("%s: did not send uevent (%d %d %p)\n", __func__,
- gi->connected, gi->sw_connected, cdev->config);
- }
-}
-#endif
-
static void configfs_composite_unbind(struct usb_gadget *gadget)
{
struct usb_composite_dev *cdev;
@@ -1456,78 +1385,14 @@ static void configfs_composite_unbind(struct usb_gadget *gadget)
set_gadget_data(gadget, NULL);
}
-#ifdef CONFIG_USB_CONFIGFS_UEVENT
-static int android_setup(struct usb_gadget *gadget,
- const struct usb_ctrlrequest *c)
-{
- struct usb_composite_dev *cdev = get_gadget_data(gadget);
- unsigned long flags;
- struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev);
- int value = -EOPNOTSUPP;
- struct usb_function_instance *fi;
-
- spin_lock_irqsave(&cdev->lock, flags);
- if (!gi->connected) {
- gi->connected = 1;
- schedule_work(&gi->work);
- }
- spin_unlock_irqrestore(&cdev->lock, flags);
- list_for_each_entry(fi, &gi->available_func, cfs_list) {
- if (fi != NULL && fi->f != NULL && fi->f->setup != NULL) {
- value = fi->f->setup(fi->f, c);
- if (value >= 0)
- break;
- }
- }
-
-#ifdef CONFIG_USB_CONFIGFS_F_ACC
- if (value < 0)
- value = acc_ctrlrequest(cdev, c);
-#endif
-
- if (value < 0)
- value = composite_setup(gadget, c);
-
- spin_lock_irqsave(&cdev->lock, flags);
- if (c->bRequest == USB_REQ_SET_CONFIGURATION &&
- cdev->config) {
- schedule_work(&gi->work);
- }
- spin_unlock_irqrestore(&cdev->lock, flags);
-
- return value;
-}
-
-static void android_disconnect(struct usb_gadget *gadget)
-{
- struct usb_composite_dev *cdev = get_gadget_data(gadget);
- struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev);
-
- /* accessory HID support can be active while the
- accessory function is not actually enabled,
- so we need to inform it when we are disconnected.
- */
-
-#ifdef CONFIG_USB_CONFIGFS_F_ACC
- acc_disconnect();
-#endif
- gi->connected = 0;
- schedule_work(&gi->work);
- composite_disconnect(gadget);
-}
-#endif
-
static const struct usb_gadget_driver configfs_driver_template = {
.bind = configfs_composite_bind,
.unbind = configfs_composite_unbind,
-#ifdef CONFIG_USB_CONFIGFS_UEVENT
- .setup = android_setup,
- .disconnect = android_disconnect,
-#else
+
.setup = composite_setup,
.reset = composite_disconnect,
.disconnect = composite_disconnect,
-#endif
+
.suspend = composite_suspend,
.resume = composite_resume,
@@ -1587,12 +1452,6 @@ static struct config_group *gadgets_make(
gi->composite.gadget_driver.function = kstrdup(name, GFP_KERNEL);
gi->composite.name = gi->composite.gadget_driver.function;
-#ifdef CONFIG_USB_CONFIGFS_UEVENT
- INIT_WORK(&gi->work, android_work);
- gi->dev = device_create(android_class, NULL,
- MKDEV(0, 0), NULL, "android0");
-#endif
-
if (!gi->composite.gadget_driver.function)
goto err;
@@ -1644,13 +1503,6 @@ static int __init gadget_cfs_init(void)
config_group_init(&gadget_subsys.su_group);
ret = configfs_register_subsystem(&gadget_subsys);
-
-#ifdef CONFIG_USB_CONFIGFS_UEVENT
- android_class = class_create(THIS_MODULE, "android_usb");
- if (IS_ERR(android_class))
- return PTR_ERR(android_class);
-#endif
-
return ret;
}
module_init(gadget_cfs_init);