USB: ehci-platform: Support ehci reset after resume quirk
[firefly-linux-kernel-4.4.55.git] / drivers / usb / host / ehci-platform.c
index 35a9aeda01689a9c3075edca96d2cfd1cc5769e6..db5c29edf6dbaa067b73943b9b179925cf5fd9c8 100644 (file)
@@ -185,6 +185,10 @@ static int ehci_platform_probe(struct platform_device *dev)
                if (of_property_read_bool(dev->dev.of_node, "big-endian"))
                        ehci->big_endian_mmio = ehci->big_endian_desc = 1;
 
+               if (of_property_read_bool(dev->dev.of_node,
+                                         "needs-reset-on-resume"))
+                       pdata->reset_on_resume = 1;
+
                priv->phy = devm_phy_get(&dev->dev, "usb");
                if (IS_ERR(priv->phy)) {
                        err = PTR_ERR(priv->phy);
@@ -340,7 +344,7 @@ static int ehci_platform_resume(struct device *dev)
                        return err;
        }
 
-       ehci_resume(hcd, false);
+       ehci_resume(hcd, pdata->reset_on_resume);
        return 0;
 }
 #endif /* CONFIG_PM_SLEEP */
@@ -368,7 +372,6 @@ static struct platform_driver ehci_platform_driver = {
        .remove         = ehci_platform_remove,
        .shutdown       = usb_hcd_platform_shutdown,
        .driver         = {
-               .owner  = THIS_MODULE,
                .name   = "ehci-platform",
                .pm     = &ehci_platform_pm_ops,
                .of_match_table = vt8500_ehci_ids,