mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +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"
|
||||
default y
|
||||
depends on ARCH_MVEBU
|
||||
select DM_REGULATOR
|
||||
help
|
||||
Choose this option to add support for USB 3.0 driver on mvebu
|
||||
SoCs, which includes Armada8K, Armada3700 and other Armada
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <dm.h>
|
||||
#include <fdtdec.h>
|
||||
#include <usb.h>
|
||||
#include <power/regulator.h>
|
||||
#include <asm/gpio.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 *ctx = dev_get_priv(dev);
|
||||
struct xhci_hcor *hcor;
|
||||
int len;
|
||||
int len, ret;
|
||||
struct udevice *regulator;
|
||||
|
||||
ctx->hcd = (struct xhci_hccr *)plat->hcd_base;
|
||||
len = HC_LENGTH(xhci_readl(&ctx->hcd->cr_capbase));
|
||||
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 */
|
||||
board_xhci_enable();
|
||||
|
||||
|
|
Loading…
Reference in a new issue