[PATCH v3 0/9] HSM implementation for Allwinner D1
Samuel Holland
samuel at sholland.org
Sun Jun 12 18:03:46 PDT 2022
This series adds a minimal working HSM implementation for the Allwinner
D1 SoC. It works with the Linux sbi_cpuidle driver. Even with canned
values for entry/exit latency, I am seeing 30-45 mW reduction in power
usage at idle.
Since this is the first HSM driver submission, there is no example to
follow. I have updated the series based on the comments to the RFCs.
Still, comments welcome!
Regards,
Samuel
Changes in v3:
- Fix typo in commit message
- Move comment about priority range to function declaration
- Rename irqchip_plic_* functions to fdt_plic_*
- Add a "bool smode" parameter instead of hard coding the context ID
Changes in v2:
- Rebase on top of the current master branch
- Use array_size() from sbi_types.h
- Use a separate variable for each CSR instead of an array
- Use the PLIC helpers added in earlier patches
- Use the saved SIE bits to program the wakeup interrupt mask
- Set the entry address only once during cold boot
- Use the generic implementation for retentive suspend
- Clean up/add comments throughout the HSM implementation
Samuel Holland (9):
lib: sbi_hsm: Call a device hook during hart resume
lib: sbi_hsm: Assume a consistent resume address
lib: irqchip/plic: Constify plic_data pointers
lib: irqchip/plic: Factor out a context init function
lib: irqchip/plic: Add context save/restore helpers
lib: irqchip/plic: Add priority save/restore helpers
lib: utils/irqchip: Add FDT wrappers for PLIC save/restore functions
lib: utils/irqchip: Add wrapper for T-HEAD PLIC delegation
platform: Add HSM implementation for Allwinner D1
include/sbi/sbi_hsm.h | 12 +-
include/sbi_utils/irqchip/fdt_irqchip_plic.h | 22 ++
include/sbi_utils/irqchip/plic.h | 20 +-
lib/sbi/sbi_hsm.c | 54 ++---
lib/utils/irqchip/fdt_irqchip_plic.c | 39 ++++
lib/utils/irqchip/plic.c | 124 ++++++++---
platform/fpga/ariane/platform.c | 19 +-
platform/fpga/openpiton/platform.c | 19 +-
platform/generic/allwinner/objects.mk | 6 +
platform/generic/allwinner/sun20i-d1.c | 210 +++++++++++++++++++
10 files changed, 442 insertions(+), 83 deletions(-)
create mode 100644 include/sbi_utils/irqchip/fdt_irqchip_plic.h
create mode 100644 platform/generic/allwinner/objects.mk
create mode 100644 platform/generic/allwinner/sun20i-d1.c
--
2.35.1
More information about the opensbi
mailing list