mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-08 22:24:32 +00:00
5a6d3d1fbc
Added support for onboard LED's and push button. When powered board will be in low power mode(yellow LED), on button press, board enters full power mode (red LED) and boots u-boot. Signed-off-by: Suniel Mahesh <sunil@amarulasolutions.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <dm.h>
|
|
#include <asm/arch-rockchip/periph.h>
|
|
#include <power/regulator.h>
|
|
#include <spl_gpio.h>
|
|
#include <asm/io.h>
|
|
#include <asm/arch-rockchip/gpio.h>
|
|
#include <asm/arch-rockchip/grf_rk3399.h>
|
|
|
|
#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
|