diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2017-06-16 13:31:46 (GMT) |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2017-06-22 06:58:10 (GMT) |
commit | 70b95ded03bc13715e595c3a87ec323d9d1dfc62 (patch) | |
tree | e0e1429acb24d13765585691153bc5496949ae39 /board | |
parent | 235c5b8315c6a9eb566fd3d99a098cc6db869fc5 (diff) | |
download | u-boot-70b95ded03bc13715e595c3a87ec323d9d1dfc62.tar.xz |
x86: minnowmax: Configure GPIO pins to turn on USB ports VBUS
GPIO bank E pin 8 & 9 are used to control the on-board two USB ports
VBUS on/off. Let's configure them in the misc_init_r().
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'board')
-rw-r--r-- | board/intel/minnowmax/minnowmax.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/board/intel/minnowmax/minnowmax.c b/board/intel/minnowmax/minnowmax.c index 94b22ed..99aed53 100644 --- a/board/intel/minnowmax/minnowmax.c +++ b/board/intel/minnowmax/minnowmax.c @@ -5,9 +5,62 @@ */ #include <common.h> +#include <dm.h> #include <asm/gpio.h> +#include <dm/device-internal.h> +#include <dm/uclass-internal.h> + +#define GPIO_BANKE_NAME "gpioe" int arch_early_init_r(void) { return 0; } + +int misc_init_r(void) +{ + struct udevice *dev; + struct gpio_desc desc; + int ret; + + /* + * Turn on USB VBUS for the two USB ports on the board. + * Each port's VBUS is controlled by a GPIO pin. + */ + + ret = uclass_find_device_by_name(UCLASS_GPIO, GPIO_BANKE_NAME, &dev); + if (ret) { + debug("%s: GPIO %s device cannot be not found (ret=%d)\n", + __func__, GPIO_BANKE_NAME, ret); + return ret; + } + + ret = device_probe(dev); + if (ret) { + debug("%s: GPIO %s device probe failed (ret=%d)\n", + __func__, GPIO_BANKE_NAME, ret); + return ret; + } + + desc.dev = dev; + desc.flags = GPIOD_IS_OUT; + + /* GPIO E8 controls the bottom port */ + desc.offset = 8; + + ret = dm_gpio_request(&desc, "usb_host_en0"); + if (ret) + return ret; + dm_gpio_set_value(&desc, 1); + + /* GPIO E9 controls the upper port */ + desc.offset = 9; + + ret = dm_gpio_request(&desc, "usb_host_en1"); + if (ret) + return ret; + + dm_gpio_set_value(&desc, 1); + + return 0; +} |