Hi, Yinbo, The title can be regular: LoongArch: Export some arch-specific pm interfaces And in commit message, "Some Power Management Controllers" should be "Some power management controllers" or "Some PMC (Power Management Controllers)" Huacai On Mon, May 22, 2023 at 5:32 PM Yinbo Zhu <zhuyinbo@xxxxxxxxxxx> wrote: > > Some Power Management Controllers need to support DTS and will use > the suspend interface thus this patch was to export such interface > for their use. > > Signed-off-by: Yinbo Zhu <zhuyinbo@xxxxxxxxxxx> > --- > arch/loongarch/include/asm/acpi.h | 5 ++--- > arch/loongarch/include/asm/suspend.h | 10 ++++++++++ > arch/loongarch/power/suspend.c | 10 +++++----- > arch/loongarch/power/suspend_asm.S | 8 ++++---- > 4 files changed, 21 insertions(+), 12 deletions(-) > create mode 100644 arch/loongarch/include/asm/suspend.h > > diff --git a/arch/loongarch/include/asm/acpi.h b/arch/loongarch/include/asm/acpi.h > index 976a810352c6..d63507cc705f 100644 > --- a/arch/loongarch/include/asm/acpi.h > +++ b/arch/loongarch/include/asm/acpi.h > @@ -8,6 +8,7 @@ > #ifndef _ASM_LOONGARCH_ACPI_H > #define _ASM_LOONGARCH_ACPI_H > > +#include <asm/suspend.h> > #ifdef CONFIG_ACPI > extern int acpi_strict; > extern int acpi_disabled; > @@ -37,13 +38,11 @@ extern struct list_head acpi_wakeup_device_list; > > extern int loongarch_acpi_suspend(void); > extern int (*acpi_suspend_lowlevel)(void); > -extern void loongarch_suspend_enter(void); > > static inline unsigned long acpi_get_wakeup_address(void) > { > #ifdef CONFIG_SUSPEND > - extern void loongarch_wakeup_start(void); > - return (unsigned long)loongarch_wakeup_start; > + return (unsigned long)loongson_wakeup_start; > #endif > return 0UL; > } > diff --git a/arch/loongarch/include/asm/suspend.h b/arch/loongarch/include/asm/suspend.h > new file mode 100644 > index 000000000000..a40b42f4f7f3 > --- /dev/null > +++ b/arch/loongarch/include/asm/suspend.h > @@ -0,0 +1,10 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef __ASM_SUSPEND_H > +#define __ASM_SUSPEND_H > + > +void loongson_common_resume(void); > +void loongson_common_suspend(void); > +void loongson_suspend_enter(void); > +void loongson_wakeup_start(void); > + > +#endif > diff --git a/arch/loongarch/power/suspend.c b/arch/loongarch/power/suspend.c > index 5e19733e5e05..0587681b33ce 100644 > --- a/arch/loongarch/power/suspend.c > +++ b/arch/loongarch/power/suspend.c > @@ -27,7 +27,7 @@ struct saved_registers { > }; > static struct saved_registers saved_regs; > > -static void arch_common_suspend(void) > +void loongson_common_suspend(void) > { > save_counter(); > saved_regs.pgd = csr_read64(LOONGARCH_CSR_PGDL); > @@ -40,7 +40,7 @@ static void arch_common_suspend(void) > loongarch_suspend_addr = loongson_sysconf.suspend_addr; > } > > -static void arch_common_resume(void) > +void loongson_common_resume(void) > { > sync_counter(); > local_flush_tlb_all(); > @@ -62,12 +62,12 @@ int loongarch_acpi_suspend(void) > enable_gpe_wakeup(); > enable_pci_wakeup(); > > - arch_common_suspend(); > + loongson_common_suspend(); > > /* processor specific suspend */ > - loongarch_suspend_enter(); > + loongson_suspend_enter(); > > - arch_common_resume(); > + loongson_common_resume(); > > return 0; > } > diff --git a/arch/loongarch/power/suspend_asm.S b/arch/loongarch/power/suspend_asm.S > index e2fc3b4e31f0..809abd3b119d 100644 > --- a/arch/loongarch/power/suspend_asm.S > +++ b/arch/loongarch/power/suspend_asm.S > @@ -57,13 +57,13 @@ > .align 12 > > /* Sleep/wakeup code for Loongson-3 */ > -SYM_FUNC_START(loongarch_suspend_enter) > +SYM_FUNC_START(loongson_suspend_enter) > SETUP_SLEEP > bl __flush_cache_all > > /* Pass RA and SP to BIOS */ > addi.d a1, sp, 0 > - la.pcrel a0, loongarch_wakeup_start > + la.pcrel a0, loongson_wakeup_start > la.pcrel t0, loongarch_suspend_addr > ld.d t0, t0, 0 > jirl a0, t0, 0 /* Call BIOS's STR sleep routine */ > @@ -72,7 +72,7 @@ SYM_FUNC_START(loongarch_suspend_enter) > * This is where we return upon wakeup. > * Reload all of the registers and return. > */ > -SYM_INNER_LABEL(loongarch_wakeup_start, SYM_L_GLOBAL) > +SYM_INNER_LABEL(loongson_wakeup_start, SYM_L_GLOBAL) > li.d t0, CSR_DMW0_INIT # UC, PLV0 > csrwr t0, LOONGARCH_CSR_DMWIN0 > li.d t0, CSR_DMW1_INIT # CA, PLV0 > @@ -89,4 +89,4 @@ SYM_INNER_LABEL(loongarch_wakeup_start, SYM_L_GLOBAL) > SETUP_WAKEUP > addi.d sp, sp, PT_SIZE > jr ra > -SYM_FUNC_END(loongarch_suspend_enter) > +SYM_FUNC_END(loongson_suspend_enter) > -- > 2.20.1 >