[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