[U-Boot] [PATCH v2 1/3] sysreset: switch to using SYSRESET_POWER_OFF for poweroff

Simon Glass sjg at chromium.org
Sat May 18 16:08:26 UTC 2019


On Thu, 16 May 2019 at 15:48, Urja Rannikko <urjaman at gmail.com> wrote:
>
> It seems that SYSRESET_POWER_OFF was added recently, and all previous code
> used SYSRESET_POWER for poweroff. SYSRESET_POWER is supposed to be a
> PMIC-level power cycle, not a poweroff.

SYSRESET_POWER means to do a power reset (removing and reinstating all power)
SYSRESET_POWER_OFF means to turn the device off and leave it off

>
> Signed-off-by: Urja Rannikko <urjaman at gmail.com>
> ---
> v2: Do not change STPMIC1 driver (thats actually SYSRESET_POWER)
>
> Note: I didnt touch the test/dm/sysreset.c code yet, mostly because
> I wanted to get feedback on this first and that i'd need to understand
> the tests properly to do that (and i havent used them before at all).
> ---
>  arch/arm/mach-stm32mp/cmd_poweroff.c | 2 +-
>  arch/sandbox/cpu/state.c             | 2 +-
>  drivers/sysreset/sysreset_psci.c     | 2 +-
>  drivers/sysreset/sysreset_sandbox.c  | 4 ++--
>  4 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/mach-stm32mp/cmd_poweroff.c b/arch/arm/mach-stm32mp/cmd_poweroff.c
> index f54dd1daf2..62347425a0 100644
> --- a/arch/arm/mach-stm32mp/cmd_poweroff.c
> +++ b/arch/arm/mach-stm32mp/cmd_poweroff.c
> @@ -14,7 +14,7 @@ int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>         puts("poweroff ...\n");
>         mdelay(100);
>
> -       ret = sysreset_walk(SYSRESET_POWER);
> +       ret = sysreset_walk(SYSRESET_POWER_OFF);
>
>         if (ret == -EINPROGRESS)
>                 mdelay(1000);
> diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c
> index d3b9c05985..dee5fde4f7 100644
> --- a/arch/sandbox/cpu/state.c
> +++ b/arch/sandbox/cpu/state.c
> @@ -355,7 +355,7 @@ void state_reset_for_test(struct sandbox_state *state)
>  {
>         /* No reset yet, so mark it as such. Always allow power reset */
>         state->last_sysreset = SYSRESET_COUNT;
> -       state->sysreset_allowed[SYSRESET_POWER] = true;
> +       state->sysreset_allowed[SYSRESET_POWER_OFF] = true;
>
>         memset(&state->wdt, '\0', sizeof(state->wdt));
>         memset(state->spi, '\0', sizeof(state->spi));
> diff --git a/drivers/sysreset/sysreset_psci.c b/drivers/sysreset/sysreset_psci.c
> index de2ec8aeb1..c7907b3226 100644
> --- a/drivers/sysreset/sysreset_psci.c
> +++ b/drivers/sysreset/sysreset_psci.c
> @@ -18,7 +18,7 @@ static int psci_sysreset_request(struct udevice *dev, enum sysreset_t type)
>         case SYSRESET_COLD:
>                 function_id = PSCI_0_2_FN_SYSTEM_RESET;
>                 break;
> -       case SYSRESET_POWER:
> +       case SYSRESET_POWER_OFF:
>                 function_id = PSCI_0_2_FN_SYSTEM_OFF;
>                 break;
>         default:
> diff --git a/drivers/sysreset/sysreset_sandbox.c b/drivers/sysreset/sysreset_sandbox.c
> index 38e2a7e241..8bc9f4b4cc 100644
> --- a/drivers/sysreset/sysreset_sandbox.c
> +++ b/drivers/sysreset/sysreset_sandbox.c
> @@ -57,13 +57,13 @@ static int sandbox_sysreset_request(struct udevice *dev, enum sysreset_t type)
>         case SYSRESET_COLD:
>                 state->last_sysreset = type;
>                 break;
> -       case SYSRESET_POWER:
> +       case SYSRESET_POWER_OFF:
>                 state->last_sysreset = type;
>                 if (!state->sysreset_allowed[type])
>                         return -EACCES;
>                 sandbox_exit();
>                 break;
> -       case SYSRESET_POWER_OFF:
> +       case SYSRESET_POWER:
>                 if (!state->sysreset_allowed[type])
>                         return -EACCES;
>         default:
> --
> 2.21.0
>

I actually sent a patch to the sandbox driver...er no I didn't, oops.
I'll dig up the series and send it.

Regards,
Simopn


More information about the U-Boot mailing list