Nick Hu 37b72cb575 lib: utils/suspend: Add SiFive SMC0 driver
The SiFive SMC0 controls the clock and power domain of the core complex
on the SiFive platform. The core complex enters the low power state
after the secondary cores enter the tile power gating and last core
execute the `CEASE` instruction with the corresponding SMC0
configurations. The devices that inside both tile power domain and core
complex power domain will be off, including caches and timer. Therefore
we need to flush the last level cache before entering the core complex
power gating and update the timer after waking up.

Reviewed-by: Cyan Yang <cyan.yang@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Signed-off-by: Nick Hu <nick.hu@sifive.com>
Link: https://lore.kernel.org/r/20251020-cache-upstream-v7-12-69a132447d8a@sifive.com
Signed-off-by: Anup Patel <anup@brainfault.org>
2025-10-28 11:28:10 +05:30

24 lines
422 B
Plaintext

# SPDX-License-Identifier: BSD-2-Clause
menu "System Suspend Support"
config FDT_SUSPEND
bool "FDT based suspend drivers"
depends on FDT
default n
if FDT_SUSPEND
config FDT_SUSPEND_RPMI
bool "FDT RPMI suspend driver"
depends on FDT_MAILBOX && RPMI_MAILBOX
default n
config FDT_SUSPEND_SIFIVE_SMC0
bool "FDT SIFIVE SMC0 suspend driver"
depends on FDT_HSM_SIFIVE_TMC0 && IRQCHIP_APLIC
default n
endif
endmenu