From: Meng Dongyang Date: Wed, 28 Jun 2017 11:22:40 +0000 (+0800) Subject: usb: host: xhci-rockchip: use fixed regulator to control vbus X-Git-Tag: v2017.09-rc1~215^2~15 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=26a8b80fac1736d50280c262078381b5eebc1216;p=u-boot usb: host: xhci-rockchip: use fixed regulator to control vbus Use fixed regulator to control the voltage of vbus. Enable vbus supply when usb start and disable vbus supply when usb stop. Signed-off-by: Meng Dongyang Reviewed-by: Philipp Tomsich Acked-by: Philipp Tomsich --- diff --git a/drivers/usb/host/xhci-rockchip.c b/drivers/usb/host/xhci-rockchip.c index da21bc7ae8..ec55f4e59f 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; } @@ -121,7 +119,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; } @@ -150,15 +148,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; } @@ -178,13 +178,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[] = {