mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-27 05:23:34 +00:00
1f4e25780a
Change from EHCI to xHCI on the DFI BayTrail SoM. The xHCI USB hub is connected to an GPIO on the DFI BayTrail SoM. For correct operation, it needs to get reset upon power-up. Otherwise it may happen that the hub is not detected after a software reboot. This patch also configures this GPIO in the dts for correct operation. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
/*
|
|
* Copyright (C) 2016 Stefan Roese <sr@denx.de>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <nuvoton_nct6102d.h>
|
|
#include <asm/gpio.h>
|
|
#include <asm/ibmpc.h>
|
|
#include <asm/pnp_def.h>
|
|
|
|
int board_early_init_f(void)
|
|
{
|
|
#ifdef CONFIG_INTERNAL_UART
|
|
/* Disable the legacy UART which is enabled per default */
|
|
nct6102d_uarta_disable();
|
|
#else
|
|
/*
|
|
* The FSP enables the BayTrail internal legacy UART (again).
|
|
* Disable it again, so that the Nuvoton one can be used.
|
|
*/
|
|
setup_internal_uart(0);
|
|
#endif
|
|
|
|
/* Disable the watchdog which is enabled per default */
|
|
nct6102d_wdt_disable();
|
|
|
|
return 0;
|
|
}
|
|
|
|
int board_late_init(void)
|
|
{
|
|
struct gpio_desc desc;
|
|
int ret;
|
|
|
|
ret = dm_gpio_lookup_name("F10", &desc);
|
|
if (ret)
|
|
debug("gpio ret=%d\n", ret);
|
|
ret = dm_gpio_request(&desc, "xhci_hub_reset");
|
|
if (ret)
|
|
debug("gpio_request ret=%d\n", ret);
|
|
ret = dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
|
|
if (ret)
|
|
debug("gpio dir ret=%d\n", ret);
|
|
|
|
/* Pull xHCI hub reset to low (active low) */
|
|
dm_gpio_set_value(&desc, 0);
|
|
|
|
/* Wait at least 5 ms, so lets choose 10 to be safe */
|
|
mdelay(10);
|
|
|
|
/* Pull xHCI hub reset to high (active low) */
|
|
dm_gpio_set_value(&desc, 1);
|
|
|
|
return 0;
|
|
}
|