Skip to content

Commit 60f2096

Browse files
chenhuacairafaeljw
authored andcommitted
ACPICA: MADT: Add loong_arch-specific APICs support
ACPICA commit 1dc530059a3e6202e941e6a9478cf30f092bfb47 loong_arch-specific interrupt controllers (similar to APIC) are added in the next revision of ACPI Specification (current revision is 6.4), which including CORE_PIC (CPUINTC), LIO_PIC (LIOINTC), EIO_PIC (EIOINTC), HT_PIC (HTVECINTC), BIO_PIC (PCHINTC), LPC_PIC (PCHLPC) and MSI_PIC (PCHMSI). This patch add their definition. ACPI changes of loong_arch-specific interrupt controllers have already been approved in the ECRs, and will be public in the next revision of ACPI Specification. Link: acpica/acpica@1dc53005 Link: https://mantis.uefi.org/mantis/view.php?id=2203 Link: https://mantis.uefi.org/mantis/view.php?id=2313 Co-developed-by: Jianmin Lv <[email protected]> Signed-off-by: Jianmin Lv <[email protected]> Signed-off-by: Huacai Chen <[email protected]> Signed-off-by: Bob Moore <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 5620fe6 commit 60f2096

File tree

1 file changed

+137
-2
lines changed

1 file changed

+137
-2
lines changed

include/acpi/actbl2.h

Lines changed: 137 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,14 @@ enum acpi_madt_type {
865865
ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
866866
ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
867867
ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16,
868-
ACPI_MADT_TYPE_RESERVED = 17, /* 17 to 0x7F are reserved */
868+
ACPI_MADT_TYPE_CORE_PIC = 17,
869+
ACPI_MADT_TYPE_LIO_PIC = 18,
870+
ACPI_MADT_TYPE_HT_PIC = 19,
871+
ACPI_MADT_TYPE_EIO_PIC = 20,
872+
ACPI_MADT_TYPE_MSI_PIC = 21,
873+
ACPI_MADT_TYPE_BIO_PIC = 22,
874+
ACPI_MADT_TYPE_LPC_PIC = 23,
875+
ACPI_MADT_TYPE_RESERVED = 24, /* 24 to 0x7F are reserved */
869876
ACPI_MADT_TYPE_OEM_RESERVED = 0x80 /* 0x80 to 0xFF are reserved for OEM use */
870877
};
871878

@@ -1096,7 +1103,135 @@ struct acpi_madt_multiproc_wakeup_mailbox {
10961103

10971104
#define ACPI_MP_WAKE_COMMAND_WAKEUP 1
10981105

1099-
/* 17: OEM data */
1106+
/* 17: CPU Core Interrupt Controller (ACPI 6.5) */
1107+
1108+
struct acpi_madt_core_pic {
1109+
struct acpi_subtable_header header;
1110+
u8 version;
1111+
u32 processor_id;
1112+
u32 core_id;
1113+
u32 flags;
1114+
};
1115+
1116+
/* Values for Version field above */
1117+
1118+
enum acpi_madt_core_pic_version {
1119+
ACPI_MADT_CORE_PIC_VERSION_NONE = 0,
1120+
ACPI_MADT_CORE_PIC_VERSION_V1 = 1,
1121+
ACPI_MADT_CORE_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
1122+
};
1123+
1124+
/* 18: Legacy I/O Interrupt Controller (ACPI 6.5) */
1125+
1126+
struct acpi_madt_lio_pic {
1127+
struct acpi_subtable_header header;
1128+
u8 version;
1129+
u64 address;
1130+
u16 size;
1131+
u8 cascade[2];
1132+
u32 cascade_map[2];
1133+
};
1134+
1135+
/* Values for Version field above */
1136+
1137+
enum acpi_madt_lio_pic_version {
1138+
ACPI_MADT_LIO_PIC_VERSION_NONE = 0,
1139+
ACPI_MADT_LIO_PIC_VERSION_V1 = 1,
1140+
ACPI_MADT_LIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
1141+
};
1142+
1143+
/* 19: HT Interrupt Controller (ACPI 6.5) */
1144+
1145+
struct acpi_madt_ht_pic {
1146+
struct acpi_subtable_header header;
1147+
u8 version;
1148+
u64 address;
1149+
u16 size;
1150+
u8 cascade[8];
1151+
};
1152+
1153+
/* Values for Version field above */
1154+
1155+
enum acpi_madt_ht_pic_version {
1156+
ACPI_MADT_HT_PIC_VERSION_NONE = 0,
1157+
ACPI_MADT_HT_PIC_VERSION_V1 = 1,
1158+
ACPI_MADT_HT_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
1159+
};
1160+
1161+
/* 20: Extend I/O Interrupt Controller (ACPI 6.5) */
1162+
1163+
struct acpi_madt_eio_pic {
1164+
struct acpi_subtable_header header;
1165+
u8 version;
1166+
u8 cascade;
1167+
u8 node;
1168+
u64 node_map;
1169+
};
1170+
1171+
/* Values for Version field above */
1172+
1173+
enum acpi_madt_eio_pic_version {
1174+
ACPI_MADT_EIO_PIC_VERSION_NONE = 0,
1175+
ACPI_MADT_EIO_PIC_VERSION_V1 = 1,
1176+
ACPI_MADT_EIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
1177+
};
1178+
1179+
/* 21: MSI Interrupt Controller (ACPI 6.5) */
1180+
1181+
struct acpi_madt_msi_pic {
1182+
struct acpi_subtable_header header;
1183+
u8 version;
1184+
u64 msg_address;
1185+
u32 start;
1186+
u32 count;
1187+
};
1188+
1189+
/* Values for Version field above */
1190+
1191+
enum acpi_madt_msi_pic_version {
1192+
ACPI_MADT_MSI_PIC_VERSION_NONE = 0,
1193+
ACPI_MADT_MSI_PIC_VERSION_V1 = 1,
1194+
ACPI_MADT_MSI_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
1195+
};
1196+
1197+
/* 22: Bridge I/O Interrupt Controller (ACPI 6.5) */
1198+
1199+
struct acpi_madt_bio_pic {
1200+
struct acpi_subtable_header header;
1201+
u8 version;
1202+
u64 address;
1203+
u16 size;
1204+
u16 id;
1205+
u16 gsi_base;
1206+
};
1207+
1208+
/* Values for Version field above */
1209+
1210+
enum acpi_madt_bio_pic_version {
1211+
ACPI_MADT_BIO_PIC_VERSION_NONE = 0,
1212+
ACPI_MADT_BIO_PIC_VERSION_V1 = 1,
1213+
ACPI_MADT_BIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
1214+
};
1215+
1216+
/* 23: LPC Interrupt Controller (ACPI 6.5) */
1217+
1218+
struct acpi_madt_lpc_pic {
1219+
struct acpi_subtable_header header;
1220+
u8 version;
1221+
u64 address;
1222+
u16 size;
1223+
u8 cascade;
1224+
};
1225+
1226+
/* Values for Version field above */
1227+
1228+
enum acpi_madt_lpc_pic_version {
1229+
ACPI_MADT_LPC_PIC_VERSION_NONE = 0,
1230+
ACPI_MADT_LPC_PIC_VERSION_V1 = 1,
1231+
ACPI_MADT_LPC_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
1232+
};
1233+
1234+
/* 80: OEM data */
11001235

11011236
struct acpi_madt_oem_data {
11021237
u8 oem_data[0];

0 commit comments

Comments
 (0)