1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (c) 2021 Western Digital Corporation or its affiliates.
4 * Copyright (c) 2022 Ventana Micro Systems Inc.
7 #ifndef _ASM_RISCV_SUSPEND_H
8 #define _ASM_RISCV_SUSPEND_H
10 #include <asm/ptrace.h>
12 struct suspend_context {
13 /* Saved and restored by low-level functions */
15 /* Saved and restored by high-level functions */
16 unsigned long scratch;
24 /* Low-level CPU suspend entry function */
25 int __cpu_suspend_enter(struct suspend_context *context);
27 /* High-level CPU suspend which will save context and call finish() */
28 int cpu_suspend(unsigned long arg,
29 int (*finish)(unsigned long arg,
31 unsigned long context));
33 /* Low-level CPU resume entry function */
34 int __cpu_resume_enter(unsigned long hartid, unsigned long context);
36 /* Low-level API to support hibernation */
37 int swsusp_arch_suspend(void);
38 int swsusp_arch_resume(void);
39 int arch_hibernation_header_save(void *addr, unsigned int max_size);
40 int arch_hibernation_header_restore(void *addr);
42 /* Used to resume on the CPU we hibernated on */
43 int hibernate_resume_nonboot_cpu_disable(void);