1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Author: Jianmin Lv <lvjianmin@loongson.cn>
4 * Huacai Chen <chenhuacai@loongson.cn>
5 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
8 #ifndef _ASM_LOONGARCH_ACPI_H
9 #define _ASM_LOONGARCH_ACPI_H
12 extern int acpi_strict;
13 extern int acpi_disabled;
14 extern int acpi_pci_disabled;
15 extern int acpi_noirq;
17 #define acpi_os_ioremap acpi_os_ioremap
18 void __init __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size);
20 static inline void disable_acpi(void)
23 acpi_pci_disabled = 1;
27 static inline bool acpi_has_cpu_in_madt(void)
32 extern struct list_head acpi_wakeup_device_list;
35 * Temporary definitions until the core ACPICA code gets updated (see
36 * 1656837932-18257-1-git-send-email-lvjianmin@loongson.cn and its
37 * follow-ups for the "rationale").
39 * Once the "legal reasons" are cleared and that the code is merged,
40 * this can be dropped entierely.
42 #if (ACPI_CA_VERSION == 0x20220331 && !defined(LOONGARCH_ACPICA_EXT))
44 #define LOONGARCH_ACPICA_EXT 1
46 #define ACPI_MADT_TYPE_CORE_PIC 17
47 #define ACPI_MADT_TYPE_LIO_PIC 18
48 #define ACPI_MADT_TYPE_HT_PIC 19
49 #define ACPI_MADT_TYPE_EIO_PIC 20
50 #define ACPI_MADT_TYPE_MSI_PIC 21
51 #define ACPI_MADT_TYPE_BIO_PIC 22
52 #define ACPI_MADT_TYPE_LPC_PIC 23
54 /* Values for Version field above */
56 enum acpi_madt_core_pic_version {
57 ACPI_MADT_CORE_PIC_VERSION_NONE = 0,
58 ACPI_MADT_CORE_PIC_VERSION_V1 = 1,
59 ACPI_MADT_CORE_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
62 enum acpi_madt_lio_pic_version {
63 ACPI_MADT_LIO_PIC_VERSION_NONE = 0,
64 ACPI_MADT_LIO_PIC_VERSION_V1 = 1,
65 ACPI_MADT_LIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
68 enum acpi_madt_eio_pic_version {
69 ACPI_MADT_EIO_PIC_VERSION_NONE = 0,
70 ACPI_MADT_EIO_PIC_VERSION_V1 = 1,
71 ACPI_MADT_EIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
74 enum acpi_madt_ht_pic_version {
75 ACPI_MADT_HT_PIC_VERSION_NONE = 0,
76 ACPI_MADT_HT_PIC_VERSION_V1 = 1,
77 ACPI_MADT_HT_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
80 enum acpi_madt_bio_pic_version {
81 ACPI_MADT_BIO_PIC_VERSION_NONE = 0,
82 ACPI_MADT_BIO_PIC_VERSION_V1 = 1,
83 ACPI_MADT_BIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
86 enum acpi_madt_msi_pic_version {
87 ACPI_MADT_MSI_PIC_VERSION_NONE = 0,
88 ACPI_MADT_MSI_PIC_VERSION_V1 = 1,
89 ACPI_MADT_MSI_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
92 enum acpi_madt_lpc_pic_version {
93 ACPI_MADT_LPC_PIC_VERSION_NONE = 0,
94 ACPI_MADT_LPC_PIC_VERSION_V1 = 1,
95 ACPI_MADT_LPC_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
100 /* Core Interrupt Controller */
102 struct acpi_madt_core_pic {
103 struct acpi_subtable_header header;
110 /* Legacy I/O Interrupt Controller */
112 struct acpi_madt_lio_pic {
113 struct acpi_subtable_header header;
121 /* Extend I/O Interrupt Controller */
123 struct acpi_madt_eio_pic {
124 struct acpi_subtable_header header;
131 /* HT Interrupt Controller */
133 struct acpi_madt_ht_pic {
134 struct acpi_subtable_header header;
141 /* Bridge I/O Interrupt Controller */
143 struct acpi_madt_bio_pic {
144 struct acpi_subtable_header header;
152 /* MSI Interrupt Controller */
154 struct acpi_madt_msi_pic {
155 struct acpi_subtable_header header;
162 /* LPC Interrupt Controller */
164 struct acpi_madt_lpc_pic {
165 struct acpi_subtable_header header;
176 #endif /* !CONFIG_ACPI */
178 #define ACPI_TABLE_UPGRADE_MAX_PHYS ARCH_LOW_ADDRESS_LIMIT
180 #endif /* _ASM_LOONGARCH_ACPI_H */