summaryrefslogtreecommitdiff
path: root/drivers/usb/misc/ks_bridge.c
diff options
context:
space:
mode:
authorVijayavardhan Vennapusa <vvreddy@codeaurora.org>2019-04-25 15:03:06 +0530
committerVijayavardhan Vennapusa <vvreddy@codeaurora.org>2019-05-08 11:32:46 +0530
commit2b163b082a5760f85b78d57c51e2d0be480c2766 (patch)
tree9269b14cf0eae1671bd62273f796ac9a7ab1774c /drivers/usb/misc/ks_bridge.c
parent3d1854afebdb70d642b6c012a09e32f12b3dbd1f (diff)
misc: ksbridge: Add support for sending uevent with pid/vid
Add required support in ksbridge driver to send uevent with vendor id and product id details. Change-Id: I22974dfa63665e6ddcbda2f7d11c68f716c1c760 Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Diffstat (limited to 'drivers/usb/misc/ks_bridge.c')
-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);