From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Blumenstingl Subject: [PATCH usb-next v9 5/8] usb: host: xhci-mtk: remove custom USB PHY handling Date: Sun, 11 Feb 2018 22:06:48 +0100 Message-ID: <20180211210651.2046-6-martin.blumenstingl@googlemail.com> References: <20180211210651.2046-1-martin.blumenstingl@googlemail.com> Return-path: In-Reply-To: <20180211210651.2046-1-martin.blumenstingl-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> Sender: linux-tegra-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, mathias.nyman-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, felipe.balbi-VuQAYsv1563Yd54FQh9/CA@public.gmane.org Cc: linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org, thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org, linux-ci5G2KO2hbZ+pU9mqzGVBQ@public.gmane.org, Peter.Chen-3arQi8VN3Tc@public.gmane.org, matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, mark.rutland-5wv7dgnIgG8@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, narmstrong-rdvid1DuHRBWk0Htik3J/w@public.gmane.org, linux-amlogic-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, yixun.lan-LpR1jeaWuhtBDgjK7y7TUQ@public.gmane.org, Martin Blumenstingl List-Id: linux-tegra@vger.kernel.org The new PHY wrapper is now wired up in the core HCD code. This means that PHYs are now controlled (initialized, enabled, disabled, exited) without requiring any host-driver specific code. Remove the custom USB PHY handling from the xhci-mtk driver as the core HCD code now handles this. Signed-off-by: Martin Blumenstingl --- drivers/usb/host/xhci-mtk.c | 98 +-------------------------------------------- 1 file changed, 2 insertions(+), 96 deletions(-) diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c index b0ab4d5e2751..7334da9e9779 100644 --- a/drivers/usb/host/xhci-mtk.c +++ b/drivers/usb/host/xhci-mtk.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -352,62 +351,6 @@ static const struct xhci_driver_overrides xhci_mtk_overrides __initconst = { static struct hc_driver __read_mostly xhci_mtk_hc_driver; -static int xhci_mtk_phy_init(struct xhci_hcd_mtk *mtk) -{ - int i; - int ret; - - for (i = 0; i < mtk->num_phys; i++) { - ret = phy_init(mtk->phys[i]); - if (ret) - goto exit_phy; - } - return 0; - -exit_phy: - for (; i > 0; i--) - phy_exit(mtk->phys[i - 1]); - - return ret; -} - -static int xhci_mtk_phy_exit(struct xhci_hcd_mtk *mtk) -{ - int i; - - for (i = 0; i < mtk->num_phys; i++) - phy_exit(mtk->phys[i]); - - return 0; -} - -static int xhci_mtk_phy_power_on(struct xhci_hcd_mtk *mtk) -{ - int i; - int ret; - - for (i = 0; i < mtk->num_phys; i++) { - ret = phy_power_on(mtk->phys[i]); - if (ret) - goto power_off_phy; - } - return 0; - -power_off_phy: - for (; i > 0; i--) - phy_power_off(mtk->phys[i - 1]); - - return ret; -} - -static void xhci_mtk_phy_power_off(struct xhci_hcd_mtk *mtk) -{ - unsigned int i; - - for (i = 0; i < mtk->num_phys; i++) - phy_power_off(mtk->phys[i]); -} - static int xhci_mtk_ldos_enable(struct xhci_hcd_mtk *mtk) { int ret; @@ -488,8 +431,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) struct xhci_hcd *xhci; struct resource *res; struct usb_hcd *hcd; - struct phy *phy; - int phy_num; int ret = -ENODEV; int irq; @@ -529,16 +470,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) return ret; } - mtk->num_phys = of_count_phandle_with_args(node, - "phys", "#phy-cells"); - if (mtk->num_phys > 0) { - mtk->phys = devm_kcalloc(dev, mtk->num_phys, - sizeof(*mtk->phys), GFP_KERNEL); - if (!mtk->phys) - return -ENOMEM; - } else { - mtk->num_phys = 0; - } pm_runtime_enable(dev); pm_runtime_get_sync(dev); device_enable_async_suspend(dev); @@ -596,23 +527,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) mtk->has_ippc = false; } - for (phy_num = 0; phy_num < mtk->num_phys; phy_num++) { - phy = devm_of_phy_get_by_index(dev, node, phy_num); - if (IS_ERR(phy)) { - ret = PTR_ERR(phy); - goto put_usb2_hcd; - } - mtk->phys[phy_num] = phy; - } - - ret = xhci_mtk_phy_init(mtk); - if (ret) - goto put_usb2_hcd; - - ret = xhci_mtk_phy_power_on(mtk); - if (ret) - goto exit_phys; - device_init_wakeup(dev, true); xhci = hcd_to_xhci(hcd); @@ -630,7 +544,7 @@ static int xhci_mtk_probe(struct platform_device *pdev) dev_name(dev), hcd); if (!xhci->shared_hcd) { ret = -ENOMEM; - goto power_off_phys; + goto disable_device_wakeup; } ret = usb_add_hcd(hcd, irq, IRQF_SHARED); @@ -653,13 +567,9 @@ static int xhci_mtk_probe(struct platform_device *pdev) xhci_mtk_sch_exit(mtk); usb_put_hcd(xhci->shared_hcd); -power_off_phys: - xhci_mtk_phy_power_off(mtk); +disable_device_wakeup: device_init_wakeup(dev, false); -exit_phys: - xhci_mtk_phy_exit(mtk); - put_usb2_hcd: usb_put_hcd(hcd); @@ -682,8 +592,6 @@ static int xhci_mtk_remove(struct platform_device *dev) struct xhci_hcd *xhci = hcd_to_xhci(hcd); usb_remove_hcd(xhci->shared_hcd); - xhci_mtk_phy_power_off(mtk); - xhci_mtk_phy_exit(mtk); device_init_wakeup(&dev->dev, false); usb_remove_hcd(hcd); @@ -718,7 +626,6 @@ static int __maybe_unused xhci_mtk_suspend(struct device *dev) del_timer_sync(&xhci->shared_hcd->rh_timer); xhci_mtk_host_disable(mtk); - xhci_mtk_phy_power_off(mtk); xhci_mtk_clks_disable(mtk); usb_wakeup_set(mtk, true); return 0; @@ -732,7 +639,6 @@ static int __maybe_unused xhci_mtk_resume(struct device *dev) usb_wakeup_set(mtk, false); xhci_mtk_clks_enable(mtk); - xhci_mtk_phy_power_on(mtk); xhci_mtk_host_enable(mtk); xhci_dbg(xhci, "%s: restart port polling\n", __func__); -- 2.16.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [usb-next,v9,5/8] usb: host: xhci-mtk: remove custom USB PHY handling From: Martin Blumenstingl Message-Id: <20180211210651.2046-6-martin.blumenstingl@googlemail.com> Date: Sun, 11 Feb 2018 22:06:48 +0100 To: linux-usb@vger.kernel.org, mathias.nyman@intel.com, arnd@arndb.de, gregkh@linuxfoundation.org, felipe.balbi@linux.intel.com Cc: linux-omap@vger.kernel.org, linux-tegra@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, jonathanh@nvidia.com, thierry.reding@gmail.com, stern@rowland.harvard.edu, linux@prisktech.co.nz, Peter.Chen@nxp.com, matthias.bgg@gmail.com, mark.rutland@arm.com, robh+dt@kernel.org, narmstrong@baylibre.com, linux-amlogic@lists.infradead.org, yixun.lan@amlogic.com, Martin Blumenstingl List-ID: VGhlIG5ldyBQSFkgd3JhcHBlciBpcyBub3cgd2lyZWQgdXAgaW4gdGhlIGNvcmUgSENEIGNvZGUu IFRoaXMgbWVhbnMKdGhhdCBQSFlzIGFyZSBub3cgY29udHJvbGxlZCAoaW5pdGlhbGl6ZWQsIGVu YWJsZWQsIGRpc2FibGVkLCBleGl0ZWQpCndpdGhvdXQgcmVxdWlyaW5nIGFueSBob3N0LWRyaXZl ciBzcGVjaWZpYyBjb2RlLgpSZW1vdmUgdGhlIGN1c3RvbSBVU0IgUEhZIGhhbmRsaW5nIGZyb20g dGhlIHhoY2ktbXRrIGRyaXZlciBhcyB0aGUgY29yZQpIQ0QgY29kZSBub3cgaGFuZGxlcyB0aGlz LgoKU2lnbmVkLW9mZi1ieTogTWFydGluIEJsdW1lbnN0aW5nbCA8bWFydGluLmJsdW1lbnN0aW5n bEBnb29nbGVtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL3VzYi9ob3N0L3hoY2ktbXRrLmMgfCA5OCAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2hvc3QveGhjaS1tdGsuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGsuYwppbmRl eCBiMGFiNGQ1ZTI3NTEuLjczMzRkYTllOTc3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9z dC94aGNpLW10ay5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGsuYwpAQCAtMTQsNyAr MTQsNiBAQAogI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KICNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9vZi5oPgotI2luY2x1ZGUgPGxpbnV4L3BoeS9waHku aD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9w bV9ydW50aW1lLmg+CiAjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CkBAIC0zNTIsNjIgKzM1MSw2 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeGhjaV9kcml2ZXJfb3ZlcnJpZGVzIHhoY2lfbXRrX292 ZXJyaWRlcyBfX2luaXRjb25zdCA9IHsKIAogc3RhdGljIHN0cnVjdCBoY19kcml2ZXIgX19yZWFk X21vc3RseSB4aGNpX210a19oY19kcml2ZXI7CiAKLXN0YXRpYyBpbnQgeGhjaV9tdGtfcGh5X2lu aXQoc3RydWN0IHhoY2lfaGNkX210ayAqbXRrKQotewotCWludCBpOwotCWludCByZXQ7Ci0KLQlm b3IgKGkgPSAwOyBpIDwgbXRrLT5udW1fcGh5czsgaSsrKSB7Ci0JCXJldCA9IHBoeV9pbml0KG10 ay0+cGh5c1tpXSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGV4aXRfcGh5OwotCX0KLQlyZXR1cm4g MDsKLQotZXhpdF9waHk6Ci0JZm9yICg7IGkgPiAwOyBpLS0pCi0JCXBoeV9leGl0KG10ay0+cGh5 c1tpIC0gMV0pOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGludCB4aGNpX210a19waHlf ZXhpdChzdHJ1Y3QgeGhjaV9oY2RfbXRrICptdGspCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAw OyBpIDwgbXRrLT5udW1fcGh5czsgaSsrKQotCQlwaHlfZXhpdChtdGstPnBoeXNbaV0pOwotCi0J cmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgeGhjaV9tdGtfcGh5X3Bvd2VyX29uKHN0cnVjdCB4 aGNpX2hjZF9tdGsgKm10aykKLXsKLQlpbnQgaTsKLQlpbnQgcmV0OwotCi0JZm9yIChpID0gMDsg aSA8IG10ay0+bnVtX3BoeXM7IGkrKykgewotCQlyZXQgPSBwaHlfcG93ZXJfb24obXRrLT5waHlz W2ldKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gcG93ZXJfb2ZmX3BoeTsKLQl9Ci0JcmV0dXJuIDA7 Ci0KLXBvd2VyX29mZl9waHk6Ci0JZm9yICg7IGkgPiAwOyBpLS0pCi0JCXBoeV9wb3dlcl9vZmYo bXRrLT5waHlzW2kgLSAxXSk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZCB4aGNp X210a19waHlfcG93ZXJfb2ZmKHN0cnVjdCB4aGNpX2hjZF9tdGsgKm10aykKLXsKLQl1bnNpZ25l ZCBpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBtdGstPm51bV9waHlzOyBpKyspCi0JCXBoeV9w b3dlcl9vZmYobXRrLT5waHlzW2ldKTsKLX0KLQogc3RhdGljIGludCB4aGNpX210a19sZG9zX2Vu YWJsZShzdHJ1Y3QgeGhjaV9oY2RfbXRrICptdGspCiB7CiAJaW50IHJldDsKQEAgLTQ4OCw4ICs0 MzEsNiBAQCBzdGF0aWMgaW50IHhoY2lfbXRrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJc3RydWN0IHhoY2lfaGNkICp4aGNpOwogCXN0cnVjdCByZXNvdXJjZSAqcmVzOwog CXN0cnVjdCB1c2JfaGNkICpoY2Q7Ci0Jc3RydWN0IHBoeSAqcGh5OwotCWludCBwaHlfbnVtOwog CWludCByZXQgPSAtRU5PREVWOwogCWludCBpcnE7CiAKQEAgLTUyOSwxNiArNDcwLDYgQEAgc3Rh dGljIGludCB4aGNpX210a19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQly ZXR1cm4gcmV0OwogCX0KIAotCW10ay0+bnVtX3BoeXMgPSBvZl9jb3VudF9waGFuZGxlX3dpdGhf YXJncyhub2RlLAotCQkJInBoeXMiLCAiI3BoeS1jZWxscyIpOwotCWlmIChtdGstPm51bV9waHlz ID4gMCkgewotCQltdGstPnBoeXMgPSBkZXZtX2tjYWxsb2MoZGV2LCBtdGstPm51bV9waHlzLAot CQkJCQlzaXplb2YoKm10ay0+cGh5cyksIEdGUF9LRVJORUwpOwotCQlpZiAoIW10ay0+cGh5cykK LQkJCXJldHVybiAtRU5PTUVNOwotCX0gZWxzZSB7Ci0JCW10ay0+bnVtX3BoeXMgPSAwOwotCX0K IAlwbV9ydW50aW1lX2VuYWJsZShkZXYpOwogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsKIAlk ZXZpY2VfZW5hYmxlX2FzeW5jX3N1c3BlbmQoZGV2KTsKQEAgLTU5NiwyMyArNTI3LDYgQEAgc3Rh dGljIGludCB4aGNpX210a19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlt dGstPmhhc19pcHBjID0gZmFsc2U7CiAJfQogCi0JZm9yIChwaHlfbnVtID0gMDsgcGh5X251bSA8 IG10ay0+bnVtX3BoeXM7IHBoeV9udW0rKykgewotCQlwaHkgPSBkZXZtX29mX3BoeV9nZXRfYnlf aW5kZXgoZGV2LCBub2RlLCBwaHlfbnVtKTsKLQkJaWYgKElTX0VSUihwaHkpKSB7Ci0JCQlyZXQg PSBQVFJfRVJSKHBoeSk7Ci0JCQlnb3RvIHB1dF91c2IyX2hjZDsKLQkJfQotCQltdGstPnBoeXNb cGh5X251bV0gPSBwaHk7Ci0JfQotCi0JcmV0ID0geGhjaV9tdGtfcGh5X2luaXQobXRrKTsKLQlp ZiAocmV0KQotCQlnb3RvIHB1dF91c2IyX2hjZDsKLQotCXJldCA9IHhoY2lfbXRrX3BoeV9wb3dl cl9vbihtdGspOwotCWlmIChyZXQpCi0JCWdvdG8gZXhpdF9waHlzOwotCiAJZGV2aWNlX2luaXRf d2FrZXVwKGRldiwgdHJ1ZSk7CiAKIAl4aGNpID0gaGNkX3RvX3hoY2koaGNkKTsKQEAgLTYzMCw3 ICs1NDQsNyBAQCBzdGF0aWMgaW50IHhoY2lfbXRrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiAJCQlkZXZfbmFtZShkZXYpLCBoY2QpOwogCWlmICgheGhjaS0+c2hhcmVkX2hj ZCkgewogCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIHBvd2VyX29mZl9waHlzOworCQlnb3RvIGRp c2FibGVfZGV2aWNlX3dha2V1cDsKIAl9CiAKIAlyZXQgPSB1c2JfYWRkX2hjZChoY2QsIGlycSwg SVJRRl9TSEFSRUQpOwpAQCAtNjUzLDEzICs1NjcsOSBAQCBzdGF0aWMgaW50IHhoY2lfbXRrX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJeGhjaV9tdGtfc2NoX2V4aXQobXRr KTsKIAl1c2JfcHV0X2hjZCh4aGNpLT5zaGFyZWRfaGNkKTsKIAotcG93ZXJfb2ZmX3BoeXM6Ci0J eGhjaV9tdGtfcGh5X3Bvd2VyX29mZihtdGspOworZGlzYWJsZV9kZXZpY2Vfd2FrZXVwOgogCWRl dmljZV9pbml0X3dha2V1cChkZXYsIGZhbHNlKTsKIAotZXhpdF9waHlzOgotCXhoY2lfbXRrX3Bo eV9leGl0KG10ayk7Ci0KIHB1dF91c2IyX2hjZDoKIAl1c2JfcHV0X2hjZChoY2QpOwogCkBAIC02 ODIsOCArNTkyLDYgQEAgc3RhdGljIGludCB4aGNpX210a19yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqZGV2KQogCXN0cnVjdCB4aGNpX2hjZAkqeGhjaSA9IGhjZF90b194aGNpKGhjZCk7 CiAKIAl1c2JfcmVtb3ZlX2hjZCh4aGNpLT5zaGFyZWRfaGNkKTsKLQl4aGNpX210a19waHlfcG93 ZXJfb2ZmKG10ayk7Ci0JeGhjaV9tdGtfcGh5X2V4aXQobXRrKTsKIAlkZXZpY2VfaW5pdF93YWtl dXAoJmRldi0+ZGV2LCBmYWxzZSk7CiAKIAl1c2JfcmVtb3ZlX2hjZChoY2QpOwpAQCAtNzE4LDcg KzYyNiw2IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeGhjaV9tdGtfc3VzcGVuZChzdHJ1 Y3QgZGV2aWNlICpkZXYpCiAJZGVsX3RpbWVyX3N5bmMoJnhoY2ktPnNoYXJlZF9oY2QtPnJoX3Rp bWVyKTsKIAogCXhoY2lfbXRrX2hvc3RfZGlzYWJsZShtdGspOwotCXhoY2lfbXRrX3BoeV9wb3dl cl9vZmYobXRrKTsKIAl4aGNpX210a19jbGtzX2Rpc2FibGUobXRrKTsKIAl1c2Jfd2FrZXVwX3Nl dChtdGssIHRydWUpOwogCXJldHVybiAwOwpAQCAtNzMyLDcgKzYzOSw2IEBAIHN0YXRpYyBpbnQg X19tYXliZV91bnVzZWQgeGhjaV9tdGtfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCXVz Yl93YWtldXBfc2V0KG10aywgZmFsc2UpOwogCXhoY2lfbXRrX2Nsa3NfZW5hYmxlKG10ayk7Ci0J eGhjaV9tdGtfcGh5X3Bvd2VyX29uKG10ayk7CiAJeGhjaV9tdGtfaG9zdF9lbmFibGUobXRrKTsK IAogCXhoY2lfZGJnKHhoY2ksICIlczogcmVzdGFydCBwb3J0IHBvbGxpbmdcbiIsIF9fZnVuY19f KTsK From mboxrd@z Thu Jan 1 00:00:00 1970 From: martin.blumenstingl@googlemail.com (Martin Blumenstingl) Date: Sun, 11 Feb 2018 22:06:48 +0100 Subject: [PATCH usb-next v9 5/8] usb: host: xhci-mtk: remove custom USB PHY handling In-Reply-To: <20180211210651.2046-1-martin.blumenstingl@googlemail.com> References: <20180211210651.2046-1-martin.blumenstingl@googlemail.com> Message-ID: <20180211210651.2046-6-martin.blumenstingl@googlemail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org The new PHY wrapper is now wired up in the core HCD code. This means that PHYs are now controlled (initialized, enabled, disabled, exited) without requiring any host-driver specific code. Remove the custom USB PHY handling from the xhci-mtk driver as the core HCD code now handles this. Signed-off-by: Martin Blumenstingl --- drivers/usb/host/xhci-mtk.c | 98 +-------------------------------------------- 1 file changed, 2 insertions(+), 96 deletions(-) diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c index b0ab4d5e2751..7334da9e9779 100644 --- a/drivers/usb/host/xhci-mtk.c +++ b/drivers/usb/host/xhci-mtk.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -352,62 +351,6 @@ static const struct xhci_driver_overrides xhci_mtk_overrides __initconst = { static struct hc_driver __read_mostly xhci_mtk_hc_driver; -static int xhci_mtk_phy_init(struct xhci_hcd_mtk *mtk) -{ - int i; - int ret; - - for (i = 0; i < mtk->num_phys; i++) { - ret = phy_init(mtk->phys[i]); - if (ret) - goto exit_phy; - } - return 0; - -exit_phy: - for (; i > 0; i--) - phy_exit(mtk->phys[i - 1]); - - return ret; -} - -static int xhci_mtk_phy_exit(struct xhci_hcd_mtk *mtk) -{ - int i; - - for (i = 0; i < mtk->num_phys; i++) - phy_exit(mtk->phys[i]); - - return 0; -} - -static int xhci_mtk_phy_power_on(struct xhci_hcd_mtk *mtk) -{ - int i; - int ret; - - for (i = 0; i < mtk->num_phys; i++) { - ret = phy_power_on(mtk->phys[i]); - if (ret) - goto power_off_phy; - } - return 0; - -power_off_phy: - for (; i > 0; i--) - phy_power_off(mtk->phys[i - 1]); - - return ret; -} - -static void xhci_mtk_phy_power_off(struct xhci_hcd_mtk *mtk) -{ - unsigned int i; - - for (i = 0; i < mtk->num_phys; i++) - phy_power_off(mtk->phys[i]); -} - static int xhci_mtk_ldos_enable(struct xhci_hcd_mtk *mtk) { int ret; @@ -488,8 +431,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) struct xhci_hcd *xhci; struct resource *res; struct usb_hcd *hcd; - struct phy *phy; - int phy_num; int ret = -ENODEV; int irq; @@ -529,16 +470,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) return ret; } - mtk->num_phys = of_count_phandle_with_args(node, - "phys", "#phy-cells"); - if (mtk->num_phys > 0) { - mtk->phys = devm_kcalloc(dev, mtk->num_phys, - sizeof(*mtk->phys), GFP_KERNEL); - if (!mtk->phys) - return -ENOMEM; - } else { - mtk->num_phys = 0; - } pm_runtime_enable(dev); pm_runtime_get_sync(dev); device_enable_async_suspend(dev); @@ -596,23 +527,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) mtk->has_ippc = false; } - for (phy_num = 0; phy_num < mtk->num_phys; phy_num++) { - phy = devm_of_phy_get_by_index(dev, node, phy_num); - if (IS_ERR(phy)) { - ret = PTR_ERR(phy); - goto put_usb2_hcd; - } - mtk->phys[phy_num] = phy; - } - - ret = xhci_mtk_phy_init(mtk); - if (ret) - goto put_usb2_hcd; - - ret = xhci_mtk_phy_power_on(mtk); - if (ret) - goto exit_phys; - device_init_wakeup(dev, true); xhci = hcd_to_xhci(hcd); @@ -630,7 +544,7 @@ static int xhci_mtk_probe(struct platform_device *pdev) dev_name(dev), hcd); if (!xhci->shared_hcd) { ret = -ENOMEM; - goto power_off_phys; + goto disable_device_wakeup; } ret = usb_add_hcd(hcd, irq, IRQF_SHARED); @@ -653,13 +567,9 @@ static int xhci_mtk_probe(struct platform_device *pdev) xhci_mtk_sch_exit(mtk); usb_put_hcd(xhci->shared_hcd); -power_off_phys: - xhci_mtk_phy_power_off(mtk); +disable_device_wakeup: device_init_wakeup(dev, false); -exit_phys: - xhci_mtk_phy_exit(mtk); - put_usb2_hcd: usb_put_hcd(hcd); @@ -682,8 +592,6 @@ static int xhci_mtk_remove(struct platform_device *dev) struct xhci_hcd *xhci = hcd_to_xhci(hcd); usb_remove_hcd(xhci->shared_hcd); - xhci_mtk_phy_power_off(mtk); - xhci_mtk_phy_exit(mtk); device_init_wakeup(&dev->dev, false); usb_remove_hcd(hcd); @@ -718,7 +626,6 @@ static int __maybe_unused xhci_mtk_suspend(struct device *dev) del_timer_sync(&xhci->shared_hcd->rh_timer); xhci_mtk_host_disable(mtk); - xhci_mtk_phy_power_off(mtk); xhci_mtk_clks_disable(mtk); usb_wakeup_set(mtk, true); return 0; @@ -732,7 +639,6 @@ static int __maybe_unused xhci_mtk_resume(struct device *dev) usb_wakeup_set(mtk, false); xhci_mtk_clks_enable(mtk); - xhci_mtk_phy_power_on(mtk); xhci_mtk_host_enable(mtk); xhci_dbg(xhci, "%s: restart port polling\n", __func__); -- 2.16.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: martin.blumenstingl@googlemail.com (Martin Blumenstingl) Date: Sun, 11 Feb 2018 22:06:48 +0100 Subject: [PATCH usb-next v9 5/8] usb: host: xhci-mtk: remove custom USB PHY handling In-Reply-To: <20180211210651.2046-1-martin.blumenstingl@googlemail.com> References: <20180211210651.2046-1-martin.blumenstingl@googlemail.com> Message-ID: <20180211210651.2046-6-martin.blumenstingl@googlemail.com> To: linus-amlogic@lists.infradead.org List-Id: linus-amlogic.lists.infradead.org The new PHY wrapper is now wired up in the core HCD code. This means that PHYs are now controlled (initialized, enabled, disabled, exited) without requiring any host-driver specific code. Remove the custom USB PHY handling from the xhci-mtk driver as the core HCD code now handles this. Signed-off-by: Martin Blumenstingl --- drivers/usb/host/xhci-mtk.c | 98 +-------------------------------------------- 1 file changed, 2 insertions(+), 96 deletions(-) diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c index b0ab4d5e2751..7334da9e9779 100644 --- a/drivers/usb/host/xhci-mtk.c +++ b/drivers/usb/host/xhci-mtk.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -352,62 +351,6 @@ static const struct xhci_driver_overrides xhci_mtk_overrides __initconst = { static struct hc_driver __read_mostly xhci_mtk_hc_driver; -static int xhci_mtk_phy_init(struct xhci_hcd_mtk *mtk) -{ - int i; - int ret; - - for (i = 0; i < mtk->num_phys; i++) { - ret = phy_init(mtk->phys[i]); - if (ret) - goto exit_phy; - } - return 0; - -exit_phy: - for (; i > 0; i--) - phy_exit(mtk->phys[i - 1]); - - return ret; -} - -static int xhci_mtk_phy_exit(struct xhci_hcd_mtk *mtk) -{ - int i; - - for (i = 0; i < mtk->num_phys; i++) - phy_exit(mtk->phys[i]); - - return 0; -} - -static int xhci_mtk_phy_power_on(struct xhci_hcd_mtk *mtk) -{ - int i; - int ret; - - for (i = 0; i < mtk->num_phys; i++) { - ret = phy_power_on(mtk->phys[i]); - if (ret) - goto power_off_phy; - } - return 0; - -power_off_phy: - for (; i > 0; i--) - phy_power_off(mtk->phys[i - 1]); - - return ret; -} - -static void xhci_mtk_phy_power_off(struct xhci_hcd_mtk *mtk) -{ - unsigned int i; - - for (i = 0; i < mtk->num_phys; i++) - phy_power_off(mtk->phys[i]); -} - static int xhci_mtk_ldos_enable(struct xhci_hcd_mtk *mtk) { int ret; @@ -488,8 +431,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) struct xhci_hcd *xhci; struct resource *res; struct usb_hcd *hcd; - struct phy *phy; - int phy_num; int ret = -ENODEV; int irq; @@ -529,16 +470,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) return ret; } - mtk->num_phys = of_count_phandle_with_args(node, - "phys", "#phy-cells"); - if (mtk->num_phys > 0) { - mtk->phys = devm_kcalloc(dev, mtk->num_phys, - sizeof(*mtk->phys), GFP_KERNEL); - if (!mtk->phys) - return -ENOMEM; - } else { - mtk->num_phys = 0; - } pm_runtime_enable(dev); pm_runtime_get_sync(dev); device_enable_async_suspend(dev); @@ -596,23 +527,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) mtk->has_ippc = false; } - for (phy_num = 0; phy_num < mtk->num_phys; phy_num++) { - phy = devm_of_phy_get_by_index(dev, node, phy_num); - if (IS_ERR(phy)) { - ret = PTR_ERR(phy); - goto put_usb2_hcd; - } - mtk->phys[phy_num] = phy; - } - - ret = xhci_mtk_phy_init(mtk); - if (ret) - goto put_usb2_hcd; - - ret = xhci_mtk_phy_power_on(mtk); - if (ret) - goto exit_phys; - device_init_wakeup(dev, true); xhci = hcd_to_xhci(hcd); @@ -630,7 +544,7 @@ static int xhci_mtk_probe(struct platform_device *pdev) dev_name(dev), hcd); if (!xhci->shared_hcd) { ret = -ENOMEM; - goto power_off_phys; + goto disable_device_wakeup; } ret = usb_add_hcd(hcd, irq, IRQF_SHARED); @@ -653,13 +567,9 @@ static int xhci_mtk_probe(struct platform_device *pdev) xhci_mtk_sch_exit(mtk); usb_put_hcd(xhci->shared_hcd); -power_off_phys: - xhci_mtk_phy_power_off(mtk); +disable_device_wakeup: device_init_wakeup(dev, false); -exit_phys: - xhci_mtk_phy_exit(mtk); - put_usb2_hcd: usb_put_hcd(hcd); @@ -682,8 +592,6 @@ static int xhci_mtk_remove(struct platform_device *dev) struct xhci_hcd *xhci = hcd_to_xhci(hcd); usb_remove_hcd(xhci->shared_hcd); - xhci_mtk_phy_power_off(mtk); - xhci_mtk_phy_exit(mtk); device_init_wakeup(&dev->dev, false); usb_remove_hcd(hcd); @@ -718,7 +626,6 @@ static int __maybe_unused xhci_mtk_suspend(struct device *dev) del_timer_sync(&xhci->shared_hcd->rh_timer); xhci_mtk_host_disable(mtk); - xhci_mtk_phy_power_off(mtk); xhci_mtk_clks_disable(mtk); usb_wakeup_set(mtk, true); return 0; @@ -732,7 +639,6 @@ static int __maybe_unused xhci_mtk_resume(struct device *dev) usb_wakeup_set(mtk, false); xhci_mtk_clks_enable(mtk); - xhci_mtk_phy_power_on(mtk); xhci_mtk_host_enable(mtk); xhci_dbg(xhci, "%s: restart port polling\n", __func__); -- 2.16.1