diff options
| author | Ben Zong-You Xie <[email protected]> | 2026-07-28 16:10:41 +0800 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2026-09-01 10:46:23 +0530 |
| commit | 06af8bd61b37bbf0db93adfa9902b176d0158ea1 (patch) | |
| tree | fad2b34e37d574f5da78b7ba7967ccaf0cc6028c /platform | |
| parent | 0fb479930775cf86efdfd5c50ad21b4cf8353c76 (diff) | |
lib: utils/andes: arm the SMU sleep command last
Once the sleep command is written, the next WFI puts the core to sleep,
so everything that can fail has to run before it.
Also, use writel() so the command store cannot still be in flight at the
WFI.
Signed-off-by: Ben Zong-You Xie <[email protected]>
Reviewed-by: Anup Patel <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Anup Patel <[email protected]>
Diffstat (limited to 'platform')
| -rw-r--r-- | platform/generic/andes/ae350.c | 8 | ||||
| -rw-r--r-- | platform/generic/include/andes/andes.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/platform/generic/andes/ae350.c b/platform/generic/andes/ae350.c index 4a053f43..7aafe545 100644 --- a/platform/generic/andes/ae350.c +++ b/platform/generic/andes/ae350.c @@ -38,6 +38,14 @@ void ae350_non_ret_save(struct sbi_scratch *scratch) andes_hdata->saved = true; } +void ae350_non_ret_discard(struct sbi_scratch *scratch) +{ + struct andes_hart_data *andes_hdata = sbi_scratch_offset_ptr(scratch, + andes_hart_data_offset); + + andes_hdata->saved = false; +} + void ae350_non_ret_restore(struct sbi_scratch *scratch) { struct andes_hart_data *andes_hdata = sbi_scratch_offset_ptr(scratch, diff --git a/platform/generic/include/andes/andes.h b/platform/generic/include/andes/andes.h index dae112ce..dfa9f3c1 100644 --- a/platform/generic/include/andes/andes.h +++ b/platform/generic/include/andes/andes.h @@ -102,6 +102,7 @@ struct andes_hart_data { }; void ae350_non_ret_save(struct sbi_scratch *scratch); +void ae350_non_ret_discard(struct sbi_scratch *scratch); void ae350_non_ret_restore(struct sbi_scratch *scratch); void ae350_enable_coherency_warmboot(void); |
