diff options
author | Furquan Shaikh <furquan@google.com> | 2015-04-09 08:22:57 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2015-04-22 09:02:33 +0200 |
commit | 3c526b1425f08522aaa12b49662b4d2cac5c1737 (patch) | |
tree | 862842d675df446510634e77e4c36d345950a525 /src/arch/arm64 | |
parent | 97a20caa5300c187c85cdedbeb84eb3c59849793 (diff) | |
download | coreboot-3c526b1425f08522aaa12b49662b4d2cac5c1737.tar.xz |
armv8/secmon: Correct PSCI function ids
PSCI_CPU_OFF is SMC32 call, there is not SMC64 version. Register SMC32
and SMC64 types of PSCI calls.
BUG=None
BRANCH=None
TEST=Compiles successfully and CPU off works fine with PSCI command.
Change-Id: I8df2eabfff52924625426b3607720c5219d38b58
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 9228c07f9d9a4dd6325afb1f64b41b9b8711b146
Original-Change-Id: I2f387291893c1acf40bb6aa26f3d2ee8d5d843ea
Original-Signed-off-by: Furquan Shaikh <furquan@google.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/265622
Original-Trybot-Ready: Furquan Shaikh <furquan@chromium.org>
Original-Tested-by: Furquan Shaikh <furquan@chromium.org>
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Original-Commit-Queue: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: http://review.coreboot.org/9925
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/arch/arm64')
-rw-r--r-- | src/arch/arm64/armv8/secmon/psci.c | 9 | ||||
-rw-r--r-- | src/arch/arm64/include/arch/psci.h | 1 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/arch/arm64/armv8/secmon/psci.c b/src/arch/arm64/armv8/secmon/psci.c index 6047abd698..a651b6e152 100644 --- a/src/arch/arm64/armv8/secmon/psci.c +++ b/src/arch/arm64/armv8/secmon/psci.c @@ -368,7 +368,7 @@ static int psci_handler(struct smc_call *smc) case PSCI_CPU_ON64: psci_cpu_on(pf); break; - case PSCI_CPU_OFF64: + case PSCI_CPU_OFF32: psci32_return(pf, psci_turn_off_self()); break; default: @@ -563,7 +563,12 @@ void psci_init(uintptr_t cpu_on_entry) printk(BIOS_ERR, "Error linking cpu_info to PSCI nodes.\n"); /* Register PSCI handlers. */ - if (smc_register_range(PSCI_CPU_OFF64, PSCI_CPU_ON64, &psci_handler)) + if (smc_register_range(PSCI_CPU_SUSPEND32, PSCI_CPU_ON32, + &psci_handler)) + printk(BIOS_ERR, "Couldn't register PSCI handler.\n"); + + if (smc_register_range(PSCI_CPU_SUSPEND64, PSCI_CPU_ON64, + &psci_handler)) printk(BIOS_ERR, "Couldn't register PSCI handler.\n"); /* Inform SoC layer of CPU_ON entry point. */ diff --git a/src/arch/arm64/include/arch/psci.h b/src/arch/arm64/include/arch/psci.h index b408f3d28c..47c902828c 100644 --- a/src/arch/arm64/include/arch/psci.h +++ b/src/arch/arm64/include/arch/psci.h @@ -164,7 +164,6 @@ enum { /* 64-bit CPU support functions. */ PSCI_CPU_SUSPEND64 = SMC_FUNC_FAST64(0x4, 0x1), - PSCI_CPU_OFF64 = SMC_FUNC_FAST64(0x4, 0x2), PSCI_CPU_ON64 = SMC_FUNC_FAST64(0x4, 0x3), }; |