aboutsummaryrefslogtreecommitdiff
path: root/source/common
diff options
context:
space:
mode:
Diffstat (limited to 'source/common')
-rw-r--r--source/common/ahids.c2
-rw-r--r--source/common/ahpredef.c1
-rw-r--r--source/common/ahtable.c1
-rw-r--r--source/common/ahuuids.c6
-rw-r--r--source/common/dmtable.c117
-rw-r--r--source/common/dmtbdump2.c185
-rw-r--r--source/common/dmtbdump3.c67
-rw-r--r--source/common/dmtbinfo2.c123
-rw-r--r--source/common/dmtbinfo3.c25
9 files changed, 477 insertions, 50 deletions
diff --git a/source/common/ahids.c b/source/common/ahids.c
index 896e8cd61f46..018d009bb0c5 100644
--- a/source/common/ahids.c
+++ b/source/common/ahids.c
@@ -190,6 +190,7 @@ const AH_DEVICE_ID AslDeviceIds[] =
{"ACPI0014", "Wireless Power Calibration Device"},
{"ACPI0015", "USB4 host interface device"},
{"ACPI0016", "Compute Express Link Host Bridge"},
+ {"ACPI0019", "Firmware Inventory Device"},
{"ADMA0F28", "Intel Audio DMA"},
{"AMCR0F28", "Intel Audio Machine Driver"},
{"ATK4001", "Asus Radio Control Button"},
@@ -300,6 +301,7 @@ const AH_DEVICE_ID AslDeviceIds[] =
{"PNP0C12", "Device Bay Controller"},
{"PNP0C14", "Windows Management Instrumentation Device"},
{"PNP0C15", "Docking Station"},
+ {"PNP0C32", "Direct App Launch Button"},
{"PNP0C33", "Error Device"},
{"PNP0C40", "Standard Button Controller"},
{"PNP0C50", "HID Protocol Device (I2C bus)"},
diff --git a/source/common/ahpredef.c b/source/common/ahpredef.c
index c51f7c679d37..601650e6f935 100644
--- a/source/common/ahpredef.c
+++ b/source/common/ahpredef.c
@@ -280,6 +280,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
AH_PREDEF ("_HOT", "Hot Temperature", "Returns the critical temperature for sleep (entry to S4)"),
AH_PREDEF ("_HPP", "Hot Plug Parameters", "Returns a list of hot-plug information for a PCI device"),
AH_PREDEF ("_HPX", "Hot Plug Parameter Extensions", "Returns a list of hot-plug information for a PCI device. Supersedes _HPP"),
+ AH_PREDEF ("_VDM", "Voltage Domain", "A DWORD identifier specifying the voltage domain to which the processor belongs."),
AH_PREDEF ("_HRV", "Hardware Revision", "Returns a hardware revision value"),
AH_PREDEF ("_IFT", "IPMI Interface Type", "See the Intelligent Platform Management Interface Specification"),
AH_PREDEF ("_INI", "Initialize", "Performs device specific initialization"),
diff --git a/source/common/ahtable.c b/source/common/ahtable.c
index 705a61882a99..46c6c3b381a5 100644
--- a/source/common/ahtable.c
+++ b/source/common/ahtable.c
@@ -229,6 +229,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
{ACPI_SIG_HMAT, "Heterogeneous Memory Attributes Table"},
{ACPI_SIG_HPET, "High Precision Event Timer Table"},
{ACPI_SIG_IORT, "IO Remapping Table"},
+ {ACPI_SIG_IOVT, "I/O Virtualization Table"},
{ACPI_SIG_IVRS, "I/O Virtualization Reporting Structure"},
{ACPI_SIG_LPIT, "Low Power Idle Table"},
{ACPI_SIG_MADT, "Multiple APIC Description Table (MADT)"},
diff --git a/source/common/ahuuids.c b/source/common/ahuuids.c
index dd311a46e811..2986f737977c 100644
--- a/source/common/ahuuids.c
+++ b/source/common/ahuuids.c
@@ -180,6 +180,11 @@ const AH_UUID Gbl_AcpiUuids[] =
{"Device Labeling Interface", UUID_DEVICE_LABELING},
{"Physical Presence Interface", UUID_PHYSICAL_PRESENCE},
+ {"[Trusted Platform Module]", NULL},
+ {"TPM Hardware Information", UUID_HARDWARE_INFORMATION},
+ {"TPM Start Method", UUID_START_METHOD},
+ {"TPM Memory Clear", UUID_MEMORY_CLEAR},
+
{"[Non-volatile DIMM and NFIT table]", NULL},
{"NVDIMM Device", UUID_NFIT_DIMM},
{"Volatile Memory Region", UUID_VOLATILE_MEMORY},
@@ -211,6 +216,7 @@ const AH_UUID Gbl_AcpiUuids[] =
{"USB4 Capabilities", UUID_USB4_CAPABILITIES},
{"First Function ID for _DSM", UUID_1ST_FUNCTION_ID},
{"Second Function ID for _DSM", UUID_2ND_FUNCTION_ID},
+ {"Fan Trip Points", UUID_FAN_TRIP_POINTS},
{NULL, NULL}
};
diff --git a/source/common/dmtable.c b/source/common/dmtable.c
index 02125db1bf18..6eb0fd65758e 100644
--- a/source/common/dmtable.c
+++ b/source/common/dmtable.c
@@ -299,6 +299,14 @@ static const char *AcpiDmEinjActions[] =
"Get Command Status",
"Set Error Type With Address",
"Get Execute Timings",
+ "Unassigned",
+ "Unassigned",
+ "Unassigned",
+ "Unassigned",
+ "Unassigned",
+ "Unassigned",
+ "EinjV2 Set Error Type(deprecated)",
+ "EinjV2 Get Error Type",
"Unknown Action"
};
@@ -426,36 +434,39 @@ static const char *AcpiDmHmatSubnames[] =
static const char *AcpiDmMadtSubnames[] =
{
- "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */
- "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */
- "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */
- "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */
- "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */
- "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */
- "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */
- "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */
- "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
- "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */
- "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
- "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */
- "Generic Interrupt Distributor", /* ACPI_MADT_GENERIC_DISTRIBUTOR */
- "Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */
- "Generic Interrupt Redistributor", /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
- "Generic Interrupt Translator", /* ACPI_MADT_GENERIC_TRANSLATOR */
- "Mutiprocessor Wakeup", /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */
- "CPU Core Interrupt Controller", /* ACPI_MADT_TYPE_CORE_PIC */
- "Legacy I/O Interrupt Controller", /* ACPI_MADT_TYPE_LIO_PIC */
- "HT Interrupt Controller", /* ACPI_MADT_TYPE_HT_PIC */
- "Extend I/O Interrupt Controller", /* ACPI_MADT_TYPE_EIO_PIC */
- "MSI Interrupt Controller", /* ACPI_MADT_TYPE_MSI_PIC */
- "Bridge I/O Interrupt Controller", /* ACPI_MADT_TYPE_BIO_PIC */
- "LPC Interrupt Controller", /* ACPI_MADT_TYPE_LPC_PIC */
- "RISC-V Interrupt Controller", /* ACPI_MADT_TYPE_RINTC */
- "RISC-V Incoming MSI Controller", /* ACPI_MADT_TYPE_IMSIC */
- "RISC-V APLIC Controller", /* ACPI_MADT_TYPE_APLIC */
- "RISC-V PLIC Controller", /* ACPI_MADT_TYPE_PLIC */
- "Unknown Subtable Type", /* Reserved */
- "Types 80-FF are used for OEM data" /* Reserved for OEM data */
+ "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */
+ "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */
+ "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */
+ "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */
+ "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */
+ "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */
+ "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */
+ "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */
+ "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
+ "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */
+ "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
+ "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */
+ "Generic Interrupt Distributor", /* ACPI_MADT_GENERIC_DISTRIBUTOR */
+ "Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */
+ "Generic Interrupt Redistributor", /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
+ "Generic Interrupt Translator", /* ACPI_MADT_GENERIC_TRANSLATOR */
+ "Mutiprocessor Wakeup", /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */
+ "CPU Core Interrupt Controller", /* ACPI_MADT_TYPE_CORE_PIC */
+ "Legacy I/O Interrupt Controller", /* ACPI_MADT_TYPE_LIO_PIC */
+ "HT Interrupt Controller", /* ACPI_MADT_TYPE_HT_PIC */
+ "Extend I/O Interrupt Controller", /* ACPI_MADT_TYPE_EIO_PIC */
+ "MSI Interrupt Controller", /* ACPI_MADT_TYPE_MSI_PIC */
+ "Bridge I/O Interrupt Controller", /* ACPI_MADT_TYPE_BIO_PIC */
+ "LPC Interrupt Controller", /* ACPI_MADT_TYPE_LPC_PIC */
+ "RISC-V Interrupt Controller", /* ACPI_MADT_TYPE_RINTC */
+ "RISC-V Incoming MSI Controller", /* ACPI_MADT_TYPE_IMSIC */
+ "RISC-V APLIC Controller", /* ACPI_MADT_TYPE_APLIC */
+ "RISC-V PLIC Controller", /* ACPI_MADT_TYPE_PLIC */
+ "Generic Interrupt v5 Router", /* ACPI_MADT_TYPE_GICV5_IRS */
+ "Generic Interrupt v5 Translator Config", /* ACPI_MADT_TYPE_GICV5_ITS */
+ "Generic Interrupt v5 Translator Entry", /* ACPI_MADT_TYPE_GICV5_ITS_TRANSLATE */
+ "Unknown Subtable Type", /* Reserved */
+ "Types 80-FF are used for OEM data" /* Reserved for OEM data */
};
static const char *AcpiDmMpamSubnames[] =
@@ -560,6 +571,20 @@ static const char *AcpiDmTpm2Subnames[] =
"Unknown Subtable Type" /* Reserved */
};
+static const char *AcpiDmIovtSubnames[] =
+{
+ "IOMMUv1",
+ "Unknown Subtable Type" /* Reserved */
+};
+
+static const char *AcpiDmIovtdevSubnames[] =
+{
+ "A single PCI device",
+ "Start of range",
+ "End of range",
+ "Unknown Subtable Type" /* Reserved */
+};
+
static const char *AcpiDmIvrsSubnames[] =
{
"Hardware Definition Block (IVHD)",
@@ -686,6 +711,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_HMAT, NULL, AcpiDmDumpHmat, DtCompileHmat, TemplateHmat},
{ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet},
{ACPI_SIG_IORT, NULL, AcpiDmDumpIort, DtCompileIort, TemplateIort},
+ {ACPI_SIG_IOVT, AcpiDmTableInfoIovt, AcpiDmDumpIovt, DtCompileIovt, TemplateIovt},
{ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs},
{ACPI_SIG_LPIT, NULL, AcpiDmDumpLpit, DtCompileLpit, TemplateLpit},
{ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt},
@@ -721,7 +747,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat},
{ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao},
{ACPI_SIG_SVKL, AcpiDmTableInfoSvkl, AcpiDmDumpSvkl, DtCompileSvkl, TemplateSvkl},
- {ACPI_SIG_SWFT, NULL, NULL, NULL, NULL},
+ {ACPI_SIG_SWFT, AcpiDmTableInfoSwft, AcpiDmDumpSwft, DtCompileSwft, TemplateSwft},
{ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa},
{ACPI_SIG_TDEL, AcpiDmTableInfoTdel, NULL, NULL, TemplateTdel},
{ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2},
@@ -1145,6 +1171,7 @@ AcpiDmDumpTable (
case ACPI_DMT_ERSTACT:
case ACPI_DMT_ERSTINST:
case ACPI_DMT_DMAR_SCOPE:
+ case ACPI_DMT_IOVTDEV:
case ACPI_DMT_VIOT:
ByteLength = 1;
@@ -1156,6 +1183,7 @@ AcpiDmDumpTable (
case ACPI_DMT_ERDT:
case ACPI_DMT_HEST:
case ACPI_DMT_HMAT:
+ case ACPI_DMT_IOVT:
case ACPI_DMT_NFIT:
case ACPI_DMT_PHAT:
case ACPI_DMT_RHCT:
@@ -2136,6 +2164,33 @@ AcpiDmDumpTable (
AcpiDmFadtProfiles[Temp8]);
break;
+ case ACPI_DMT_IOVT:
+
+ /* IOVT subtable types */
+
+ Temp16 = ACPI_GET16(Target);
+ if (Temp16 > ACPI_IOVT_IOMMU_RESERVED)
+ {
+ Temp16 = ACPI_IOVT_IOMMU_RESERVED;
+ }
+
+ AcpiOsPrintf(UINT16_FORMAT, Temp16, AcpiDmIovtSubnames[Temp16]);
+ break;
+
+ case ACPI_DMT_IOVTDEV:
+
+ /* IOVT subtable types */
+
+ Temp8 = *Target;
+ if (Temp8 > ACPI_IOVT_DEVICE_ENTRY_RESERVED)
+ {
+ Temp8 = ACPI_IOVT_DEVICE_ENTRY_RESERVED;
+ }
+
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmIovtdevSubnames[Temp8]);
+ break;
+
case ACPI_DMT_IVRS:
/* IVRS subtable types */
diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c
index f9145d7cb532..a5125bae971f 100644
--- a/source/common/dmtbdump2.c
+++ b/source/common/dmtbdump2.c
@@ -304,6 +304,14 @@ AcpiDmDumpIort (
IortRmr = ACPI_ADD_PTR (ACPI_IORT_RMR, IortNode, NodeOffset);
break;
+ case ACPI_IORT_NODE_IWB:
+
+ InfoTable = AcpiDmTableInfoIort7;
+ Length = ACPI_OFFSET (ACPI_IORT_IWB, DeviceName);
+ String = ACPI_ADD_PTR (char, IortNode, NodeOffset + Length);
+ Length += strlen (String) + 1;
+ break;
+
default:
AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n",
@@ -479,6 +487,140 @@ NextSubtable:
/*******************************************************************************
*
+ * FUNCTION: AcpiDmDumpIovt
+ *
+ * PARAMETERS: Table - A IOVT table
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Format the contents of a IOVT
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpIovt (
+ ACPI_TABLE_HEADER *Table)
+{
+ ACPI_STATUS Status;
+ UINT32 Offset;
+ UINT32 EntryOffset;
+ UINT32 EntryLength;
+ UINT32 EntryType;
+ ACPI_IOVT_DEVICE_ENTRY *DeviceEntry;
+ ACPI_IOVT_HEADER *SubtableHeader;
+ ACPI_IOVT_IOMMU *Subtable;
+ ACPI_DMTABLE_INFO *InfoTable;
+ ACPI_TABLE_IOVT *Iovt;
+
+
+ /* Main table */
+
+ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIovt);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ Iovt = ACPI_CAST_PTR (ACPI_TABLE_IOVT, Table);
+ Offset = Iovt->IommuOffset;
+
+ /* Subtables */
+
+ SubtableHeader = ACPI_ADD_PTR (ACPI_IOVT_HEADER, Table, Offset);
+
+ while (Offset < Table->Length)
+ {
+ switch (SubtableHeader->Type)
+ {
+
+ case ACPI_IOVT_IOMMU_V1:
+
+ AcpiOsPrintf ("\n");
+ InfoTable = AcpiDmTableInfoIovt0;
+ break;
+
+ default:
+
+ AcpiOsPrintf ("\n**** Unknown IOVT subtable type 0x%X\n",
+ SubtableHeader->Type);
+
+ /* Attempt to continue */
+
+ if (!SubtableHeader->Length)
+ {
+ AcpiOsPrintf ("Invalid zero length subtable\n");
+ return;
+ }
+ goto NextSubtable;
+ }
+
+ /* Dump the subtable */
+
+ Status = AcpiDmDumpTable (Table->Length, Offset, SubtableHeader,
+ SubtableHeader->Length, InfoTable);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* The hardware subtables (IOVT) can contain multiple device entries */
+
+ if (SubtableHeader->Type == ACPI_IOVT_IOMMU_V1)
+ {
+ Subtable = ACPI_ADD_PTR (ACPI_IOVT_IOMMU, Table, Offset);
+
+ EntryOffset = Offset + Subtable->DeviceEntryOffset;
+ /* Process all of the Device Entries */
+
+ do {
+ AcpiOsPrintf ("\n");
+
+ DeviceEntry = ACPI_ADD_PTR (ACPI_IOVT_DEVICE_ENTRY,
+ Table, EntryOffset);
+ EntryType = DeviceEntry->Type;
+ EntryLength = DeviceEntry->Length;
+
+ switch (EntryType)
+ {
+ case ACPI_IOVT_DEVICE_ENTRY_SINGLE:
+ case ACPI_IOVT_DEVICE_ENTRY_START:
+ case ACPI_IOVT_DEVICE_ENTRY_END:
+ InfoTable = AcpiDmTableInfoIovtdev;
+ break;
+
+ default:
+ InfoTable = AcpiDmTableInfoIovtdev;
+ AcpiOsPrintf (
+ "\n**** Unknown IOVT device entry type/length: "
+ "0x%.2X/0x%X at offset 0x%.4X: (header below)\n",
+ EntryType, EntryLength, EntryOffset);
+ break;
+ }
+
+ /* Dump the Device Entry */
+
+ Status = AcpiDmDumpTable (Table->Length, EntryOffset,
+ DeviceEntry, EntryLength, InfoTable);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ EntryOffset += EntryLength;
+ } while (EntryOffset < (Offset + Subtable->Header.Length));
+ }
+
+NextSubtable:
+ /* Point to next subtable */
+
+ Offset += SubtableHeader->Length;
+ SubtableHeader = ACPI_ADD_PTR (ACPI_IOVT_HEADER, SubtableHeader, SubtableHeader->Length);
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDmDumpIvrs
*
* PARAMETERS: Table - A IVRS table
@@ -1055,6 +1197,21 @@ AcpiDmDumpMadt (
InfoTable = AcpiDmTableInfoMadt27;
break;
+ case ACPI_MADT_TYPE_GICV5_IRS:
+
+ InfoTable = AcpiDmTableInfoMadt28;
+ break;
+
+ case ACPI_MADT_TYPE_GICV5_ITS:
+
+ InfoTable = AcpiDmTableInfoMadt29;
+ break;
+
+ case ACPI_MADT_TYPE_GICV5_ITS_TRANSLATE:
+
+ InfoTable = AcpiDmTableInfoMadt30;
+ break;
+
default:
if ((Subtable->Type >= ACPI_MADT_TYPE_RESERVED) &&
@@ -2290,8 +2447,16 @@ AcpiDmDumpPptt (
case ACPI_PPTT_TYPE_CACHE:
- InfoTable = AcpiDmTableInfoPptt1;
- Length = sizeof (ACPI_PPTT_CACHE);
+ if (Table->Revision < 3)
+ {
+ InfoTable = AcpiDmTableInfoPptt1;
+ Length = sizeof (ACPI_PPTT_CACHE);
+ }
+ else
+ {
+ InfoTable = AcpiDmTableInfoPptt1a;
+ Length = sizeof (ACPI_PPTT_CACHE_V1);
+ }
break;
case ACPI_PPTT_TYPE_ID:
@@ -2350,22 +2515,6 @@ AcpiDmDumpPptt (
SubtableOffset += 4;
}
break;
-
- case ACPI_PPTT_TYPE_CACHE:
-
- if (Table->Revision < 3)
- {
- break;
- }
- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
- ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset),
- sizeof (ACPI_PPTT_CACHE_V1), AcpiDmTableInfoPptt1a);
- if (ACPI_FAILURE (Status))
- {
- return;
- }
- break;
-
default:
break;
diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c
index 503bad5ff22d..544792926b84 100644
--- a/source/common/dmtbdump3.c
+++ b/source/common/dmtbdump3.c
@@ -492,6 +492,73 @@ AcpiDmDumpSvkl (
/*******************************************************************************
*
+ * FUNCTION: AcpiDmDumpSwft
+ *
+ * PARAMETERS: Table - A SWFT table
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Format the contents of a SWFT. This is a variable-length
+ * table that contains an open-ended number of SoundWire files
+ * after the end of the header.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpSwft (
+ ACPI_TABLE_HEADER *Table)
+{
+ ACPI_STATUS Status;
+ UINT32 Length = Table->Length;
+ UINT32 Offset = sizeof (ACPI_TABLE_SWFT);
+ ACPI_SWFT_FILE *SubtableHdr;
+ ACPI_SWFT_FILE *SubtableData;
+
+
+ /* Main table */
+
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSwft);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* The rest of the table consists of subtables (single type) */
+
+ while (Offset < Table->Length)
+ {
+ SubtableHdr = ACPI_ADD_PTR (ACPI_SWFT_FILE, Table, Offset);
+
+ /* Dump the subtable */
+
+ AcpiOsPrintf ("\n");
+ Status = AcpiDmDumpTable (Table->Length, Offset, SubtableHdr,
+ sizeof (ACPI_SWFT_FILE), AcpiDmTableInfoSwftFileHdr);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ Offset += sizeof(ACPI_SWFT_FILE);
+
+ SubtableData = ACPI_ADD_PTR (ACPI_SWFT_FILE, Table, Offset);
+
+ Status = AcpiDmDumpTable (Table->Length, Offset, SubtableData,
+ SubtableHdr->FileLength - sizeof(ACPI_SWFT_FILE), AcpiDmTableInfoSwftFileData);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* Point to next subtable */
+
+ Offset += SubtableHdr->FileLength - sizeof(ACPI_SWFT_FILE);
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDmDumpTcpa
*
* PARAMETERS: Table - A TCPA table
diff --git a/source/common/dmtbinfo2.c b/source/common/dmtbinfo2.c
index 570540e50991..c936af40586d 100644
--- a/source/common/dmtbinfo2.c
+++ b/source/common/dmtbinfo2.c
@@ -459,6 +459,74 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIort6a[] =
ACPI_DMT_TERMINATOR
};
+/* 0x07: IWB */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoIort7[] =
+{
+ {ACPI_DMT_UINT64, ACPI_IORT7_OFFSET (BaseAddress), "Config Frame base", 0},
+ {ACPI_DMT_UINT16, ACPI_IORT7_OFFSET (IwbIndex), "IWB Index", 0},
+ {ACPI_DMT_STRING, ACPI_IORT7_OFFSET (DeviceName[0]), "IWB Device Name", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * IOVT - I/O Virtualization Table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoIovt[] =
+{
+ {ACPI_DMT_UINT16, ACPI_IOVT_OFFSET (IommuCount), "IOMMU Count", 0},
+ {ACPI_DMT_UINT16, ACPI_IOVT_OFFSET (IommuOffset), "IOMMU Offset", 0},
+ {ACPI_DMT_UINT64, ACPI_IOVT_OFFSET (Reserved), "Reserved", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+/* IOVT Subtables */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoIovt0[] =
+{
+ {ACPI_DMT_IOVT, ACPI_IOVTH_OFFSET (Type), "Subtable Type", 0},
+ {ACPI_DMT_UINT16, ACPI_IOVTH_OFFSET (Length), "Length", DT_LENGTH},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
+ {ACPI_DMT_FLAG0, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "PCI Device", 0},
+ {ACPI_DMT_FLAG1, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "Proximity Domain Valid", 0},
+ {ACPI_DMT_FLAG2, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "Manageable Devices Range", 0},
+ {ACPI_DMT_FLAG3, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "HW Capability Supported", 0},
+ {ACPI_DMT_FLAG4, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "MSI Interrupt Address", 0},
+ {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (Segment), "PCI Segment Number", 0},
+ {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (PhyWidth), "Physical Address Width", 0},
+ {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (VirtWidth), "Virtual Address Width", 0},
+ {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (MaxPageLevel), "Max Page Level", 0},
+ {ACPI_DMT_UINT64, ACPI_IOVT0_OFFSET (PageSize), "Page Size Supported", 0},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (DeviceId), "IOMMU DeviceID", 0},
+ {ACPI_DMT_UINT64, ACPI_IOVT0_OFFSET (BaseAddress), "IOMMU Base Address", 0},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (AddressSpaceSize), "IOMMU Register Size", 0},
+ {ACPI_DMT_UINT8, ACPI_IOVT0_OFFSET (InterruptType), "Interrupt Type", 0},
+ {ACPI_DMT_UINT24, ACPI_IOVT0_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (GsiNumber), "Global System Interrupt", 0},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (ProximityDomain), "Proximity Domain", 0},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (MaxDeviceNum), "Max Device Num", 0},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (DeviceEntryNum), "Number of Device Entries", 0},
+ {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (DeviceEntryOffset), "Offset of Device Entries", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+/* device entry */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoIovtdev[] =
+{
+ {ACPI_DMT_IOVTDEV, ACPI_IOVTDEV_OFFSET (Type), "Subtable Type", 0},
+ {ACPI_DMT_UINT8, ACPI_IOVTDEV_OFFSET (Length), "Length", 0},
+ {ACPI_DMT_UINT8, ACPI_IOVTDEV_OFFSET (Flags), "Flags", 0},
+ {ACPI_DMT_UINT24, ACPI_IOVTDEV_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT16, ACPI_IOVTDEV_OFFSET (DeviceId), "DeviceID", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+
/*******************************************************************************
*
* IVRS - I/O Virtualization Reporting Structure
@@ -995,13 +1063,14 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15a[] =
ACPI_DMT_TERMINATOR
};
-/* 16: Multiprocessor wakeup structure (ACPI 6.4) */
+/* 16: Multiprocessor wakeup structure (ACPI 6.6) */
ACPI_DMTABLE_INFO AcpiDmTableInfoMadt16[] =
{
{ACPI_DMT_UINT16, ACPI_MADT16_OFFSET (MailboxVersion), "Mailbox Version", 0},
{ACPI_DMT_UINT32, ACPI_MADT16_OFFSET (Reserved), "Reserved", 0},
{ACPI_DMT_UINT64, ACPI_MADT16_OFFSET (BaseAddress), "Mailbox Address", 0},
+ {ACPI_DMT_UINT64, ACPI_MADT16_OFFSET (ResetVector), "ResetVector", 0},
ACPI_DMT_TERMINATOR
};
@@ -1147,6 +1216,39 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt27[] =
ACPI_DMT_TERMINATOR
};
+ACPI_DMTABLE_INFO AcpiDmTableInfoMadt28[] =
+{
+ {ACPI_DMT_UINT8, ACPI_MADT28_OFFSET (Version), "Gic version", 0},
+ {ACPI_DMT_UINT8, ACPI_MADT28_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT32, ACPI_MADT28_OFFSET (IrsId), "Irs Id", 0},
+ {ACPI_DMT_UINT32, ACPI_MADT28_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
+ {ACPI_DMT_FLAG0, ACPI_MADT28_FLAG_OFFSET (Flags,0), "GICV5 IRS non-coherent", 0},
+ {ACPI_DMT_UINT32, ACPI_MADT28_OFFSET (Reserved2), "Reserved", 0},
+ {ACPI_DMT_UINT64, ACPI_MADT28_OFFSET (ConfigBaseAddress), "Irs Config Frame Physical Base Address", 0},
+ {ACPI_DMT_UINT64, ACPI_MADT28_OFFSET (SetlpiBaseAddress), "Irs Setlpi Frame Physical Base Address", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoMadt29[] =
+{
+ {ACPI_DMT_UINT8, ACPI_MADT29_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
+ {ACPI_DMT_FLAG0, ACPI_MADT29_FLAG_OFFSET (Flags,0), "GICV5 ITS non-coherent", 0},
+ {ACPI_DMT_UINT8, ACPI_MADT29_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT32, ACPI_MADT29_OFFSET (TranslatorId), "Gic Its Id", 0},
+ {ACPI_DMT_UINT64, ACPI_MADT29_OFFSET (BaseAddress), "Physical Base Address", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoMadt30[] =
+{
+ {ACPI_DMT_UINT16, ACPI_MADT30_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (LinkedTranslatorId), "Linked Its Id", 0},
+ {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (TranslateFrameId), "Its Transalte Id", 0},
+ {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (Reserved2), "Reserved", 0},
+ {ACPI_DMT_UINT64, ACPI_MADT30_OFFSET (BaseAddress), "Its Translate Frame Physical Base Address", 0},
+ ACPI_DMT_TERMINATOR
+};
+
/* 128: OEM data structure */
ACPI_DMTABLE_INFO AcpiDmTableInfoMadt128[] =
@@ -2031,6 +2133,25 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1a[] =
{
+ {ACPI_DMT_UINT16, ACPI_PPTT1A_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (Flags), "Flags (decoded below)", 0},
+ {ACPI_DMT_FLAG0, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Size valid", 0},
+ {ACPI_DMT_FLAG1, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Number of Sets valid", 0},
+ {ACPI_DMT_FLAG2, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Associativity valid", 0},
+ {ACPI_DMT_FLAG3, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Allocation Type valid", 0},
+ {ACPI_DMT_FLAG4, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Cache Type valid", 0},
+ {ACPI_DMT_FLAG5, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Write Policy valid", 0},
+ {ACPI_DMT_FLAG6, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Line Size valid", 0},
+ {ACPI_DMT_FLAG7, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Cache ID valid", 0},
+ {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (NextLevelOfCache), "Next Level of Cache", 0},
+ {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (Size), "Size", 0},
+ {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (NumberOfSets), "Number of Sets", 0},
+ {ACPI_DMT_UINT8, ACPI_PPTT1A_OFFSET (Associativity), "Associativity", 0},
+ {ACPI_DMT_UINT8, ACPI_PPTT1A_OFFSET (Attributes), "Attributes", 0},
+ {ACPI_DMT_FLAGS0, ACPI_PPTT1A_OFFSET (Attributes), "Allocation Type", 0},
+ {ACPI_DMT_FLAGS2, ACPI_PPTT1A_OFFSET (Attributes), "Cache Type", 0},
+ {ACPI_DMT_FLAG4, ACPI_PPTT1A_OFFSET (Attributes), "Write Policy", 0},
+ {ACPI_DMT_UINT16, ACPI_PPTT1A_OFFSET (LineSize), "Line Size", 0},
{ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (CacheId), "Cache ID", 0},
ACPI_DMT_TERMINATOR
};
diff --git a/source/common/dmtbinfo3.c b/source/common/dmtbinfo3.c
index 24187f6afbc7..2b5891c0500e 100644
--- a/source/common/dmtbinfo3.c
+++ b/source/common/dmtbinfo3.c
@@ -472,6 +472,31 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[] =
ACPI_DMT_TERMINATOR
};
+/*******************************************************************************
+ *
+ * SWFT - SoundWire File Table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoSwft[] =
+{
+ ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoSwftFileHdr[] =
+{
+ {ACPI_DMT_UINT16, ACPI_SWFT_FILE_OFFSET (VendorID), "File Vendor ID", 0},
+ {ACPI_DMT_UINT32, ACPI_SWFT_FILE_OFFSET (FileID), "File ID", 0},
+ {ACPI_DMT_UINT16, ACPI_SWFT_FILE_OFFSET (FileVersion), "File Version", 0},
+ {ACPI_DMT_UINT32, ACPI_SWFT_FILE_OFFSET (FileLength), "File Length", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoSwftFileData[] =
+{
+ {ACPI_DMT_BUFFER, 0, "File Data", 0},
+ ACPI_DMT_TERMINATOR
+};
/*******************************************************************************
*