| // SPDX-License-Identifier: GPL-2.0+ | |
| /* | |
| * Copyright (C) 2015, Google, Inc | |
| */ | |
| #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 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; | |
| } |