[PATCH 0/5] Add hart state management and system suspend support for AE350

Ben Zong-You Xie ben717 at andestech.com
Sun Dec 28 23:19:09 PST 2025


This patch series introduces support for hart state management and
system suspend functionalities on the Andes AE350 platform. For the hart
state management, AE350 platform supports CPU hotplug. For the
system suspend, there are two platform-specific low-power modes,
including deep sleep (suspend to RAM) and light sleep (suspend to standby).

Below is the patch summary:
[1/5]: The Andes System Management Unit (ATCSMU) logic is factored out into
       a dedicated FDT-based HSM driver, improving code reuse and
       maintainability.
[2/5]: Implement the functions to save and restore platform-specific CSRs
       which are lost during CPU hotplug or deep sleep.
[3/5]: Add the functions to enable/disable the cache.
[4/5]: A new Last Level Cache (LLC) driver is introduced to handle required
       cache operations for deep sleep.
[5/5]: An ATCSMU-based suspend driver is implemented to support Andes deep
       sleep and light sleep, providing the OS with access to standardized
       SBI system suspend extensions.

Ben Zong-You Xie (5):
  lib: utils/hsm: factor out ATCSMU code into an HSM driver
  platform: generic/andes: add CSR save and restore functions for AE350
    platform
  lib: utils/cache: add cache enable function
  lib: utils/cache: add Andes last level cache controller
  lib: utils/suspend: add Andes ATCSMU suspend driver

 include/sbi_utils/cache/cache.h              |  11 +
 include/sbi_utils/cache/fdt_cmo_helper.h     |  13 ++
 include/sbi_utils/hsm/fdt_hsm_andes_atcsmu.h |  65 ++++++
 include/sbi_utils/sys/atcsmu.h               |  59 ------
 lib/utils/cache/Kconfig                      |   5 +
 lib/utils/cache/cache.c                      |  11 +
 lib/utils/cache/fdt_andes_llcache.c          | 166 +++++++++++++++
 lib/utils/cache/fdt_cmo_helper.c             |  23 ++
 lib/utils/cache/objects.mk                   |   3 +
 lib/utils/hsm/Kconfig                        |   4 +
 lib/utils/hsm/fdt_hsm_andes_atcsmu.c         | 210 +++++++++++++++++++
 lib/utils/hsm/objects.mk                     |   5 +-
 lib/utils/reset/Kconfig                      |   2 +-
 lib/utils/reset/fdt_reset_atcwdt200.c        |  22 +-
 lib/utils/suspend/Kconfig                    |   5 +
 lib/utils/suspend/fdt_suspend_andes_atcsmu.c | 119 +++++++++++
 lib/utils/suspend/objects.mk                 |   3 +
 lib/utils/sys/Kconfig                        |   4 -
 lib/utils/sys/atcsmu.c                       |  89 --------
 lib/utils/sys/objects.mk                     |   1 -
 platform/generic/Kconfig                     |   1 -
 platform/generic/andes/ae350.c               | 147 +++++--------
 platform/generic/andes/objects.mk            |   2 +-
 platform/generic/andes/sleep.S               |  70 -------
 platform/generic/configs/defconfig           |   3 +
 platform/generic/include/andes/andes.h       |  84 +++++++-
 26 files changed, 791 insertions(+), 336 deletions(-)
 create mode 100644 include/sbi_utils/hsm/fdt_hsm_andes_atcsmu.h
 delete mode 100644 include/sbi_utils/sys/atcsmu.h
 create mode 100644 lib/utils/cache/fdt_andes_llcache.c
 create mode 100644 lib/utils/hsm/fdt_hsm_andes_atcsmu.c
 create mode 100644 lib/utils/suspend/fdt_suspend_andes_atcsmu.c
 delete mode 100644 lib/utils/sys/atcsmu.c
 delete mode 100644 platform/generic/andes/sleep.S

--
2.34.1



More information about the opensbi mailing list