// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2016 Rockchip Electronics Co., Ltd */ #include #include #include #include #include #include #include #include #ifndef CONFIG_SPL_BUILD int board_early_init_f(void) { struct udevice *regulator; int ret; ret = regulator_get_by_platname("vcc5v0_host", ®ulator); if (ret) { debug("%s vcc5v0_host init fail! ret %d\n", __func__, ret); goto out; } ret = regulator_set_enable(regulator, true); if (ret) debug("%s vcc5v0-host-en set fail! ret %d\n", __func__, ret); out: return 0; } #endif #if defined(CONFIG_TPL_BUILD) #define PMUGRF_BASE 0xff320000 #define GPIO0_BASE 0xff720000 int board_early_init_f(void) { struct rockchip_gpio_regs * const gpio0 = (void *)GPIO0_BASE; struct rk3399_pmugrf_regs * const pmugrf = (void *)PMUGRF_BASE; /** * 1. Glow yellow LED, termed as low power * 2. Poll for on board power key press * 3. Once 2 done, off yellow and glow red LED, termed as full power * 4. Continue booting... */ spl_gpio_output(gpio0, GPIO(BANK_A, 2), 1); spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_A, 5), GPIO_PULL_NORMAL); while (readl(&gpio0->ext_port) & 0x20); spl_gpio_output(gpio0, GPIO(BANK_A, 2), 0); spl_gpio_output(gpio0, GPIO(BANK_B, 5), 1); return 0; } #endif