mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-20 22:21:41 +00:00
mvebu: usb: xhci: Add VBUS regulator supply to the host driver
The USB device should linked to VBUS regulator through "vbus-supply" DTS property. This patch adds handling for "vbus-supply" property inside the USB device entry for turning on the VBUS regulator upon the host adapter probe. Signed-off-by: Konstantin Porotchkin <kostap@marvell.com> Cc: Stefan Roese <sr@denx.de> Cc: Marek Vasut <marex@denx.de> Cc: Nadav Haklai <nadavh@marvell.com> Cc: Neta Zur Hershkovits <neta@marvell.com> Cc: Igal Liberman <igall@marvell.com> Cc: Haim Boot <hayim@marvell.com> Acked-by: Marek Vasut <marex@denx.de> Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
e562e51ee2
commit
137b1883e7
3 changed files with 41 additions and 1 deletions
28
doc/device-tree-bindings/usb/marvell.xhci-usb.txt
Normal file
28
doc/device-tree-bindings/usb/marvell.xhci-usb.txt
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
Marvell SOC USB controllers
|
||||||
|
|
||||||
|
This controller is integrated in Armada 3700/8K.
|
||||||
|
It uses the same properties as a generic XHCI host controller
|
||||||
|
|
||||||
|
Required properties :
|
||||||
|
- compatible: should be one or more of:
|
||||||
|
- "marvell,armada3700-xhci", "generic-xhci" for Armada 37xx SoCs
|
||||||
|
- "marvell,armada-8k-xhci", "generic-xhci" for Armada A8K SoCs
|
||||||
|
- reg: should contain address and length of the standard XHCI
|
||||||
|
register set for the device.
|
||||||
|
- interrupts: one XHCI interrupt should be described here.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- clocks: phandle to system controller clock driving this unit
|
||||||
|
- vbus-supply : If present, specifies the fixed regulator to be turned on
|
||||||
|
for providing power to the USB VBUS rail.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
cpm_usb3_0: usb3@500000 {
|
||||||
|
compatible = "marvell,armada-8k-xhci",
|
||||||
|
"generic-xhci";
|
||||||
|
reg = <0x500000 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cpm_syscon0 1 22>;
|
||||||
|
vbus-supply = <®_usb3h0_vbus>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
|
@ -25,6 +25,7 @@ config USB_XHCI_MVEBU
|
||||||
bool "MVEBU USB 3.0 support"
|
bool "MVEBU USB 3.0 support"
|
||||||
default y
|
default y
|
||||||
depends on ARCH_MVEBU
|
depends on ARCH_MVEBU
|
||||||
|
select DM_REGULATOR
|
||||||
help
|
help
|
||||||
Choose this option to add support for USB 3.0 driver on mvebu
|
Choose this option to add support for USB 3.0 driver on mvebu
|
||||||
SoCs, which includes Armada8K, Armada3700 and other Armada
|
SoCs, which includes Armada8K, Armada3700 and other Armada
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <fdtdec.h>
|
#include <fdtdec.h>
|
||||||
#include <usb.h>
|
#include <usb.h>
|
||||||
|
#include <power/regulator.h>
|
||||||
#include <asm/gpio.h>
|
#include <asm/gpio.h>
|
||||||
|
|
||||||
#include "xhci.h"
|
#include "xhci.h"
|
||||||
|
@ -44,12 +45,22 @@ static int xhci_usb_probe(struct udevice *dev)
|
||||||
struct mvebu_xhci_platdata *plat = dev_get_platdata(dev);
|
struct mvebu_xhci_platdata *plat = dev_get_platdata(dev);
|
||||||
struct mvebu_xhci *ctx = dev_get_priv(dev);
|
struct mvebu_xhci *ctx = dev_get_priv(dev);
|
||||||
struct xhci_hcor *hcor;
|
struct xhci_hcor *hcor;
|
||||||
int len;
|
int len, ret;
|
||||||
|
struct udevice *regulator;
|
||||||
|
|
||||||
ctx->hcd = (struct xhci_hccr *)plat->hcd_base;
|
ctx->hcd = (struct xhci_hccr *)plat->hcd_base;
|
||||||
len = HC_LENGTH(xhci_readl(&ctx->hcd->cr_capbase));
|
len = HC_LENGTH(xhci_readl(&ctx->hcd->cr_capbase));
|
||||||
hcor = (struct xhci_hcor *)((uintptr_t)ctx->hcd + len);
|
hcor = (struct xhci_hcor *)((uintptr_t)ctx->hcd + len);
|
||||||
|
|
||||||
|
ret = device_get_supply_regulator(dev, "vbus-supply", ®ulator);
|
||||||
|
if (!ret) {
|
||||||
|
ret = regulator_set_enable(regulator, true);
|
||||||
|
if (ret) {
|
||||||
|
printf("Failed to turn ON the VBUS regulator\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Enable USB xHCI (VBUS, reset etc) in board specific code */
|
/* Enable USB xHCI (VBUS, reset etc) in board specific code */
|
||||||
board_xhci_enable();
|
board_xhci_enable();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue