1 /* 2 * Copyright (C) 2016 Stefan Roese <sr@denx.de> 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #include <common.h> 8 #include <nuvoton_nct6102d.h> 9 #include <asm/gpio.h> 10 #include <asm/ibmpc.h> 11 #include <asm/pnp_def.h> 12 13 int board_early_init_f(void) 14 { 15 #ifdef CONFIG_INTERNAL_UART 16 /* Disable the legacy UART which is enabled per default */ 17 nct6102d_uarta_disable(); 18 #else 19 /* 20 * The FSP enables the BayTrail internal legacy UART (again). 21 * Disable it again, so that the Nuvoton one can be used. 22 */ 23 setup_internal_uart(0); 24 #endif 25 26 /* Disable the watchdog which is enabled per default */ 27 nct6102d_wdt_disable(); 28 29 return 0; 30 } 31 32 int board_late_init(void) 33 { 34 struct gpio_desc desc; 35 int ret; 36 37 ret = dm_gpio_lookup_name("F10", &desc); 38 if (ret) 39 debug("gpio ret=%d\n", ret); 40 ret = dm_gpio_request(&desc, "xhci_hub_reset"); 41 if (ret) 42 debug("gpio_request ret=%d\n", ret); 43 ret = dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT); 44 if (ret) 45 debug("gpio dir ret=%d\n", ret); 46 47 /* Pull xHCI hub reset to low (active low) */ 48 dm_gpio_set_value(&desc, 0); 49 50 /* Wait at least 5 ms, so lets choose 10 to be safe */ 51 mdelay(10); 52 53 /* Pull xHCI hub reset to high (active low) */ 54 dm_gpio_set_value(&desc, 1); 55 56 return 0; 57 } 58