usb: host: xhci-plat: get the usb3 phy for shared_hcd
authorWilliam Wu <wulf@rock-chips.com>
Tue, 21 Feb 2017 09:37:58 +0000 (17:37 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 22 Feb 2017 06:17:39 +0000 (14:17 +0800)
This patch tries to get the USB3 PHY using, and associates
the XHCI shared_hcd device with it.

With this patch, the USB HUB core driver can do USB PHY
operations base on USB PHY framework, e.g. call usb_phy_
notify_connect() or usb_phy_notify_disconnect() to notify
USB PHY driver to do soft connect or soft disconnect.

Change-Id: I3b51181b840a68ae477b764013446f49dbf7ca70
Signed-off-by: William Wu <wulf@rock-chips.com>
drivers/usb/host/xhci-plat.c

index fe7de8a58ef5495638166ace19626ee7f1b42db6..0f50c1cdea5a5af5aeabef413362e17f4c67e618 100644 (file)
@@ -175,6 +175,15 @@ static int xhci_plat_probe(struct platform_device *pdev)
        if (pdata && pdata->usb3_disable_autosuspend)
                xhci->quirks |= XHCI_DIS_AUTOSUSPEND;
 
+       xhci->shared_hcd->usb_phy = devm_usb_get_phy(&pdev->dev,
+                                                    USB_PHY_TYPE_USB3);
+       if (IS_ERR(xhci->shared_hcd->usb_phy)) {
+               ret = PTR_ERR(xhci->shared_hcd->usb_phy);
+               if (ret == -EPROBE_DEFER)
+                       goto put_usb3_hcd;
+               xhci->shared_hcd->usb_phy = NULL;
+       }
+
        hcd->usb_phy = devm_usb_get_phy_by_phandle(&pdev->dev, "usb-phy", 0);
        if (IS_ERR(hcd->usb_phy)) {
                ret = PTR_ERR(hcd->usb_phy);