efi: libstub: check Shim mode using MokSBStateRT
[platform/kernel/linux-rpi.git] / arch / loongarch / include / asm / acpi.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Author: Jianmin Lv <lvjianmin@loongson.cn>
4  *         Huacai Chen <chenhuacai@loongson.cn>
5  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
6  */
7
8 #ifndef _ASM_LOONGARCH_ACPI_H
9 #define _ASM_LOONGARCH_ACPI_H
10
11 #ifdef CONFIG_ACPI
12 extern int acpi_strict;
13 extern int acpi_disabled;
14 extern int acpi_pci_disabled;
15 extern int acpi_noirq;
16
17 #define acpi_os_ioremap acpi_os_ioremap
18 void __init __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size);
19
20 static inline void disable_acpi(void)
21 {
22         acpi_disabled = 1;
23         acpi_pci_disabled = 1;
24         acpi_noirq = 1;
25 }
26
27 static inline bool acpi_has_cpu_in_madt(void)
28 {
29         return true;
30 }
31
32 extern struct list_head acpi_wakeup_device_list;
33
34 /*
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").
38  *
39  * Once the "legal reasons" are cleared and that the code is merged,
40  * this can be dropped entierely.
41  */
42 #if (ACPI_CA_VERSION == 0x20220331 && !defined(LOONGARCH_ACPICA_EXT))
43
44 #define LOONGARCH_ACPICA_EXT    1
45
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
53
54 /* Values for Version field above */
55
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 */
60 };
61
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 */
66 };
67
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 */
72 };
73
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 */
78 };
79
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 */
84 };
85
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 */
90 };
91
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 */
96 };
97
98 #pragma pack(1)
99
100 /* Core Interrupt Controller */
101
102 struct acpi_madt_core_pic {
103         struct acpi_subtable_header header;
104         u8 version;
105         u32 processor_id;
106         u32 core_id;
107         u32 flags;
108 };
109
110 /* Legacy I/O Interrupt Controller */
111
112 struct acpi_madt_lio_pic {
113         struct acpi_subtable_header header;
114         u8 version;
115         u64 address;
116         u16 size;
117         u8 cascade[2];
118         u32 cascade_map[2];
119 };
120
121 /* Extend I/O Interrupt Controller */
122
123 struct acpi_madt_eio_pic {
124         struct acpi_subtable_header header;
125         u8 version;
126         u8 cascade;
127         u8 node;
128         u64 node_map;
129 };
130
131 /* HT Interrupt Controller */
132
133 struct acpi_madt_ht_pic {
134         struct acpi_subtable_header header;
135         u8 version;
136         u64 address;
137         u16 size;
138         u8 cascade[8];
139 };
140
141 /* Bridge I/O Interrupt Controller */
142
143 struct acpi_madt_bio_pic {
144         struct acpi_subtable_header header;
145         u8 version;
146         u64 address;
147         u16 size;
148         u16 id;
149         u16 gsi_base;
150 };
151
152 /* MSI Interrupt Controller */
153
154 struct acpi_madt_msi_pic {
155         struct acpi_subtable_header header;
156         u8 version;
157         u64 msg_address;
158         u32 start;
159         u32 count;
160 };
161
162 /* LPC Interrupt Controller */
163
164 struct acpi_madt_lpc_pic {
165         struct acpi_subtable_header header;
166         u8 version;
167         u64 address;
168         u16 size;
169         u8 cascade;
170 };
171
172 #pragma pack()
173
174 #endif
175
176 #endif /* !CONFIG_ACPI */
177
178 #define ACPI_TABLE_UPGRADE_MAX_PHYS ARCH_LOW_ADDRESS_LIMIT
179
180 #endif /* _ASM_LOONGARCH_ACPI_H */