Use fixed regulator to control the voltage of vbus and turn off vbus when usb stop.
Signed-off-by: Meng Dongyang <daniel.m...@rock-chips.com> --- Changes in v6: - Remove #ifdef DM_REGULATOR and DM_USB due to the addition in Kconfig Changes in v5: - Propagate the return value of setting VBus and print error when failed Changes in v4: - Splited from patch [Uboot,v3,04/10] - Define set vbus as empty function if the macros aren't set Changes in v3: None Changes in v2: - Use fixed regulator to control vbus instead of gpio drivers/usb/host/xhci-rockchip.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/usb/host/xhci-rockchip.c b/drivers/usb/host/xhci-rockchip.c index c4ae55f..6b4caf9 100644 --- a/drivers/usb/host/xhci-rockchip.c +++ b/drivers/usb/host/xhci-rockchip.c @@ -48,7 +48,7 @@ static int xhci_usb_ofdata_to_platdata(struct udevice *dev) */ plat->hcd_base = devfdt_get_addr(dev); if (plat->hcd_base == FDT_ADDR_T_NONE) { - debug("Can't get the XHCI register base address\n"); + error("Can't get the XHCI register base address\n"); return -ENXIO; } @@ -62,17 +62,15 @@ static int xhci_usb_ofdata_to_platdata(struct udevice *dev) } if (plat->phy_base == FDT_ADDR_T_NONE) { - debug("Can't get the usbphy register address\n"); + error("Can't get the usbphy register address\n"); return -ENXIO; } -#if defined(CONFIG_DM_USB) && defined(CONFIG_DM_REGULATOR) /* Vbus regulator */ ret = device_get_supply_regulator(dev, "vbus-supply", &plat->vbus_supply); if (ret) - debug("Can't get vbus supply\n"); -#endif + debug("Can't get VBus regulator!\n"); return 0; } @@ -126,7 +124,7 @@ static int rockchip_xhci_core_init(struct rockchip_xhci *rkxhci, ret = dwc3_core_init(rkxhci->dwc3_reg); if (ret) { - debug("failed to initialize core\n"); + error("failed to initialize core\n"); return ret; } @@ -155,15 +153,17 @@ static int xhci_usb_probe(struct udevice *dev) hcor = (struct xhci_hcor *)((uint64_t)ctx->hcd + HC_LENGTH(xhci_readl(&ctx->hcd->cr_capbase))); -#if defined(CONFIG_DM_USB) && defined(CONFIG_DM_REGULATOR) - ret = regulator_set_enable(plat->vbus_supply, true); - if (ret) - debug("XHCI: Failed to enable vbus supply\n"); -#endif + if (plat->vbus_supply) { + ret = regulator_set_enable(plat->vbus_supply, true); + if (ret) { + error("XHCI: failed to set VBus supply\n"); + return ret; + } + } ret = rockchip_xhci_core_init(ctx, dev); if (ret) { - debug("XHCI: failed to initialize controller\n"); + error("XHCI: failed to initialize controller\n"); return ret; } @@ -183,13 +183,13 @@ static int xhci_usb_remove(struct udevice *dev) if (ret) return ret; -#if defined(CONFIG_DM_USB) && defined(CONFIG_DM_REGULATOR) - ret = regulator_set_enable(plat->vbus_supply, false); - if (ret) - debug("XHCI: Failed to disable vbus supply\n"); -#endif + if (plat->vbus_supply) { + ret = regulator_set_enable(plat->vbus_supply, false); + if (ret) + error("XHCI: failed to set VBus supply\n"); + } - return 0; + return ret; } static const struct udevice_id xhci_usb_ids[] = { -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot