msm: gpio-usbdetect: Use extcon_set_property to notify speed
The 4.9 kernel uses extcon_set_property to notify
the USB speed. Update the driver to use it.
Change-Id: I84a1997d69e77666f0668657b3ecbfd9c93a6913
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
diff --git a/drivers/platform/msm/gpio-usbdetect.c b/drivers/platform/msm/gpio-usbdetect.c
index 299a6e0..6730d4a 100644
--- a/drivers/platform/msm/gpio-usbdetect.c
+++ b/drivers/platform/msm/gpio-usbdetect.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2015,2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2015, 2017-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -37,19 +37,20 @@
static const unsigned int gpio_usb_extcon_table[] = {
EXTCON_USB,
EXTCON_USB_HOST,
- EXTCON_USB_CC,
- EXTCON_USB_SPEED,
EXTCON_NONE,
};
static irqreturn_t gpio_usbdetect_vbus_irq(int irq, void *data)
{
struct gpio_usbdetect *usb = data;
+ union extcon_property_value val;
usb->vbus_state = gpio_get_value(usb->gpio);
if (usb->vbus_state) {
dev_dbg(&usb->pdev->dev, "setting vbus notification\n");
- extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB_SPEED, 1);
+ val.intval = true;
+ extcon_set_property(usb->extcon_dev, EXTCON_USB,
+ EXTCON_PROP_USB_SS, val);
extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB, 1);
} else {
dev_dbg(&usb->pdev->dev, "setting vbus removed notification\n");
@@ -79,6 +80,7 @@
struct gpio_usbdetect *usb = data;
bool curr_id_state;
static int prev_id_state = -EINVAL;
+ union extcon_property_value val;
curr_id_state = usb->id_state;
if (curr_id_state == prev_id_state) {
@@ -93,7 +95,9 @@
} else {
dev_dbg(&usb->pdev->dev, "starting usb HOST\n");
disable_irq(usb->vbus_det_irq);
- extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB_SPEED, 1);
+ val.intval = true;
+ extcon_set_property(usb->extcon_dev, EXTCON_USB_HOST,
+ EXTCON_PROP_USB_SS, val);
extcon_set_cable_state_(usb->extcon_dev, EXTCON_USB_HOST, 1);
}
@@ -128,6 +132,16 @@
return rc;
}
+ rc = extcon_set_property_capability(usb->extcon_dev,
+ EXTCON_USB, EXTCON_PROP_USB_SS);
+ rc |= extcon_set_property_capability(usb->extcon_dev,
+ EXTCON_USB_HOST, EXTCON_PROP_USB_SS);
+ if (rc) {
+ dev_err(&pdev->dev, "failed to register extcon props rc=%d\n",
+ rc);
+ return rc;
+ }
+
if (of_get_property(pdev->dev.of_node, "vin-supply", NULL)) {
usb->vin = devm_regulator_get(&pdev->dev, "vin");
if (IS_ERR(usb->vin)) {