xref: /linux/arch/loongarch/include/asm/acpi.h (revision 36ec807b627b4c0a0a382f0ae48eac7187d14b2b)
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 
11*5685d7fcSTiezhu Yang #include <asm/smp.h>
1231f1a8b0SYinbo Zhu #include <asm/suspend.h>
1331f1a8b0SYinbo Zhu 
14628c3bb4SHuacai Chen #ifdef CONFIG_ACPI
15628c3bb4SHuacai Chen extern int acpi_strict;
16628c3bb4SHuacai Chen extern int acpi_disabled;
17628c3bb4SHuacai Chen extern int acpi_pci_disabled;
18628c3bb4SHuacai Chen extern int acpi_noirq;
19f6f0c9a7SHuacai Chen extern int pptt_enabled;
20628c3bb4SHuacai Chen 
21628c3bb4SHuacai Chen #define acpi_os_ioremap acpi_os_ioremap
22e0fba87cSHuacai Chen void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size);
23628c3bb4SHuacai Chen 
24628c3bb4SHuacai Chen static inline void disable_acpi(void)
25628c3bb4SHuacai Chen {
26628c3bb4SHuacai Chen 	acpi_disabled = 1;
27628c3bb4SHuacai Chen 	acpi_pci_disabled = 1;
28628c3bb4SHuacai Chen 	acpi_noirq = 1;
29628c3bb4SHuacai Chen }
30628c3bb4SHuacai Chen 
31628c3bb4SHuacai Chen static inline bool acpi_has_cpu_in_madt(void)
32628c3bb4SHuacai Chen {
33628c3bb4SHuacai Chen 	return true;
34628c3bb4SHuacai Chen }
35628c3bb4SHuacai Chen 
364551b305SHuacai Chen #define MAX_CORE_PIC 256
374551b305SHuacai Chen 
38628c3bb4SHuacai Chen extern struct list_head acpi_wakeup_device_list;
394551b305SHuacai Chen extern struct acpi_madt_core_pic acpi_core_pic[MAX_CORE_PIC];
40f6f0c9a7SHuacai Chen 
41f6f0c9a7SHuacai Chen extern int __init parse_acpi_topology(void);
42f6f0c9a7SHuacai Chen 
43f6f0c9a7SHuacai Chen static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
44f6f0c9a7SHuacai Chen {
45f6f0c9a7SHuacai Chen 	return acpi_core_pic[cpu_logical_map(cpu)].processor_id;
46f6f0c9a7SHuacai Chen }
47628c3bb4SHuacai Chen 
48628c3bb4SHuacai Chen #endif /* !CONFIG_ACPI */
49628c3bb4SHuacai Chen 
50628c3bb4SHuacai Chen #define ACPI_TABLE_UPGRADE_MAX_PHYS ARCH_LOW_ADDRESS_LIMIT
51628c3bb4SHuacai Chen 
52366bb35aSHuacai Chen extern int loongarch_acpi_suspend(void);
53366bb35aSHuacai Chen extern int (*acpi_suspend_lowlevel)(void);
54366bb35aSHuacai Chen 
55366bb35aSHuacai Chen static inline unsigned long acpi_get_wakeup_address(void)
56366bb35aSHuacai Chen {
571cf62488SHuacai Chen #ifdef CONFIG_SUSPEND
58366bb35aSHuacai Chen 	return (unsigned long)loongarch_wakeup_start;
591cf62488SHuacai Chen #endif
601cf62488SHuacai Chen 	return 0UL;
61366bb35aSHuacai Chen }
62366bb35aSHuacai Chen 
63628c3bb4SHuacai Chen #endif /* _ASM_LOONGARCH_ACPI_H */
64