summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorChandana Kishori Chiluveru <cchiluve@codeaurora.org>2016-05-17 11:43:54 +0530
committerAjay Agarwal <ajaya@codeaurora.org>2017-11-15 16:16:48 +0530
commit6e8f263048db182e22bda8a4231fc54de8d04096 (patch)
tree2cd4ae333288887418afd92a71602a324b69b9f6 /drivers/usb
parentb0ba6e47923aba09cf52ec9a92c12b114462bd9a (diff)
USB: core: Add USB_DEVICE_ERROR uevent for enumeration timeout
Some userspace modules expect USB driver to send event to userspace, when usb device enumeration failure with device descriptor read errors. Add USB_DEVICE_ERROR uevent in the USB driver to explicitly send the ERROR uevent for such case. Change-Id: I7128869ff0700ab90d4c949de24cd03c5c90e22e Signed-off-by: Chandana Kishori Chiluveru <cchiluve@codeaurora.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/core/hub.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index c08a524f3dab..5644051b4010 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4294,6 +4294,8 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
enum usb_device_speed oldspeed = udev->speed;
const char *speed;
int devnum = udev->devnum;
+ char *error_event[] = {
+ "USB_DEVICE_ERROR=Device_No_Response", NULL };
/* root hub ports have a slightly longer reset period
* (from USB 2.0 spec, section 7.1.7.5)
@@ -4467,6 +4469,8 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
if (r != -ENODEV)
dev_err(&udev->dev, "device descriptor read/64, error %d\n",
r);
+ kobject_uevent_env(&udev->parent->dev.kobj,
+ KOBJ_CHANGE, error_event);
retval = -EMSGSIZE;
continue;
}
@@ -4519,6 +4523,8 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
dev_err(&udev->dev,
"device descriptor read/8, error %d\n",
retval);
+ kobject_uevent_env(&udev->parent->dev.kobj,
+ KOBJ_CHANGE, error_event);
if (retval >= 0)
retval = -EMSGSIZE;
} else {