From 70b95ded03bc13715e595c3a87ec323d9d1dfc62 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Fri, 16 Jun 2017 06:31:46 -0700 Subject: [PATCH] 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 Reviewed-by: Simon Glass Reviewed-by: Stefan Roese Tested-by: Stefan Roese --- board/intel/minnowmax/minnowmax.c | 53 +++++++++++++++++++++++++++++++++++++++ include/configs/minnowmax.h | 1 + 2 files changed, 54 insertions(+) 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 +#include #include +#include +#include + +#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; +} diff --git a/include/configs/minnowmax.h b/include/configs/minnowmax.h index 7b9f90c..3744811 100644 --- a/include/configs/minnowmax.h +++ b/include/configs/minnowmax.h @@ -16,6 +16,7 @@ #define CONFIG_SYS_MONITOR_LEN (1 << 20) #define CONFIG_SMSC_LPC47M +#define CONFIG_MISC_INIT_R #define CONFIG_STD_DEVICES_SETTINGS "stdin=usbkbd,serial\0" \ "stdout=vidconsole,serial\0" \