From 818e67324bbe5fb74191182bd6bbafd1e1baab58 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 20 Oct 2019 15:06:57 -0500 Subject: [PATCH] allwinner: Merge duplicate code in sunxi_power_down The action of last resort isn't going to change between SoCs. This moves that code back to the PSCI implementation, where it more obviously matches the code in sunxi_system_reset(). The two error messages say essentially the same thing anyway. Signed-off-by: Samuel Holland Change-Id: I62ac35fdb5ed78a016e9b18281416f1dcea38a4a --- plat/allwinner/common/include/sunxi_private.h | 2 +- plat/allwinner/common/sunxi_pm.c | 7 ++++++- plat/allwinner/sun50i_a64/sunxi_power.c | 6 +----- plat/allwinner/sun50i_h6/sunxi_power.c | 7 +------ 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/plat/allwinner/common/include/sunxi_private.h b/plat/allwinner/common/include/sunxi_private.h index 1f410559f..dcf3dc965 100644 --- a/plat/allwinner/common/include/sunxi_private.h +++ b/plat/allwinner/common/include/sunxi_private.h @@ -12,7 +12,7 @@ void sunxi_configure_mmu_el3(int flags); void sunxi_cpu_on(u_register_t mpidr); void sunxi_cpu_off(u_register_t mpidr); void sunxi_disable_secondary_cpus(u_register_t primary_mpidr); -void __dead2 sunxi_power_down(void); +void sunxi_power_down(void); int sunxi_pmic_setup(uint16_t socid, const void *fdt); void sunxi_security_setup(void); diff --git a/plat/allwinner/common/sunxi_pm.c b/plat/allwinner/common/sunxi_pm.c index 13e135325..9b074d2ac 100644 --- a/plat/allwinner/common/sunxi_pm.c +++ b/plat/allwinner/common/sunxi_pm.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -65,6 +65,11 @@ static void __dead2 sunxi_system_off(void) sunxi_disable_secondary_cpus(read_mpidr()); sunxi_power_down(); + + udelay(1000); + ERROR("PSCI: Cannot turn off system, halting\n"); + wfi(); + panic(); } static void __dead2 sunxi_system_reset(void) diff --git a/plat/allwinner/sun50i_a64/sunxi_power.c b/plat/allwinner/sun50i_a64/sunxi_power.c index b0d042723..b6437eae2 100644 --- a/plat/allwinner/sun50i_a64/sunxi_power.c +++ b/plat/allwinner/sun50i_a64/sunxi_power.c @@ -322,7 +322,7 @@ int sunxi_pmic_setup(uint16_t socid, const void *fdt) return 0; } -void __dead2 sunxi_power_down(void) +void sunxi_power_down(void) { switch (pmic) { case GENERIC_H5: @@ -368,8 +368,4 @@ void __dead2 sunxi_power_down(void) break; } - udelay(1000); - ERROR("PSCI: Cannot turn off system, halting.\n"); - wfi(); - panic(); } diff --git a/plat/allwinner/sun50i_h6/sunxi_power.c b/plat/allwinner/sun50i_h6/sunxi_power.c index 08c74f8e0..7bb266b88 100644 --- a/plat/allwinner/sun50i_h6/sunxi_power.c +++ b/plat/allwinner/sun50i_h6/sunxi_power.c @@ -95,7 +95,7 @@ int sunxi_pmic_setup(uint16_t socid, const void *fdt) return 0; } -void __dead2 sunxi_power_down(void) +void sunxi_power_down(void) { uint8_t val; @@ -111,9 +111,4 @@ void __dead2 sunxi_power_down(void) default: break; } - - udelay(1000); - ERROR("PSCI: Cannot communicate with PMIC, halting\n"); - wfi(); - panic(); } -- GitLab