diff options
| author | Nick Hu <[email protected]> | 2025-10-20 14:34:14 +0800 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2025-10-28 11:28:10 +0530 |
| commit | 37b72cb575b26af6b39b0508c0ef8f70dbc0e76f (patch) | |
| tree | 743ae46fc5091d427fc8699c93b78989bbd90942 /include | |
| parent | ab23d8a392af8271ae9916bd3edfa7c047527956 (diff) | |
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 <[email protected]>
Reviewed-by: Anup Patel <[email protected]>
Signed-off-by: Nick Hu <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Anup Patel <[email protected]>
Diffstat (limited to 'include')
| -rw-r--r-- | include/sbi_utils/hsm/fdt_hsm_sifive_tmc0.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/sbi_utils/hsm/fdt_hsm_sifive_tmc0.h b/include/sbi_utils/hsm/fdt_hsm_sifive_tmc0.h new file mode 100644 index 00000000..06cfb390 --- /dev/null +++ b/include/sbi_utils/hsm/fdt_hsm_sifive_tmc0.h @@ -0,0 +1,14 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 SiFive Inc. + */ + +#ifndef __FDT_HSM_SIFIVE_TMC0_H__ +#define __FDT_HSM_SIFIVE_TMC0_H__ + +int sifive_tmc0_set_wakemask_enareq(u32 hartid); +void sifive_tmc0_set_wakemask_disreq(u32 hartid); +bool sifive_tmc0_is_pg(u32 hartid); + +#endif |
