// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2016 Stefan Roese <sr@denx.de>
 */

#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;
}
