summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2019-05-08 18:49:41 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2019-05-08 18:49:41 -0700
commit7939ca71f88fc96db090556f7855e1c2aeca79a0 (patch)
treec41dda8dce54b9ef4ce5484d3dc1829f3e673c9f
parenta4b2d7442de2cb009685ea8f4e6331f3281b9f6a (diff)
parent2b163b082a5760f85b78d57c51e2d0be480c2766 (diff)
Merge "misc: ksbridge: Add support for sending uevent with pid/vid"
-rw-r--r--drivers/usb/misc/ks_bridge.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/usb/misc/ks_bridge.c b/drivers/usb/misc/ks_bridge.c
index 715bf840def8..56e6fbabdf40 100644
--- a/drivers/usb/misc/ks_bridge.c
+++ b/drivers/usb/misc/ks_bridge.c
@@ -30,6 +30,7 @@
#include <linux/list.h>
#include <linux/wait.h>
#include <linux/poll.h>
+#include <linux/kobject.h>
#define DRIVER_DESC "USB host ks bridge driver"
@@ -670,6 +671,17 @@ static void ksb_start_rx_work(struct work_struct *w)
usb_autopm_put_interface_async(ksb->ifc);
}
+static void ks_bridge_notify_status(struct kobject *kobj,
+ const struct usb_device_id *id)
+{
+ char product_info[32];
+ char *envp[2] = { product_info, NULL };
+
+ snprintf(product_info, sizeof(product_info), "PRODUCT=%x/%x/%x",
+ id->idVendor, id->idProduct, id->bDeviceProtocol);
+ kobject_uevent_env(kobj, KOBJ_ONLINE, envp);
+}
+
static int
ksb_usb_probe(struct usb_interface *ifc, const struct usb_device_id *id)
{
@@ -854,6 +866,8 @@ ksb_usb_probe(struct usb_interface *ifc, const struct usb_device_id *id)
if (free_mdev)
kfree(mdev);
+
+ ks_bridge_notify_status(&ksb->device->kobj, id);
dev_dbg(&udev->dev, "usb dev connected");
return 0;
@@ -925,6 +939,7 @@ static void ksb_usb_disconnect(struct usb_interface *ifc)
dbg_log_event(ksb, "PID-DETACH", 0, 0);
clear_bit(USB_DEV_CONNECTED, &ksb->flags);
+ kobject_uevent(&ksb->device->kobj, KOBJ_OFFLINE);
wake_up(&ksb->ks_wait_q);
cancel_work_sync(&ksb->to_mdm_work);
cancel_work_sync(&ksb->start_rx_work);