These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / usb / dwc3 / dwc3-omap.c
index 6b486a3..22e9606 100644 (file)
@@ -128,8 +128,7 @@ struct dwc3_omap {
 
        u32                     dma_status:1;
 
-       struct extcon_specific_cable_nb extcon_vbus_dev;
-       struct extcon_specific_cable_nb extcon_id_dev;
+       struct extcon_dev       *edev;
        struct notifier_block   vbus_nb;
        struct notifier_block   id_nb;
 
@@ -225,12 +224,10 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
 
        switch (status) {
        case OMAP_DWC3_ID_GROUND:
-               dev_dbg(omap->dev, "ID GND\n");
-
                if (omap->vbus_reg) {
                        ret = regulator_enable(omap->vbus_reg);
                        if (ret) {
-                               dev_dbg(omap->dev, "regulator enable failed\n");
+                               dev_err(omap->dev, "regulator enable failed\n");
                                return;
                        }
                }
@@ -245,8 +242,6 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
                break;
 
        case OMAP_DWC3_VBUS_VALID:
-               dev_dbg(omap->dev, "VBUS Connect\n");
-
                val = dwc3_omap_read_utmi_ctrl(omap);
                val &= ~USBOTGSS_UTMI_OTG_CTRL_SESSEND;
                val |= USBOTGSS_UTMI_OTG_CTRL_IDDIG
@@ -261,8 +256,6 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
                        regulator_disable(omap->vbus_reg);
 
        case OMAP_DWC3_VBUS_OFF:
-               dev_dbg(omap->dev, "VBUS Disconnect\n");
-
                val = dwc3_omap_read_utmi_ctrl(omap);
                val &= ~(USBOTGSS_UTMI_OTG_CTRL_SESSVALID
                                | USBOTGSS_UTMI_OTG_CTRL_VBUSVALID
@@ -273,7 +266,7 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
                break;
 
        default:
-               dev_dbg(omap->dev, "invalid state\n");
+               dev_WARN(omap->dev, "invalid state\n");
        }
 }
 
@@ -284,37 +277,8 @@ static irqreturn_t dwc3_omap_interrupt(int irq, void *_omap)
 
        reg = dwc3_omap_read_irqmisc_status(omap);
 
-       if (reg & USBOTGSS_IRQMISC_DMADISABLECLR) {
-               dev_dbg(omap->dev, "DMA Disable was Cleared\n");
+       if (reg & USBOTGSS_IRQMISC_DMADISABLECLR)
                omap->dma_status = false;
-       }
-
-       if (reg & USBOTGSS_IRQMISC_OEVT)
-               dev_dbg(omap->dev, "OTG Event\n");
-
-       if (reg & USBOTGSS_IRQMISC_DRVVBUS_RISE)
-               dev_dbg(omap->dev, "DRVVBUS Rise\n");
-
-       if (reg & USBOTGSS_IRQMISC_CHRGVBUS_RISE)
-               dev_dbg(omap->dev, "CHRGVBUS Rise\n");
-
-       if (reg & USBOTGSS_IRQMISC_DISCHRGVBUS_RISE)
-               dev_dbg(omap->dev, "DISCHRGVBUS Rise\n");
-
-       if (reg & USBOTGSS_IRQMISC_IDPULLUP_RISE)
-               dev_dbg(omap->dev, "IDPULLUP Rise\n");
-
-       if (reg & USBOTGSS_IRQMISC_DRVVBUS_FALL)
-               dev_dbg(omap->dev, "DRVVBUS Fall\n");
-
-       if (reg & USBOTGSS_IRQMISC_CHRGVBUS_FALL)
-               dev_dbg(omap->dev, "CHRGVBUS Fall\n");
-
-       if (reg & USBOTGSS_IRQMISC_DISCHRGVBUS_FALL)
-               dev_dbg(omap->dev, "DISCHRGVBUS Fall\n");
-
-       if (reg & USBOTGSS_IRQMISC_IDPULLUP_FALL)
-               dev_dbg(omap->dev, "IDPULLUP Fall\n");
 
        dwc3_omap_write_irqmisc_status(omap, reg);
 
@@ -434,7 +398,7 @@ static void dwc3_omap_set_utmi_mode(struct dwc3_omap *omap)
                reg &= ~USBOTGSS_UTMI_OTG_CTRL_SW_MODE;
                break;
        default:
-               dev_dbg(omap->dev, "UNKNOWN utmi mode %d\n", utmi_mode);
+               dev_WARN(omap->dev, "UNKNOWN utmi mode %d\n", utmi_mode);
        }
 
        dwc3_omap_write_utmi_ctrl(omap, reg);
