[PATCH v2 2/5] roc-rk3399-pc: Set low power leds, power key only if POR
Suniel Mahesh
sunil at amarulasolutions.com
Thu Mar 26 18:02:37 CET 2020
On Thu, Mar 19, 2020 at 3:43 PM Jagan Teki <jagan at amarulasolutions.com> wrote:
>
> ROC-RK3399-PC has specific set of configurations for
> on-board led setup.
>
> Due to easiness for user to know the state of the board
> roc-rk339-pc board code will setup the low power led
> on/off, and waiting for user to press power key and then
> glow full power led.
>
> All this needs to happen only during power-on-reset not
> for soft reset or WDT. So add reset cause check to POR
> and configure the low power leds, power key only. Note
> that the glowing red led is common across any reset.
>
> Reported-by: Markus Reichl <m.reichl at fivetechno.de>
> Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
> ---
> Changes for v2:
> - glow red led to common across reboots
>
> board/firefly/roc-pc-rk3399/roc-pc-rk3399.c | 24 ++++++++++++---------
> 1 file changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
> index de9185a7ce..6cc81952d8 100644
> --- a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
> +++ b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
> @@ -33,6 +33,7 @@ out:
> #endif
>
> #if defined(CONFIG_TPL_BUILD)
> +#include <asm/arch-rockchip/cru.h>
>
> #define PMUGRF_BASE 0xff320000
> #define GPIO0_BASE 0xff720000
> @@ -42,18 +43,21 @@ 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);
> + /* Set the low power leds, power key only during POR */
> + if (!strcmp(get_reset_cause(), "POR")) {
> + /* 1. Glow yellow LED, termed as low power */
> + 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);
> + /* 2. Poll for on board power key press */
> + 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);
> + /* 3. Once 2 done, turn off yellow */
> + spl_gpio_output(gpio0, GPIO(BANK_A, 2), 0);
> + }
> +
> + /* 4. Turn on red LED, termed as full power */
> spl_gpio_output(gpio0, GPIO(BANK_B, 5), 1);
>
> return 0;
> --
> 2.17.1
>
Tested-by: Suniel Mahesh <sunil at amarulasolutions.com>
More information about the U-Boot
mailing list