diff options
author | Sumit Garg <sumit.garg@linaro.org> | 2022-08-04 19:57:20 +0530 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-08-26 10:55:46 -0400 |
commit | 106822de5eec09cdf082f0d900d707190ffa30f8 (patch) | |
tree | 22e4adbf138698380a1f98c966359974a2b6f9dc /board/qualcomm | |
parent | 9c96a0c62a0aa72af2bfcda016834845764b063c (diff) | |
download | u-boot-106822de5eec09cdf082f0d900d707190ffa30f8.tar.gz u-boot-106822de5eec09cdf082f0d900d707190ffa30f8.tar.bz2 u-boot-106822de5eec09cdf082f0d900d707190ffa30f8.zip |
board: qcs404-evb: Enable USB3 specific PMIC GPIO
For USB3 host controller to detect devices on the bus it is required to
enable a PMIC GPIO: usb_vbus_boost_pin. So enable that during board
specific initialization.
And since this PMIC GPIO parsing is quite u-boot specific, so add a
DT override to qcs404-evb-uboot.dtsi to represent usb_vbus_boost_pin.
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Diffstat (limited to 'board/qualcomm')
-rw-r--r-- | board/qualcomm/qcs404-evb/qcs404-evb.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/board/qualcomm/qcs404-evb/qcs404-evb.c b/board/qualcomm/qcs404-evb/qcs404-evb.c index f1e6e7f7eb..249dca7e72 100644 --- a/board/qualcomm/qcs404-evb/qcs404-evb.c +++ b/board/qualcomm/qcs404-evb/qcs404-evb.c @@ -11,6 +11,7 @@ #include <env.h> #include <init.h> #include <asm/cache.h> +#include <asm/gpio.h> #include <asm/global_data.h> #include <fdt_support.h> #include <asm/arch/dram.h> @@ -24,6 +25,34 @@ int dram_init(void) int board_init(void) { + struct udevice *pmic_gpio; + struct gpio_desc usb_vbus_boost_pin; + int ret, node; + + ret = uclass_get_device_by_name(UCLASS_GPIO, + "pms405_gpios@c000", + &pmic_gpio); + if (ret < 0) { + printf("Failed to find pms405_gpios@c000 node.\n"); + return ret; + } + + node = fdt_subnode_offset(gd->fdt_blob, dev_of_offset(pmic_gpio), + "usb_vbus_boost_pin"); + if (node < 0) { + printf("Failed to find usb_hub_reset_pm dt node.\n"); + return node; + } + ret = gpio_request_by_name_nodev(offset_to_ofnode(node), "gpios", 0, + &usb_vbus_boost_pin, 0); + if (ret < 0) { + printf("Failed to request usb_hub_reset_pm gpio.\n"); + return ret; + } + + dm_gpio_set_dir_flags(&usb_vbus_boost_pin, + GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE); + return 0; } |