@@ -454,23 +418,23 @@ static int dwc3_omap_extcon_register(struct dwc3_omap *omap)
                }
 
                omap->vbus_nb.notifier_call = dwc3_omap_vbus_notifier;
-               ret = extcon_register_interest(&omap->extcon_vbus_dev,
-                                              edev->name, "USB",
-                                              &omap->vbus_nb);
+               ret = extcon_register_notifier(edev, EXTCON_USB,
+                                               &omap->vbus_nb);
                if (ret < 0)
                        dev_vdbg(omap->dev, "failed to register notifier for USB\n");
 
                omap->id_nb.notifier_call = dwc3_omap_id_notifier;
-               ret = extcon_register_interest(&omap->extcon_id_dev,
-                                              edev->name, "USB-HOST",
-                                              &omap->id_nb);
+               ret = extcon_register_notifier(edev, EXTCON_USB_HOST,
+                                               &omap->id_nb);
                if (ret < 0)
                        dev_vdbg(omap->dev, "failed to register notifier for USB-HOST\n");
 
-               if (extcon_get_cable_state(edev, "USB") == true)
+               if (extcon_get_cable_state_(edev, EXTCON_USB) == true)
                        dwc3_omap_set_mailbox(omap, OMAP_DWC3_VBUS_VALID);
-               if (extcon_get_cable_state(edev, "USB-HOST") == true)
+               if (extcon_get_cable_state_(edev, EXTCON_USB_HOST) == true)
                        dwc3_omap_set_mailbox(omap, OMAP_DWC3_ID_GROUND);
+
+               omap->edev = edev;
        }
 
        return 0;
@@ -550,8 +514,6 @@ static int dwc3_omap_probe(struct platform_device *pdev)
                goto err1;
        }
 
-       dwc3_omap_enable_irqs(omap);
-
        ret = dwc3_omap_extcon_register(omap);
        if (ret < 0)
                goto err2;
@@ -562,14 +524,13 @@ static int dwc3_omap_probe(struct platform_device *pdev)
                goto err3;
        }
 
+       dwc3_omap_enable_irqs(omap);
+
        return 0;
 
 err3:
-       if (omap->extcon_vbus_dev.edev)
-               extcon_unregister_interest(&omap->extcon_vbus_dev);
-       if (omap->extcon_id_dev.edev)
-               extcon_unregister_interest(&omap->extcon_id_dev);
-
+       extcon_unregister_notifier(omap->edev, EXTCON_USB, &omap->vbus_nb);
+       extcon_unregister_notifier(omap->edev, EXTCON_USB_HOST, &omap->id_nb);
 err2:
        dwc3_omap_disable_irqs(omap);
 
@@ -586,10 +547,8 @@ static int dwc3_omap_remove(struct platform_device *pdev)
 {
        struct dwc3_omap        *omap = platform_get_drvdata(pdev);
 
-       if (omap->extcon_vbus_dev.edev)
-               extcon_unregister_interest(&omap->extcon_vbus_dev);
-       if (omap->extcon_id_dev.edev)
-               extcon_unregister_interest(&omap->extcon_id_dev);
+       extcon_unregister_notifier(omap->edev, EXTCON_USB, &omap->vbus_nb);
+       extcon_unregister_notifier(omap->edev, EXTCON_USB_HOST, &omap->id_nb);
        dwc3_omap_disable_irqs(omap);
        of_platform_depopulate(omap->dev);
        pm_runtime_put_sync(&pdev->dev);