[PATCH v4 00/11] Add SiFive TMC0 and SMC0 driver
Nick Hu
nick.hu at sifive.com
Tue Aug 19 20:32:39 PDT 2025
SiFive TMC0 and SMC0 are the power controllers that controls the Tile and
CoreComplex power domain. Add the drivers to support the power
management features such as HSM STOP and System Suspend.
Features such as power management may require flushing the entire
cache before entering a non-retention power state. To support this, a
simple cache flush framework is introduced to allow the external CMO
to perform a full cache flush.
Changes in v4:
- Call fdt_cmo_init() directly as part of generic_early_init()
- Rename SBI_HART_EXT_XSF* to SBI_HART_EXT_XSIFIVE*
- Move the TMC0 driver to the lib/utils/hsm/
- Move the SMC0 driver to the lib/utils/suspend/
Changes in v3:
- Add the SiFive TMC and SMC driver
Changes in v2:
- Since the platform override hooks was deprecated, use the fdt_driver
for initializing the sifive_dev_platform.
Nick Hu (10):
lib: utils: Add cache flush library
lib: utils: Add FDT cache library
lib: utils/cache: Add fdt cmo helpers
lib: sbi: Add SiFive proprietary xsfcflushdlone
lib: sbi: Add SiFive proprietary xsfcease
lib: utils/ipi: Exposing the ACLINT IPI device
lib: utils/irqchip: Add APLIC restore function
platform: sifive: Add SiFive TMC0 driver
lib: utils/timer: Expose timer update function
platform: sifive: Add SiFive SMC0 driver
Vincent Chen (1):
utils: cache: Add SiFive ccache controller
include/sbi/sbi_hart.h | 4 +
include/sbi_utils/cache/cache.h | 69 +++
include/sbi_utils/cache/fdt_cache.h | 34 ++
include/sbi_utils/cache/fdt_cmo_helper.h | 34 ++
include/sbi_utils/hsm/fdt_hsm_sifive_inst.h | 20 +
include/sbi_utils/hsm/fdt_hsm_sifive_tmc0.h | 19 +
include/sbi_utils/ipi/aclint_mswi.h | 1 +
include/sbi_utils/irqchip/aplic.h | 3 +
.../suspend/fdt_suspend_sifive_smc0.h | 18 +
include/sbi_utils/timer/aclint_mtimer.h | 5 +
lib/sbi/sbi_hart.c | 2 +
lib/utils/Kconfig | 2 +
lib/utils/cache/Kconfig | 23 +
lib/utils/cache/cache.c | 46 ++
lib/utils/cache/fdt_cache.c | 87 ++++
lib/utils/cache/fdt_cache_drivers.carray | 3 +
lib/utils/cache/fdt_cmo_helper.c | 112 +++++
lib/utils/cache/fdt_sifive_ccache.c | 175 +++++++
lib/utils/cache/objects.mk | 14 +
lib/utils/hsm/Kconfig | 5 +
lib/utils/hsm/fdt_hsm_sifive_tmc0.c | 468 ++++++++++++++++++
lib/utils/hsm/objects.mk | 2 +
lib/utils/ipi/aclint_mswi.c | 5 +
lib/utils/irqchip/aplic.c | 160 +++---
lib/utils/suspend/Kconfig | 4 +
lib/utils/suspend/fdt_suspend_sifive_smc0.c | 323 ++++++++++++
lib/utils/suspend/objects.mk | 3 +
lib/utils/timer/aclint_mtimer.c | 28 +-
platform/generic/Kconfig | 5 +
platform/generic/configs/defconfig | 5 +
platform/generic/platform.c | 3 +-
platform/generic/sifive/objects.mk | 3 +
platform/generic/sifive/sifive_dev_platform.c | 57 +++
33 files changed, 1667 insertions(+), 75 deletions(-)
create mode 100644 include/sbi_utils/cache/cache.h
create mode 100644 include/sbi_utils/cache/fdt_cache.h
create mode 100644 include/sbi_utils/cache/fdt_cmo_helper.h
create mode 100644 include/sbi_utils/hsm/fdt_hsm_sifive_inst.h
create mode 100644 include/sbi_utils/hsm/fdt_hsm_sifive_tmc0.h
create mode 100644 include/sbi_utils/suspend/fdt_suspend_sifive_smc0.h
create mode 100644 lib/utils/cache/Kconfig
create mode 100644 lib/utils/cache/cache.c
create mode 100644 lib/utils/cache/fdt_cache.c
create mode 100644 lib/utils/cache/fdt_cache_drivers.carray
create mode 100644 lib/utils/cache/fdt_cmo_helper.c
create mode 100644 lib/utils/cache/fdt_sifive_ccache.c
create mode 100644 lib/utils/cache/objects.mk
create mode 100644 lib/utils/hsm/fdt_hsm_sifive_tmc0.c
create mode 100644 lib/utils/suspend/fdt_suspend_sifive_smc0.c
create mode 100644 platform/generic/sifive/sifive_dev_platform.c
--
2.17.1
More information about the opensbi
mailing list