summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-10-05 03:06:41 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-10-05 03:06:40 -0700
commit668a016621b6a7e9be94aa8d9d7a0db9610bc9f2 (patch)
treeaa30b4d5ae2294f3ad384c7874d88828f9b73382 /drivers
parent7eb529ae690818042f8baea4bb8f8a187abdd0f1 (diff)
parent8b53c3c3d624ab08fc6b31b825d14e5f500d7f97 (diff)
Merge "platform: msm: Fix USB device does not enumerate in SS mode"
Diffstat (limited to 'drivers')
-rw-r--r--drivers/platform/msm/gpio-usbdetect.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/platform/msm/gpio-usbdetect.c b/drivers/platform/msm/gpio-usbdetect.c
index dc05d7108135..adf47fc32548 100644
--- a/drivers/platform/msm/gpio-usbdetect.c
+++ b/drivers/platform/msm/gpio-usbdetect.c
@@ -50,6 +50,7 @@ static irqreturn_t gpio_usbdetect_vbus_irq(int irq, void *data)
if (usb->vbus_state) {
dev_dbg(&usb->pdev->dev, "setting vbus notification\n");
extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB, 1);
+ extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB_SPEED, 1);
} else {
dev_dbg(&usb->pdev->dev, "setting vbus removed notification\n");
extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB, 0);
@@ -85,6 +86,7 @@ static irqreturn_t gpio_usbdetect_id_irq_thread(int irq, void *data)
dev_dbg(&usb->pdev->dev, "starting usb HOST\n");
disable_irq(usb->vbus_det_irq);
extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB_HOST, 1);
+ extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB_SPEED, 1);
}
return IRQ_HANDLED;
}
@@ -186,6 +188,14 @@ static int gpio_usbdetect_probe(struct platform_device *pdev)
enable_irq_wake(usb->id_det_irq);
dev_set_drvdata(&pdev->dev, usb);
+ if (usb->id_det_irq) {
+ gpio_usbdetect_id_irq(usb->id_det_irq, usb);
+ if (!usb->id_state) {
+ gpio_usbdetect_id_irq_thread(usb->id_det_irq, usb);
+ return 0;
+ }
+ }
+
/* Read and report initial VBUS state */
gpio_usbdetect_vbus_irq(usb->vbus_det_irq, usb);