@@ -31,6 +31,148 @@ static inline bool acpi_has_cpu_in_madt(void)
31
31
32
32
extern struct list_head acpi_wakeup_device_list ;
33
33
34
+ /*
35
+ * Temporary definitions until the core ACPICA code gets updated (see
36
+
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
+
34
176
#endif /* !CONFIG_ACPI */
35
177
36
178
#define ACPI_TABLE_UPGRADE_MAX_PHYS ARCH_LOW_ADDRESS_LIMIT
0 commit comments