xref: /linux/arch/loongarch/include/asm/acpi.h (revision 4551b30525cf3d2f026b92401ffe241eb04dfebe)
1628c3bb4SHuacai Chen /* SPDX-License-Identifier: GPL-2.0 */
2628c3bb4SHuacai Chen /*
3628c3bb4SHuacai Chen  * Author: Jianmin Lv <lvjianmin@loongson.cn>
4628c3bb4SHuacai Chen  *         Huacai Chen <chenhuacai@loongson.cn>
5628c3bb4SHuacai Chen  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
6628c3bb4SHuacai Chen  */
7628c3bb4SHuacai Chen 
8628c3bb4SHuacai Chen #ifndef _ASM_LOONGARCH_ACPI_H
9628c3bb4SHuacai Chen #define _ASM_LOONGARCH_ACPI_H
10628c3bb4SHuacai Chen 
1131f1a8b0SYinbo Zhu #include <asm/suspend.h>
1231f1a8b0SYinbo Zhu 
13628c3bb4SHuacai Chen #ifdef CONFIG_ACPI
14628c3bb4SHuacai Chen extern int acpi_strict;
15628c3bb4SHuacai Chen extern int acpi_disabled;
16628c3bb4SHuacai Chen extern int acpi_pci_disabled;
17628c3bb4SHuacai Chen extern int acpi_noirq;
18f6f0c9a7SHuacai Chen extern int pptt_enabled;
19628c3bb4SHuacai Chen 
20628c3bb4SHuacai Chen #define acpi_os_ioremap acpi_os_ioremap
21e0fba87cSHuacai Chen void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size);
22628c3bb4SHuacai Chen 
23628c3bb4SHuacai Chen static inline void disable_acpi(void)
24628c3bb4SHuacai Chen {
25628c3bb4SHuacai Chen 	acpi_disabled = 1;
26628c3bb4SHuacai Chen 	acpi_pci_disabled = 1;
27628c3bb4SHuacai Chen 	acpi_noirq = 1;
28628c3bb4SHuacai Chen }
29628c3bb4SHuacai Chen 
30628c3bb4SHuacai Chen static inline bool acpi_has_cpu_in_madt(void)
31628c3bb4SHuacai Chen {
32628c3bb4SHuacai Chen 	return true;
33628c3bb4SHuacai Chen }
34628c3bb4SHuacai Chen 
35*4551b305SHuacai Chen #define MAX_CORE_PIC 256
36*4551b305SHuacai Chen 
37628c3bb4SHuacai Chen extern struct list_head acpi_wakeup_device_list;
38*4551b305SHuacai Chen extern struct acpi_madt_core_pic acpi_core_pic[MAX_CORE_PIC];
39f6f0c9a7SHuacai Chen 
40f6f0c9a7SHuacai Chen extern int __init parse_acpi_topology(void);
41f6f0c9a7SHuacai Chen 
42f6f0c9a7SHuacai Chen static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
43f6f0c9a7SHuacai Chen {
44f6f0c9a7SHuacai Chen 	return acpi_core_pic[cpu_logical_map(cpu)].processor_id;
45f6f0c9a7SHuacai Chen }
46628c3bb4SHuacai Chen 
47628c3bb4SHuacai Chen #endif /* !CONFIG_ACPI */
48628c3bb4SHuacai Chen 
49628c3bb4SHuacai Chen #define ACPI_TABLE_UPGRADE_MAX_PHYS ARCH_LOW_ADDRESS_LIMIT
50628c3bb4SHuacai Chen 
51366bb35aSHuacai Chen extern int loongarch_acpi_suspend(void);
52366bb35aSHuacai Chen extern int (*acpi_suspend_lowlevel)(void);
53366bb35aSHuacai Chen 
54366bb35aSHuacai Chen static inline unsigned long acpi_get_wakeup_address(void)
55366bb35aSHuacai Chen {
561cf62488SHuacai Chen #ifdef CONFIG_SUSPEND
57366bb35aSHuacai Chen 	return (unsigned long)loongarch_wakeup_start;
581cf62488SHuacai Chen #endif
591cf62488SHuacai Chen 	return 0UL;
60366bb35aSHuacai Chen }
61366bb35aSHuacai Chen 
62628c3bb4SHuacai Chen #endif /* _ASM_LOONGARCH_ACPI_H */
63