[U-Boot] [PATCH 1/3] sysreset: switch to using SYSRESET_POWER_OFF for poweroff
Patrick DELAUNAY
patrick.delaunay at st.com
Thu May 16 07:44:19 UTC 2019
Hi Urja,
>
> 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.
>
> Signed-off-by: Urja Rannikko <urjaman at gmail.com>
> ---
> 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/power/pmic/stpmic1.c | 2 +-
> drivers/sysreset/sysreset_psci.c | 2 +-
> drivers/sysreset/sysreset_sandbox.c | 4 ++--
> 5 files changed, 6 insertions(+), 6 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/power/pmic/stpmic1.c b/drivers/power/pmic/stpmic1.c index
> 65296c5fc3..eb735f4fe3 100644
> --- a/drivers/power/pmic/stpmic1.c
> +++ b/drivers/power/pmic/stpmic1.c
> @@ -221,7 +221,7 @@ static int stpmic1_sysreset_request(struct udevice *dev,
> enum sysreset_t type)
> struct udevice *pmic_dev;
> int ret;
>
> - if (type != SYSRESET_POWER)
> + if (type != SYSRESET_POWER_OFF)
> return -EPROTONOSUPPORT;
In fact in the next part of the code, we are supporting
only SYSRESET_POWER (reset with PMIC1 switch OFF and restart)
and not SYSRESET_POWER_OFF....
because Power Cycle if RREQ_EN=1
I think you need to remove the update on this file for your patch and
I will modified this function is to support both mode....
> ret = uclass_get_device_by_driver(UCLASS_PMIC,
> 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
Regards.
Patrick
More information about the U-Boot
mailing list