mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
usb: xhci: plat: Add USB phy support
The Marvell Armada 385 AP needs a dumb phy in order to enable the USB3 VBUS. Add a call to retrieve a USB PHY to XHCI plat in order to support this. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e5401bf37a
commit
7b8ef22ea5
1 changed files with 18 additions and 1 deletions
|
@ -16,6 +16,7 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/usb/phy.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/usb/xhci_pdriver.h>
|
||||
|
||||
|
@ -155,12 +156,27 @@ static int xhci_plat_probe(struct platform_device *pdev)
|
|||
if (HCC_MAX_PSA(xhci->hcc_params) >= 4)
|
||||
xhci->shared_hcd->can_do_streams = 1;
|
||||
|
||||
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);
|
||||
if (ret == -EPROBE_DEFER)
|
||||
goto put_usb3_hcd;
|
||||
hcd->usb_phy = NULL;
|
||||
} else {
|
||||
ret = usb_phy_init(hcd->usb_phy);
|
||||
if (ret)
|
||||
goto put_usb3_hcd;
|
||||
}
|
||||
|
||||
ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED);
|
||||
if (ret)
|
||||
goto put_usb3_hcd;
|
||||
goto disable_usb_phy;
|
||||
|
||||
return 0;
|
||||
|
||||
disable_usb_phy:
|
||||
usb_phy_shutdown(hcd->usb_phy);
|
||||
|
||||
put_usb3_hcd:
|
||||
usb_put_hcd(xhci->shared_hcd);
|
||||
|
||||
|
@ -184,6 +200,7 @@ static int xhci_plat_remove(struct platform_device *dev)
|
|||
struct clk *clk = xhci->clk;
|
||||
|
||||
usb_remove_hcd(xhci->shared_hcd);
|
||||
usb_phy_shutdown(hcd->usb_phy);
|
||||
usb_put_hcd(xhci->shared_hcd);
|
||||
|
||||
usb_remove_hcd(hcd);
|
||||
|
|
Loading…
Reference in a new issue