mach-snapdragon: handle platforms without PSCI support
authorSam Day <me@samcday.com>
Mon, 27 Jan 2025 14:48:55 +0000 (14:48 +0000)
committerCaleb Connolly <caleb.connolly@linaro.org>
Mon, 17 Mar 2025 13:38:18 +0000 (13:38 +0000)
commit773a46b18b092a6d27cb49a0b4fb9ea224a1ebd0
tree50f6466ee18de0c0cdd1cb00c8019b4cfc1bfa2b
parent11ff5a57e2fb82c8a8cef3aa8d2727452c282815
mach-snapdragon: handle platforms without PSCI support

Most MSM8916 devices shipped without PSCI support. The history is quite
nuanced (a good overview can be found in [1]), but the end result is
that the upstream DTs for this SoC pretend that PSCI exists, and it's
expected that the bootloader handles the case where it doesn't. This is
codified by the de-facto bootloader for MSM8916 devices, lk2nd [2].

So we handle it here by deleting the /psci node if we detect the absence
of PSCI. We need to do this early to ensure sysreset works correctly,
since the PSCI firmware driver is PRE_RELOC and binds the PSCI sysreset
driver.

Additionally, show_psci_version is updated to check that PSCI exists.
Currently this banner outputs "PSCI: 65535.65535" on devices without
PSCI support, which isn't very useful :)

[1]: https://github.com/msm8916-mainline/linux/issues/388
[2]: https://github.com/msm8916-mainline/lk2nd/blob/8183ea2/lk2nd/smp/spin-table/spin-table.c#L237

Signed-off-by: Sam Day <me@samcday.com>
Link: https://lore.kernel.org/r/20250127-qcom-handle-absent-psci-v1-1-e762f2db938c@samcday.com
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
arch/arm/mach-snapdragon/board.c