Merge ACPICA 20210331.
(cherry picked from commit 1e02e5b0ba8634758c128dcb43c67342c7219cd4)
This commit is contained in:
parent
c86de1dab8
commit
cfd1ed4681
@ -1,3 +1,43 @@
|
||||
----------------------------------------
|
||||
31 March 2021. Summary of changes for version 20210331:
|
||||
|
||||
This release is available at https://acpica.org/downloads, and includes
|
||||
all ACPI 6.4 support
|
||||
|
||||
1) ACPICA kernel-resident subsystem:
|
||||
ACPI 6.4: iASL: deprecate DDBHandleObj keyword
|
||||
Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
|
||||
allocating an object using kmalloc(), but then frees it
|
||||
using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
|
||||
Fixed a race condition in generic serial bus operation region handler.
|
||||
Fixed by Hans de Goede.
|
||||
|
||||
2) iASL Compiler/Disassembler and ACPICA tools:
|
||||
|
||||
ACPI 6.4: NFIT: add Location Cookie field
|
||||
ACPI 6.4: HMAT: add new fields/flags
|
||||
ACPI 6.4: Add new flags in SRAT
|
||||
ACPI 6.4: add SDEV secure access components
|
||||
ACPI 6.4: add Csi2Bus resource template
|
||||
ACPI 6.4: add support for PHAT table
|
||||
ACPI 6.4: add support for PMTT table
|
||||
Add disassembly support for the IVRS table. Compilation of the table is
|
||||
not yet complete.
|
||||
Fixed a potential infinite loop due to type mismatch. The for-loop is
|
||||
using a UINT8 counter and comparing the upper
|
||||
limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
|
||||
the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
|
||||
will wrap around to zero and the loop will never exit. I suspect
|
||||
the AslGbl_ExpectedMessagesIndex is never that high, but fixing
|
||||
this does future proof the code and cleans up static analysis
|
||||
warnings.Colin King.
|
||||
iASL/TableCompiler: update it with IORT table E.b revision changes. From
|
||||
shamiali2008.
|
||||
iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
|
||||
off-by: Jean-Philippe Brucker.
|
||||
iASL/TableCompiler: Add compilation support for CEDT table. Also, update
|
||||
the CEDT template.
|
||||
|
||||
----------------------------------------
|
||||
05 January 2021. Summary of changes for version 20210105:
|
||||
|
||||
|
@ -559,6 +559,9 @@ AcValidateTableHeader (
|
||||
|
||||
if (Actual < sizeof (ACPI_TABLE_HEADER))
|
||||
{
|
||||
fprintf (stderr,
|
||||
"Could not read entire table header: Actual %u, Requested %u\n",
|
||||
(UINT32) Actual, (UINT32) sizeof (ACPI_TABLE_HEADER));
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
|
@ -188,6 +188,8 @@ const AH_DEVICE_ID AslDeviceIds[] =
|
||||
{"ACPI0012", "NVDIMM Root Device"},
|
||||
{"ACPI0013", "Generic Event Device"},
|
||||
{"ACPI0014", "Wireless Power Calibration Device"},
|
||||
{"ACPI0015", "USB4 host interface device"},
|
||||
{"ACPI0016", "Compute Express Link Host Bridge"},
|
||||
{"ADMA0F28", "Intel Audio DMA"},
|
||||
{"AMCR0F28", "Intel Audio Machine Driver"},
|
||||
{"ATK4001", "Asus Radio Control Button"},
|
||||
|
@ -200,12 +200,16 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
||||
AH_PREDEF ("_BMC", "Battery Maintenance Control", "Sets battery maintenance and control features"),
|
||||
AH_PREDEF ("_BMD", "Battery Maintenance Data", "Returns battery maintenance, control, and state data"),
|
||||
AH_PREDEF ("_BMS", "Battery Measurement Sampling Time", "Sets the battery measurement sampling time"),
|
||||
AH_PREDEF ("_BPC", "Battery Power Characteristics", "Returns static values used to configure power threshold support in the platform firmware"),
|
||||
AH_PREDEF ("_BPS", "Battery Power State", "Returns the power delivery capabilities of the battery at the present time"),
|
||||
AH_PREDEF ("_BPT", "Battery Power Threshold", "Set a relative battery peak power capability change threshold"),
|
||||
AH_PREDEF ("_BQC", "Brightness Query Current", "Returns the current display brightness level"),
|
||||
AH_PREDEF ("_BST", "Battery Status", "Returns a Control Method Battery status block"),
|
||||
AH_PREDEF ("_BTH", "Battery Throttle Limit", "Thermal limit for charging and discharging"),
|
||||
AH_PREDEF ("_BTM", "Battery Time", "Returns the battery runtime"),
|
||||
AH_PREDEF ("_BTP", "Battery Trip Point", "Sets a Control Method Battery trip point"),
|
||||
AH_PREDEF ("_CBA", "Configuration Base Address", "Sets the base address for a PCI Express host bridge"),
|
||||
AH_PREDEF ("_CBR", "CXL Host Bridge Register Info", "Get the memory location of CXL Host Bridge Registers"),
|
||||
AH_PREDEF ("_CCA", "Cache Coherency Attribute", "Returns a device's support level for cache coherency"),
|
||||
AH_PREDEF ("_CDM", "Clock Domain", "Returns a logical processor's clock domain identifier"),
|
||||
AH_PREDEF ("_CID", "Compatible ID", "Returns a device's Plug and Play Compatible ID list"),
|
||||
|
@ -203,6 +203,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
|
||||
{ACPI_SIG_BERT, "Boot Error Record Table"},
|
||||
{ACPI_SIG_BGRT, "Boot Graphics Resource Table"},
|
||||
{ACPI_SIG_BOOT, "Simple Boot Flag Table"},
|
||||
{ACPI_SIG_CEDT, "CXL Early Discovery Table"},
|
||||
{ACPI_SIG_CPEP, "Corrected Platform Error Polling table"},
|
||||
{ACPI_SIG_CSRT, "Core System Resource Table"},
|
||||
{ACPI_SIG_DBG2, "Debug Port table type 2"},
|
||||
@ -231,6 +232,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
|
||||
{ACPI_SIG_MSDM, "Microsoft Data Management table"},
|
||||
{ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"},
|
||||
{ACPI_SIG_PCCT, "Platform Communications Channel Table"},
|
||||
{ACPI_SIG_PHAT, "Platform Health Assessment Table"},
|
||||
{ACPI_SIG_PDTT, "Platform Debug Trigger Table"},
|
||||
{ACPI_SIG_PMTT, "Platform Memory Topology Table"},
|
||||
{ACPI_SIG_PPTT, "Processor Properties Topology Table"},
|
||||
@ -251,6 +253,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
|
||||
{ACPI_SIG_TCPA, "Trusted Computing Platform Alliance table"},
|
||||
{ACPI_SIG_TPM2, "Trusted Platform Module hardware interface table"},
|
||||
{ACPI_SIG_UEFI, "UEFI Boot Optimization Table"},
|
||||
{ACPI_SIG_VIOT, "Virtual I/O Translation Table"},
|
||||
{ACPI_SIG_WAET, "Windows ACPI Emulated Devices Table"},
|
||||
{ACPI_SIG_WDAT, "Watchdog Action Table"},
|
||||
{ACPI_SIG_WDDT, "Watchdog Description Table"},
|
||||
|
@ -208,6 +208,7 @@ const AH_UUID Gbl_AcpiUuids[] =
|
||||
{"Device Graphs for _DSD", UUID_DEVICE_GRAPHS},
|
||||
{"Hierarchical Data Extension", UUID_HIERARCHICAL_DATA_EXTENSION},
|
||||
{"ARM Coresight Graph", UUID_CORESIGHT_GRAPH},
|
||||
{"USB4 Capabilities", UUID_USB4_CAPABILITIES},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: cfsize - Common get file size function
|
||||
* Module Name: cmfsize - Common get file size function
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
|
@ -384,6 +384,14 @@ static const ACPI_RESOURCE_TAG AcpiDmGpioIoTags[] =
|
||||
|
||||
/* Subtype tables for SerialBus descriptors */
|
||||
|
||||
static const ACPI_RESOURCE_TAG AcpiDmCsi2SerialBusTags[] = /* ACPI 6.4 */
|
||||
{
|
||||
{( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE},
|
||||
{( 7 * 8) + 0, ACPI_RESTAG_PHYTYPE},
|
||||
{( 7 * 8) + 2, ACPI_RESTAG_LOCALPORT},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static const ACPI_RESOURCE_TAG AcpiDmI2cSerialBusTags[] =
|
||||
{
|
||||
{( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE},
|
||||
@ -424,6 +432,7 @@ static const ACPI_RESOURCE_TAG AcpiDmUartSerialBusTags[] =
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
|
||||
/* Subtype tables for PinFunction descriptor */
|
||||
|
||||
static const ACPI_RESOURCE_TAG AcpiDmPinFunctionTags[] =
|
||||
@ -539,7 +548,8 @@ static const ACPI_RESOURCE_TAG *AcpiGbl_SerialResourceTags[] =
|
||||
NULL, /* 0x00 Reserved */
|
||||
AcpiDmI2cSerialBusTags, /* 0x01 I2C SerialBus */
|
||||
AcpiDmSpiSerialBusTags, /* 0x02 SPI SerialBus */
|
||||
AcpiDmUartSerialBusTags /* 0x03 UART SerialBus */
|
||||
AcpiDmUartSerialBusTags, /* 0x03 UART SerialBus */
|
||||
AcpiDmCsi2SerialBusTags /* 0x04 CSI2 SerialBus */
|
||||
};
|
||||
|
||||
/*
|
||||
@ -987,7 +997,7 @@ AcpiDmGetResourceTag (
|
||||
|
||||
case ACPI_RESOURCE_NAME_SERIAL_BUS:
|
||||
|
||||
/* SerialBus has 3 subtypes: I2C, SPI, and UART */
|
||||
/* SerialBus has 4 subtypes: I2C, SPI, UART, and CSI2 */
|
||||
|
||||
if ((Resource->CommonSerialBus.Type == 0) ||
|
||||
(Resource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE))
|
||||
|
@ -184,6 +184,12 @@ static const char *AcpiDmAsfSubnames[] =
|
||||
"Unknown Subtable Type" /* Reserved */
|
||||
};
|
||||
|
||||
static const char *AcpiDmCedtSubnames[] =
|
||||
{
|
||||
"CXL Host Bridge Structure",
|
||||
"Unknown Subtable Type" /* Reserved */
|
||||
};
|
||||
|
||||
static const char *AcpiDmDmarSubnames[] =
|
||||
{
|
||||
"Hardware Unit Definition",
|
||||
@ -367,15 +373,24 @@ static const char *AcpiDmPcctSubnames[] =
|
||||
"HW-Reduced Comm Subspace Type2", /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 */
|
||||
"Extended PCC Master Subspace", /* ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE */
|
||||
"Extended PCC Slave Subspace", /* ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE */
|
||||
"HW Registers based Comm Subspace", /* ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE */
|
||||
"Unknown Subtable Type" /* Reserved */
|
||||
};
|
||||
|
||||
static const char *AcpiDmPhatSubnames[] =
|
||||
{
|
||||
"Firmware Version Data", /* ACPI_PHAT_TYPE_FW_VERSION_DATA */
|
||||
"Firmware Health Data", /* ACPI_PHAT_TYPE_FW_HEALTH_DATA */
|
||||
"Unknown Subtable Type" /* Reserved */
|
||||
};
|
||||
|
||||
static const char *AcpiDmPmttSubnames[] =
|
||||
{
|
||||
"Socket", /* ACPI_PMTT_TYPE_SOCKET */
|
||||
"Memory Controller", /* ACPI_PMTT_TYPE_CONTROLLER */
|
||||
"Physical Component (DIMM)", /* ACPI_PMTT_TYPE_DIMM */
|
||||
"Unknown Subtable Type" /* Reserved */
|
||||
"Unknown Subtable Type", /* Reserved */
|
||||
"Vendor Specific" /* ACPI_PMTT_TYPE_VENDOR */
|
||||
};
|
||||
|
||||
static const char *AcpiDmPpttSubnames[] =
|
||||
@ -434,6 +449,16 @@ static const char *AcpiDmLpitSubnames[] =
|
||||
"Unknown Subtable Type" /* Reserved */
|
||||
};
|
||||
|
||||
static const char *AcpiDmViotSubnames[] =
|
||||
{
|
||||
"Unknown Subtable Type", /* 0 -Reserved */
|
||||
"PCI Range",
|
||||
"MMIO Endpoint",
|
||||
"VirtIO-PCI IOMMU",
|
||||
"VirtIO-MMIO IOMMU",
|
||||
"Unknown Subtable Type" /* Reserved */
|
||||
};
|
||||
|
||||
#define ACPI_FADT_PM_RESERVED 9
|
||||
|
||||
static const char *AcpiDmFadtProfiles[] =
|
||||
@ -474,8 +499,8 @@ static const char *AcpiDmGasAccessWidth[] =
|
||||
* handler. This table must be NULL terminated. RSDP and FACS are
|
||||
* special-cased elsewhere.
|
||||
*
|
||||
* Note: Any tables added here should be duplicated within AcpiSupportedTables
|
||||
* in the file common/ahtable.c
|
||||
* Note: Any tables added here should be duplicated within
|
||||
* AcpiGbl_SupportedTables in the file common/ahtable.c
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -485,6 +510,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
|
||||
{ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert},
|
||||
{ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt},
|
||||
{ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot},
|
||||
{ACPI_SIG_CEDT, NULL, AcpiDmDumpCedt, DtCompileCedt, TemplateCedt},
|
||||
{ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep},
|
||||
{ACPI_SIG_CSRT, NULL, AcpiDmDumpCsrt, DtCompileCsrt, TemplateCsrt},
|
||||
{ACPI_SIG_DBG2, AcpiDmTableInfoDbg2, AcpiDmDumpDbg2, DtCompileDbg2, TemplateDbg2},
|
||||
@ -512,6 +538,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
|
||||
{ACPI_SIG_NFIT, AcpiDmTableInfoNfit, AcpiDmDumpNfit, DtCompileNfit, TemplateNfit},
|
||||
{ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct},
|
||||
{ACPI_SIG_PDTT, AcpiDmTableInfoPdtt, AcpiDmDumpPdtt, DtCompilePdtt, TemplatePdtt},
|
||||
{ACPI_SIG_PHAT, NULL, AcpiDmDumpPhat, DtCompilePhat, TemplatePhat},
|
||||
{ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt},
|
||||
{ACPI_SIG_PPTT, NULL, AcpiDmDumpPptt, DtCompilePptt, TemplatePptt},
|
||||
{ACPI_SIG_RASF, AcpiDmTableInfoRasf, NULL, NULL, TemplateRasf},
|
||||
@ -529,6 +556,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
|
||||
{ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa},
|
||||
{ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2},
|
||||
{ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi},
|
||||
{ACPI_SIG_VIOT, AcpiDmTableInfoViot, AcpiDmDumpViot, DtCompileViot, TemplateViot},
|
||||
{ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet},
|
||||
{ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat},
|
||||
{ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt},
|
||||
@ -936,6 +964,7 @@ AcpiDmDumpTable (
|
||||
case ACPI_DMT_CHKSUM:
|
||||
case ACPI_DMT_SPACEID:
|
||||
case ACPI_DMT_ACCWIDTH:
|
||||
case ACPI_DMT_CEDT:
|
||||
case ACPI_DMT_IVRS:
|
||||
case ACPI_DMT_GTDT:
|
||||
case ACPI_DMT_MADT:
|
||||
@ -952,6 +981,7 @@ AcpiDmDumpTable (
|
||||
case ACPI_DMT_ERSTACT:
|
||||
case ACPI_DMT_ERSTINST:
|
||||
case ACPI_DMT_DMAR_SCOPE:
|
||||
case ACPI_DMT_VIOT:
|
||||
|
||||
ByteLength = 1;
|
||||
break;
|
||||
@ -961,6 +991,7 @@ AcpiDmDumpTable (
|
||||
case ACPI_DMT_HEST:
|
||||
case ACPI_DMT_HMAT:
|
||||
case ACPI_DMT_NFIT:
|
||||
case ACPI_DMT_PHAT:
|
||||
|
||||
ByteLength = 2;
|
||||
break;
|
||||
@ -1030,6 +1061,17 @@ AcpiDmDumpTable (
|
||||
ByteLength = SubtableLength;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_PMTT_VENDOR:
|
||||
/*
|
||||
* Calculate the length of the vendor data for the PMTT table:
|
||||
* Length = (Current Subtable ptr + Subtable length) -
|
||||
* Start of the vendor data (Target)
|
||||
*/
|
||||
ByteLength = ((ACPI_CAST_PTR (char, Table) +
|
||||
(ACPI_CAST_PTR (ACPI_PMTT_HEADER, Table)->Length)) -
|
||||
ACPI_CAST_PTR (char, Target));
|
||||
break;
|
||||
|
||||
case ACPI_DMT_STRING:
|
||||
|
||||
ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1;
|
||||
@ -1346,6 +1388,20 @@ AcpiDmDumpTable (
|
||||
AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_CEDT:
|
||||
|
||||
/* CEDT subtable types */
|
||||
|
||||
Temp8 = *Target;
|
||||
if (Temp8 > ACPI_CEDT_TYPE_RESERVED)
|
||||
{
|
||||
Temp8 = ACPI_CEDT_TYPE_RESERVED;
|
||||
}
|
||||
|
||||
AcpiOsPrintf (UINT8_FORMAT, *Target,
|
||||
AcpiDmCedtSubnames[Temp8]);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_DMAR:
|
||||
|
||||
/* DMAR subtable types */
|
||||
@ -1559,16 +1615,33 @@ AcpiDmDumpTable (
|
||||
AcpiDmPcctSubnames[Temp8]);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_PHAT:
|
||||
|
||||
/* PMTT subtable types */
|
||||
|
||||
Temp16 = *Target;
|
||||
if (Temp16 > ACPI_PHAT_TYPE_RESERVED)
|
||||
{
|
||||
Temp16 = ACPI_PHAT_TYPE_RESERVED;
|
||||
}
|
||||
|
||||
AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16(Target),
|
||||
AcpiDmPhatSubnames[Temp16]);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_PMTT:
|
||||
|
||||
/* PMTT subtable types */
|
||||
|
||||
Temp8 = *Target;
|
||||
if (Temp8 > ACPI_PMTT_TYPE_RESERVED)
|
||||
if (Temp8 == ACPI_PMTT_TYPE_VENDOR)
|
||||
{
|
||||
Temp8 = ACPI_PMTT_TYPE_RESERVED + 1;
|
||||
}
|
||||
else if (Temp8 > ACPI_PMTT_TYPE_RESERVED)
|
||||
{
|
||||
Temp8 = ACPI_PMTT_TYPE_RESERVED;
|
||||
}
|
||||
|
||||
AcpiOsPrintf (UINT8_FORMAT, *Target,
|
||||
AcpiDmPmttSubnames[Temp8]);
|
||||
break;
|
||||
@ -1599,6 +1672,8 @@ AcpiDmDumpTable (
|
||||
break;
|
||||
|
||||
case ACPI_DMT_RAW_BUFFER:
|
||||
case ACPI_DMT_BUFFER:
|
||||
case ACPI_DMT_PMTT_VENDOR:
|
||||
|
||||
if (ByteLength == 0)
|
||||
{
|
||||
@ -1606,8 +1681,7 @@ AcpiDmDumpTable (
|
||||
break;
|
||||
}
|
||||
|
||||
AcpiDmDumpBuffer (Table, CurrentOffset, ByteLength,
|
||||
CurrentOffset, NULL);
|
||||
AcpiDmDumpBuffer (Target, 0, ByteLength, 0, NULL);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_SDEV:
|
||||
@ -1676,6 +1750,7 @@ AcpiDmDumpTable (
|
||||
{
|
||||
case ACPI_IVRS_TYPE_HARDWARE1:
|
||||
case ACPI_IVRS_TYPE_HARDWARE2:
|
||||
case ACPI_IVRS_TYPE_HARDWARE3:
|
||||
|
||||
Name = AcpiDmIvrsSubnames[0];
|
||||
break;
|
||||
@ -1710,6 +1785,20 @@ AcpiDmDumpTable (
|
||||
AcpiDmLpitSubnames[Temp32]);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_VIOT:
|
||||
|
||||
/* VIOT subtable types */
|
||||
|
||||
Temp8 = *Target;
|
||||
if (Temp8 > ACPI_VIOT_RESERVED)
|
||||
{
|
||||
Temp8 = ACPI_VIOT_RESERVED;
|
||||
}
|
||||
|
||||
AcpiOsPrintf (UINT8_FORMAT, *Target,
|
||||
AcpiDmViotSubnames[Temp8]);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_EXIT:
|
||||
|
||||
return (AE_OK);
|
||||
|
@ -329,6 +329,82 @@ AcpiDmDumpAsf (
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmDumpCedt
|
||||
*
|
||||
* PARAMETERS: Table - A CEDT table
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Format the contents of a CEDT. This table type consists
|
||||
* of an open-ended number of subtables.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiDmDumpCedt (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_CEDT_HEADER *Subtable;
|
||||
UINT32 Length = Table->Length;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_CEDT);
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
|
||||
|
||||
/* There is no main table (other than the standard ACPI header) */
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_CEDT_HEADER, Table, Offset);
|
||||
while (Offset < Table->Length)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoCedtHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Subtable->Type)
|
||||
{
|
||||
case ACPI_CEDT_TYPE_CHBS:
|
||||
|
||||
InfoTable = AcpiDmTableInfoCedt0;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown CEDT subtable type 0x%X\n\n",
|
||||
Subtable->Type);
|
||||
|
||||
/* Attempt to continue */
|
||||
|
||||
if (!Subtable->Length)
|
||||
{
|
||||
AcpiOsPrintf ("Invalid zero length subtable\n");
|
||||
return;
|
||||
}
|
||||
goto NextSubtable;
|
||||
}
|
||||
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NextSubtable:
|
||||
/* Point to next subtable */
|
||||
|
||||
Offset += Subtable->Length;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_CEDT_HEADER, Subtable,
|
||||
Subtable->Length);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
@ -181,6 +181,7 @@ AcpiDmDumpIort (
|
||||
ACPI_IORT_NODE *IortNode;
|
||||
ACPI_IORT_ITS_GROUP *IortItsGroup = NULL;
|
||||
ACPI_IORT_SMMU *IortSmmu = NULL;
|
||||
ACPI_IORT_RMR *IortRmr = NULL;
|
||||
UINT32 Offset;
|
||||
UINT32 NodeOffset;
|
||||
UINT32 Length;
|
||||
@ -188,6 +189,7 @@ AcpiDmDumpIort (
|
||||
char *String;
|
||||
UINT32 i;
|
||||
UINT32 MappingByteLength;
|
||||
UINT8 Revision;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@ -198,6 +200,17 @@ AcpiDmDumpIort (
|
||||
return;
|
||||
}
|
||||
|
||||
Revision = Table->Revision;
|
||||
|
||||
/* Both IORT Rev E and E.a have known issues and are not supported */
|
||||
|
||||
if (Revision == 1 || Revision == 2)
|
||||
{
|
||||
AcpiOsPrintf ("\n**** Unsupported IORT revision 0x%X\n",
|
||||
Revision);
|
||||
return;
|
||||
}
|
||||
|
||||
Iort = ACPI_CAST_PTR (ACPI_TABLE_IORT, Table);
|
||||
Offset = sizeof (ACPI_TABLE_IORT);
|
||||
|
||||
@ -221,8 +234,18 @@ AcpiDmDumpIort (
|
||||
IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, Table, Offset);
|
||||
AcpiOsPrintf ("\n");
|
||||
Length = ACPI_OFFSET (ACPI_IORT_NODE, NodeData);
|
||||
Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
IortNode, Length, AcpiDmTableInfoIortHdr);
|
||||
|
||||
if (Revision == 0)
|
||||
{
|
||||
Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
IortNode, Length, AcpiDmTableInfoIortHdr);
|
||||
}
|
||||
else if (Revision >= 3)
|
||||
{
|
||||
Status = AcpiDmDumpTable (Table->Length, Offset,
|
||||
IortNode, Length, AcpiDmTableInfoIortHdr3);
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
@ -272,6 +295,13 @@ AcpiDmDumpIort (
|
||||
Length = IortNode->Length - NodeOffset;
|
||||
break;
|
||||
|
||||
case ACPI_IORT_NODE_RMR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIort6;
|
||||
Length = IortNode->Length - NodeOffset;
|
||||
IortRmr = ACPI_ADD_PTR (ACPI_IORT_RMR, IortNode, NodeOffset);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n",
|
||||
@ -391,7 +421,30 @@ AcpiDmDumpIort (
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
case ACPI_IORT_NODE_RMR:
|
||||
|
||||
/* Validate IortRmr to avoid compiler warnings */
|
||||
if (IortRmr)
|
||||
{
|
||||
NodeOffset = IortRmr->RmrOffset;
|
||||
Length = sizeof (ACPI_IORT_RMR_DESC);
|
||||
for (i = 0; i < IortRmr->RmrCount; i++)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
||||
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
||||
Length, AcpiDmTableInfoIort6a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NodeOffset += Length;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
@ -434,8 +487,6 @@ AcpiDmDumpIort (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static UINT8 EntrySizes[] = {4,8,16,32};
|
||||
|
||||
void
|
||||
AcpiDmDumpIvrs (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
@ -445,6 +496,7 @@ AcpiDmDumpIvrs (
|
||||
UINT32 EntryOffset;
|
||||
UINT32 EntryLength;
|
||||
UINT32 EntryType;
|
||||
ACPI_IVRS_DEVICE_HID *HidSubtable;
|
||||
ACPI_IVRS_DE_HEADER *DeviceEntry;
|
||||
ACPI_IVRS_HEADER *Subtable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
@ -481,6 +533,7 @@ AcpiDmDumpIvrs (
|
||||
break;
|
||||
|
||||
case ACPI_IVRS_TYPE_HARDWARE2:
|
||||
case ACPI_IVRS_TYPE_HARDWARE3:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIvrs01;
|
||||
break;
|
||||
@ -520,7 +573,8 @@ AcpiDmDumpIvrs (
|
||||
/* The hardware subtable can contain multiple device entries */
|
||||
|
||||
if (Subtable->Type == ACPI_IVRS_TYPE_HARDWARE1 ||
|
||||
Subtable->Type == ACPI_IVRS_TYPE_HARDWARE2)
|
||||
Subtable->Type == ACPI_IVRS_TYPE_HARDWARE2 ||
|
||||
Subtable->Type == ACPI_IVRS_TYPE_HARDWARE3)
|
||||
{
|
||||
if (Subtable->Type == ACPI_IVRS_TYPE_HARDWARE1)
|
||||
{
|
||||
@ -545,11 +599,10 @@ AcpiDmDumpIvrs (
|
||||
*
|
||||
* 00 = 4 byte
|
||||
* 01 = 8 byte
|
||||
* 10 = 16 byte - currently no entries defined
|
||||
* 11 = 32 byte - currently no entries defined
|
||||
* 1x = variable length
|
||||
*/
|
||||
EntryType = DeviceEntry->Type;
|
||||
EntryLength = EntrySizes [EntryType >> 6];
|
||||
EntryLength = EntryType >> 6 == 1 ? 8 : 4;
|
||||
|
||||
switch (EntryType)
|
||||
{
|
||||
@ -588,6 +641,14 @@ AcpiDmDumpIvrs (
|
||||
InfoTable = AcpiDmTableInfoIvrs8c;
|
||||
break;
|
||||
|
||||
/* Variable-length entries */
|
||||
|
||||
case ACPI_IVRS_TYPE_HID:
|
||||
|
||||
EntryLength = 22;
|
||||
InfoTable = AcpiDmTableInfoIvrsHid;
|
||||
break;
|
||||
|
||||
default:
|
||||
InfoTable = AcpiDmTableInfoIvrs4;
|
||||
AcpiOsPrintf (
|
||||
@ -606,9 +667,24 @@ AcpiDmDumpIvrs (
|
||||
return;
|
||||
}
|
||||
|
||||
HidSubtable = ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, DeviceEntry);
|
||||
EntryOffset += EntryLength;
|
||||
DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry,
|
||||
EntryLength);
|
||||
|
||||
if (EntryType == ACPI_IVRS_TYPE_HID)
|
||||
{
|
||||
EntryLength = HidSubtable->UidLength;
|
||||
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
||||
Table, EntryLength, AcpiDmTableInfoIvrsHid1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
EntryOffset += EntryLength;
|
||||
DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER,
|
||||
DeviceEntry, EntryLength);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -825,6 +901,11 @@ AcpiDmDumpMadt (
|
||||
InfoTable = AcpiDmTableInfoMadt15;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_MULTIPROC_WAKEUP:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt16;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n",
|
||||
@ -1380,6 +1461,11 @@ AcpiDmDumpPcct (
|
||||
InfoTable = AcpiDmTableInfoPcct4;
|
||||
break;
|
||||
|
||||
case ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoPcct5;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf (
|
||||
@ -1459,6 +1545,140 @@ AcpiDmDumpPdtt (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmDumpPhat
|
||||
*
|
||||
* PARAMETERS: Table - A PHAT table
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Format the contents of a PHAT.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiDmDumpPhat (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
ACPI_PHAT_HEADER *Subtable;
|
||||
ACPI_PHAT_VERSION_DATA *VersionData;
|
||||
UINT32 RecordCount;
|
||||
UINT32 Length = Table->Length;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_PHAT);
|
||||
UINT32 SubtableLength;
|
||||
UINT32 PathLength;
|
||||
UINT32 VendorLength;
|
||||
|
||||
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, sizeof (ACPI_TABLE_PHAT));
|
||||
|
||||
while (Offset < Table->Length)
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, 0, Subtable,
|
||||
sizeof (ACPI_PHAT_HEADER), AcpiDmTableInfoPhatHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Subtable->Type)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
InfoTable = AcpiDmTableInfoPhat0;
|
||||
SubtableLength = sizeof (ACPI_PHAT_VERSION_DATA);
|
||||
break;
|
||||
|
||||
case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
|
||||
|
||||
InfoTable = AcpiDmTableInfoPhat1;
|
||||
SubtableLength = sizeof (ACPI_PHAT_HEALTH_DATA);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown PHAT subtable type 0x%X\n\n",
|
||||
Subtable->Type);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Status = AcpiDmDumpTable (Length, 0, Subtable,
|
||||
SubtableLength, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Subtable->Type)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
VersionData = ACPI_CAST_PTR (ACPI_PHAT_VERSION_DATA, Subtable);
|
||||
RecordCount = VersionData->ElementCount;
|
||||
while (RecordCount)
|
||||
{
|
||||
Status = AcpiDmDumpTable (Length, Offset,
|
||||
ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_VERSION_DATA)),
|
||||
sizeof (ACPI_PHAT_VERSION_ELEMENT), AcpiDmTableInfoPhat0a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RecordCount--;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
|
||||
|
||||
/* account for the null terminator */
|
||||
|
||||
PathLength = strlen (ACPI_ADD_PTR (char, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA))) + 1;
|
||||
Status = AcpiDmDumpTable (Length, Offset,
|
||||
ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)),
|
||||
PathLength, AcpiDmTableInfoPhat1a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Get vendor data - data length is the remaining subtable length */
|
||||
|
||||
VendorLength =
|
||||
Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength;
|
||||
Status = AcpiDmDumpTable (Length, 0,
|
||||
ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA) + PathLength),
|
||||
VendorLength, AcpiDmTableInfoPhat1b);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown PHAT subtable type 0x%X\n\n",
|
||||
Subtable->Type);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Next subtable */
|
||||
|
||||
Offset += Subtable->Length;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable,
|
||||
Subtable->Length);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmDumpPmtt
|
||||
@ -1478,15 +1698,8 @@ AcpiDmDumpPmtt (
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_PMTT_HEADER *Subtable;
|
||||
ACPI_PMTT_HEADER *MemSubtable;
|
||||
ACPI_PMTT_HEADER *DimmSubtable;
|
||||
ACPI_PMTT_DOMAIN *DomainArray;
|
||||
UINT32 Length = Table->Length;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_PMTT);
|
||||
UINT32 MemOffset;
|
||||
UINT32 DimmOffset;
|
||||
UINT32 DomainOffset;
|
||||
UINT32 DomainCount;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@ -1502,160 +1715,56 @@ AcpiDmDumpPmtt (
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
|
||||
while (Offset < Table->Length)
|
||||
{
|
||||
/* Common subtable header */
|
||||
/* Each of the types below contain the common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoPmttHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
switch (Subtable->Type)
|
||||
{
|
||||
return;
|
||||
}
|
||||
case ACPI_PMTT_TYPE_SOCKET:
|
||||
|
||||
/* Only Socket subtables are expected at this level */
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoPmtt0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
if (Subtable->Type != ACPI_PMTT_TYPE_SOCKET)
|
||||
{
|
||||
case ACPI_PMTT_TYPE_CONTROLLER:
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoPmtt1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case ACPI_PMTT_TYPE_DIMM:
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoPmtt2);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case ACPI_PMTT_TYPE_VENDOR:
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoPmttVendor);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
AcpiOsPrintf (
|
||||
"\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
|
||||
Subtable->Type);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Dump the fixed-length portion of the subtable */
|
||||
|
||||
Status = AcpiDmDumpTable (Length, Offset, Subtable,
|
||||
Subtable->Length, AcpiDmTableInfoPmtt0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Walk the memory controller subtables */
|
||||
|
||||
MemOffset = sizeof (ACPI_PMTT_SOCKET);
|
||||
MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable,
|
||||
sizeof (ACPI_PMTT_SOCKET));
|
||||
|
||||
while (((Offset + MemOffset) < Table->Length) &&
|
||||
(MemOffset < Subtable->Length))
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length,
|
||||
Offset + MemOffset, MemSubtable,
|
||||
MemSubtable->Length, AcpiDmTableInfoPmttHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Only memory controller subtables are expected at this level */
|
||||
|
||||
if (MemSubtable->Type != ACPI_PMTT_TYPE_CONTROLLER)
|
||||
{
|
||||
AcpiOsPrintf (
|
||||
"\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
|
||||
MemSubtable->Type);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Dump the fixed-length portion of the controller subtable */
|
||||
|
||||
Status = AcpiDmDumpTable (Length,
|
||||
Offset + MemOffset, MemSubtable,
|
||||
MemSubtable->Length, AcpiDmTableInfoPmtt1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Walk the variable count of proximity domains */
|
||||
|
||||
DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount;
|
||||
DomainOffset = sizeof (ACPI_PMTT_CONTROLLER);
|
||||
DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubtable,
|
||||
sizeof (ACPI_PMTT_CONTROLLER));
|
||||
|
||||
while (((Offset + MemOffset + DomainOffset) < Table->Length) &&
|
||||
((MemOffset + DomainOffset) < Subtable->Length) &&
|
||||
DomainCount)
|
||||
{
|
||||
Status = AcpiDmDumpTable (Length,
|
||||
Offset + MemOffset + DomainOffset, DomainArray,
|
||||
sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
DomainOffset += sizeof (ACPI_PMTT_DOMAIN);
|
||||
DomainArray++;
|
||||
DomainCount--;
|
||||
}
|
||||
|
||||
if (DomainCount)
|
||||
{
|
||||
AcpiOsPrintf (
|
||||
"\n**** DomainCount exceeds subtable length\n\n");
|
||||
}
|
||||
|
||||
/* Walk the physical component (DIMM) subtables */
|
||||
|
||||
DimmOffset = DomainOffset;
|
||||
DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubtable,
|
||||
DomainOffset);
|
||||
|
||||
while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
|
||||
(DimmOffset < MemSubtable->Length))
|
||||
{
|
||||
/* Common subtable header */
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Length,
|
||||
Offset + MemOffset + DimmOffset, DimmSubtable,
|
||||
DimmSubtable->Length, AcpiDmTableInfoPmttHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Only DIMM subtables are expected at this level */
|
||||
|
||||
if (DimmSubtable->Type != ACPI_PMTT_TYPE_DIMM)
|
||||
{
|
||||
AcpiOsPrintf (
|
||||
"\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
|
||||
DimmSubtable->Type);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Dump the fixed-length DIMM subtable */
|
||||
|
||||
Status = AcpiDmDumpTable (Length,
|
||||
Offset + MemOffset + DimmOffset, DimmSubtable,
|
||||
DimmSubtable->Length, AcpiDmTableInfoPmtt2);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Point to next DIMM subtable */
|
||||
|
||||
DimmOffset += DimmSubtable->Length;
|
||||
DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
|
||||
DimmSubtable, DimmSubtable->Length);
|
||||
}
|
||||
|
||||
/* Point to next Controller subtable */
|
||||
|
||||
MemOffset += MemSubtable->Length;
|
||||
MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
|
||||
MemSubtable, MemSubtable->Length);
|
||||
}
|
||||
|
||||
/* Point to next Socket subtable */
|
||||
/* Point to next subtable */
|
||||
|
||||
Offset += Subtable->Length;
|
||||
Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
|
||||
@ -1786,6 +1895,21 @@ AcpiDmDumpPptt (
|
||||
}
|
||||
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;
|
||||
@ -1906,17 +2030,20 @@ void
|
||||
AcpiDmDumpSdev (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_SDEV_HEADER *Subtable;
|
||||
ACPI_SDEV_PCIE *Pcie;
|
||||
ACPI_SDEV_NAMESPACE *Namesp;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT32 Length = Table->Length;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_SDEV);
|
||||
UINT16 PathOffset;
|
||||
UINT16 PathLength;
|
||||
UINT16 VendorDataOffset;
|
||||
UINT16 VendorDataLength;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_SDEV_HEADER *Subtable;
|
||||
ACPI_SDEV_PCIE *Pcie;
|
||||
ACPI_SDEV_NAMESPACE *Namesp;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
ACPI_DMTABLE_INFO *SecureComponentInfoTable;
|
||||
UINT32 Length = Table->Length;
|
||||
UINT32 Offset = sizeof (ACPI_TABLE_SDEV);
|
||||
UINT16 PathOffset;
|
||||
UINT16 PathLength;
|
||||
UINT16 VendorDataOffset;
|
||||
UINT16 VendorDataLength;
|
||||
ACPI_SDEV_SECURE_COMPONENT *SecureComponent = NULL;
|
||||
UINT32 CurrentOffset = 0;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@ -1959,7 +2086,7 @@ AcpiDmDumpSdev (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
|
||||
Status = AcpiDmDumpTable (Table->Length, 0, Subtable,
|
||||
Subtable->Length, InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -1970,6 +2097,52 @@ AcpiDmDumpSdev (
|
||||
{
|
||||
case ACPI_SDEV_TYPE_NAMESPACE_DEVICE:
|
||||
|
||||
CurrentOffset = sizeof (ACPI_SDEV_NAMESPACE);
|
||||
if (Subtable->Flags & ACPI_SDEV_SECURE_COMPONENTS_PRESENT)
|
||||
{
|
||||
SecureComponent = ACPI_CAST_PTR (ACPI_SDEV_SECURE_COMPONENT,
|
||||
ACPI_ADD_PTR (UINT8, Subtable, sizeof (ACPI_SDEV_NAMESPACE)));
|
||||
|
||||
Status = AcpiDmDumpTable (Table->Length, CurrentOffset,
|
||||
ACPI_ADD_PTR(UINT8, Subtable, sizeof (ACPI_SDEV_NAMESPACE)),
|
||||
sizeof (ACPI_SDEV_SECURE_COMPONENT), AcpiDmTableInfoSdev0b);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
CurrentOffset += sizeof (ACPI_SDEV_SECURE_COMPONENT);
|
||||
|
||||
Status = AcpiDmDumpTable (Table->Length, CurrentOffset,
|
||||
ACPI_ADD_PTR(UINT8, Subtable, SecureComponent->SecureComponentOffset),
|
||||
sizeof (ACPI_SDEV_HEADER), AcpiDmTableInfoSdevSecCompHdr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
CurrentOffset += sizeof (ACPI_SDEV_HEADER);
|
||||
|
||||
switch (Subtable->Type)
|
||||
{
|
||||
case ACPI_SDEV_TYPE_ID_COMPONENT:
|
||||
|
||||
SecureComponentInfoTable = AcpiDmTableInfoSdevSecCompId;
|
||||
break;
|
||||
|
||||
case ACPI_SDEV_TYPE_MEM_COMPONENT:
|
||||
|
||||
SecureComponentInfoTable = AcpiDmTableInfoSdevSecCompMem;
|
||||
break;
|
||||
|
||||
default:
|
||||
goto NextSubtable;
|
||||
}
|
||||
|
||||
Status = AcpiDmDumpTable (Table->Length, CurrentOffset,
|
||||
ACPI_ADD_PTR(UINT8, Subtable, SecureComponent->SecureComponentOffset),
|
||||
SecureComponent->SecureComponentLength, SecureComponentInfoTable);
|
||||
CurrentOffset += SecureComponent->SecureComponentLength;
|
||||
}
|
||||
|
||||
/* Dump the PCIe device ID(s) */
|
||||
|
||||
Namesp = ACPI_CAST_PTR (ACPI_SDEV_NAMESPACE, Subtable);
|
||||
@ -1978,13 +2151,14 @@ AcpiDmDumpSdev (
|
||||
|
||||
if (PathLength)
|
||||
{
|
||||
Status = AcpiDmDumpTable (Table->Length, 0,
|
||||
Status = AcpiDmDumpTable (Table->Length, CurrentOffset,
|
||||
ACPI_ADD_PTR (UINT8, Namesp, PathOffset),
|
||||
PathLength, AcpiDmTableInfoSdev0a);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
CurrentOffset += PathLength;
|
||||
}
|
||||
|
||||
/* Dump the vendor-specific data */
|
||||
|
@ -601,6 +601,106 @@ AcpiDmDumpTpm2 (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmDumpViot
|
||||
*
|
||||
* PARAMETERS: Table - A VIOT table
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Format the contents of a VIOT
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiDmDumpViot (
|
||||
ACPI_TABLE_HEADER *Table)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_VIOT *Viot;
|
||||
ACPI_VIOT_HEADER *ViotHeader;
|
||||
UINT16 Length;
|
||||
UINT16 Offset;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
|
||||
/* Main table */
|
||||
|
||||
Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoViot);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Viot = ACPI_CAST_PTR (ACPI_TABLE_VIOT, Table);
|
||||
|
||||
Offset = Viot->NodeOffset;
|
||||
while (Offset < Table->Length)
|
||||
{
|
||||
/* Common subtable header */
|
||||
ViotHeader = ACPI_ADD_PTR (ACPI_VIOT_HEADER, Table, Offset);
|
||||
AcpiOsPrintf ("\n");
|
||||
|
||||
Length = sizeof (ACPI_VIOT_HEADER);
|
||||
Status = AcpiDmDumpTable (Table->Length, Offset, ViotHeader, Length,
|
||||
AcpiDmTableInfoViotHeader);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Length = ViotHeader->Length;
|
||||
switch (ViotHeader->Type)
|
||||
{
|
||||
case ACPI_VIOT_NODE_PCI_RANGE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot1;
|
||||
break;
|
||||
|
||||
case ACPI_VIOT_NODE_MMIO:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot2;
|
||||
break;
|
||||
|
||||
case ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot3;
|
||||
break;
|
||||
|
||||
case ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot4;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n*** Unknown VIOT node type 0x%X\n",
|
||||
ViotHeader->Type);
|
||||
|
||||
/* Attempt to continue */
|
||||
|
||||
if (!Length)
|
||||
{
|
||||
AcpiOsPrintf ("Invalid zero length VIOT node\n");
|
||||
return;
|
||||
}
|
||||
goto NextSubtable;
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
Status = AcpiDmDumpTable (Table->Length, Offset, ViotHeader, Length,
|
||||
InfoTable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NextSubtable:
|
||||
Offset += Length;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmDumpWdat
|
||||
|
@ -344,6 +344,33 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] =
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* CEDT - CXL Early Discovery Table
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoCedtHdr[] =
|
||||
{
|
||||
{ACPI_DMT_CEDT, ACPI_CEDT_OFFSET (Type), "Subtable Type", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_CEDT_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_CEDT_OFFSET (Length), "Length", DT_LENGTH},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 0: CXL Host Bridge Structure */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoCedt0[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_CEDT0_OFFSET (Uid), "Associated host bridge", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_CEDT0_OFFSET (CxlVersion), "Specification version", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_CEDT0_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_CEDT0_OFFSET (Base), "Register base", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_CEDT0_OFFSET (Length), "Register length", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* CPEP - Corrected Platform Error Polling table
|
||||
@ -1134,9 +1161,12 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoHmat0[] =
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1[] =
|
||||
{
|
||||
{ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (Flags), "Flags (decoded below)", 0},
|
||||
{ACPI_DMT_FLAGS4_0, ACPI_HMAT1_FLAG_OFFSET (Flags,0), "Memory Hierarchy", 0},
|
||||
{ACPI_DMT_FLAGS4_0, ACPI_HMAT1_FLAG_OFFSET (Flags,0), "Memory Hierarchy", 0}, /* First 4 bits */
|
||||
{ACPI_DMT_FLAG4, ACPI_HMAT1_FLAG_OFFSET (Flags,0), "Use Minimum Transfer Size", 0},
|
||||
{ACPI_DMT_FLAG5, ACPI_HMAT1_FLAG_OFFSET (Flags,0), "Non-sequential Transfers", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (DataType), "Data Type", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_HMAT1_OFFSET (Reserved1), "Reserved1", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (MinTransferSize), "Minimum Transfer Size", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (Reserved1), "Reserved1", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (NumberOfInitiatorPDs), "Initiator Proximity Domains #", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (NumberOfTargetPDs), "Target Proximity Domains #", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (Reserved2), "Reserved2", 0},
|
||||
|
@ -218,7 +218,20 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr[] =
|
||||
{ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Type), "Type", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_IORTH_OFFSET (Length), "Length", DT_LENGTH},
|
||||
{ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Revision), "Revision", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (Identifier), "Reserved", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingCount), "Mapping Count", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingOffset), "Mapping Offset", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* Common Subtable header (one per Subtable)- Revision 3 */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr3[] =
|
||||
{
|
||||
{ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Type), "Type", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_IORTH_OFFSET (Length), "Length", DT_LENGTH},
|
||||
{ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Revision), "Revision", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (Identifier), "Identifier", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingCount), "Mapping Count", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingOffset), "Mapping Offset", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
@ -369,6 +382,25 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIort5[] =
|
||||
};
|
||||
|
||||
|
||||
/* 0x06: RMR */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoIort6[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_IORT6_OFFSET (Flags), "Flags (decoded below)", 0},
|
||||
{ACPI_DMT_FLAG0, ACPI_IORT6_FLAG_OFFSET (Flags, 0), "Remapping Permitted", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORT6_OFFSET (RmrCount), "Number of RMR Descriptors", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORT6_OFFSET (RmrOffset), "RMR Descriptor Offset", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoIort6a[] =
|
||||
{
|
||||
{ACPI_DMT_UINT64, ACPI_IORT6A_OFFSET (BaseAddress), "Base Address of RMR", DT_OPTIONAL},
|
||||
{ACPI_DMT_UINT64, ACPI_IORT6A_OFFSET (Length), "Length of RMR", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_IORT6A_OFFSET (Reserved), "Reserved", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* IVRS - I/O Virtualization Reporting Structure
|
||||
@ -478,6 +510,24 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] =
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* Variable-length device entry */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid[] =
|
||||
{
|
||||
ACPI_DMT_IVRS_DE_HEADER,
|
||||
{ACPI_DMT_NAME8, ACPI_IVRSHID_OFFSET (AcpiHid), "ACPI HID", 0},
|
||||
{ACPI_DMT_NAME8, ACPI_IVRSHID_OFFSET (AcpiCid), "ACPI CID", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_IVRSHID_OFFSET (UidType), "UID Format", DT_DESCRIBES_OPTIONAL},
|
||||
{ACPI_DMT_UINT8, ACPI_IVRSHID_OFFSET (UidLength), "UID Length", DT_DESCRIBES_OPTIONAL},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid1[] =
|
||||
{
|
||||
{ACPI_DMT_RAW_BUFFER, 0, "UID", DT_OPTIONAL},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -751,6 +801,16 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[] =
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 16: Multiprocessor wakeup structure (ACPI 6.4) */
|
||||
|
||||
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_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -938,12 +998,14 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNfit0[] =
|
||||
{ACPI_DMT_UINT16, ACPI_NFIT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
|
||||
{ACPI_DMT_FLAG0, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Add/Online Operation Only", 0},
|
||||
{ACPI_DMT_FLAG1, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Proximity Domain Valid", 0},
|
||||
{ACPI_DMT_FLAG2, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Location Cookie Valid", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (ProximityDomain), "Proximity Domain", 0},
|
||||
{ACPI_DMT_UUID, ACPI_NFIT0_OFFSET (RangeGuid[0]), "Region Type GUID", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Address), "Address Range Base", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Length), "Address Range Length", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (MemoryMapping), "Memory Map Attribute", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (LocationCookie), "Location Cookie", 0}, /* ACPI 6.4 */
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
@ -1219,6 +1281,25 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPcct4[] =
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 5: HW Registers based Communications Subspace */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPcct5[] =
|
||||
{
|
||||
{ACPI_DMT_UINT16, ACPI_PCCT5_OFFSET (Version), "Version", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_PCCT5_OFFSET (BaseAddress), "Base Address", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_PCCT5_OFFSET (Length), "Length", 0},
|
||||
{ACPI_DMT_GAS, ACPI_PCCT5_OFFSET (DoorbellRegister), "Doorbell Register", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_PCCT5_OFFSET (DoorbellPreserve), "Preserve Mask", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_PCCT5_OFFSET (DoorbellWrite), "Write Mask", 0},
|
||||
{ACPI_DMT_GAS, ACPI_PCCT5_OFFSET (CmdCompleteRegister), "Command Complete Register", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_PCCT5_OFFSET (CmdCompleteMask), "Command Complete Check Mask", 0},
|
||||
{ACPI_DMT_GAS, ACPI_PCCT5_OFFSET (ErrorStatusRegister), "Error Status Register", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_PCCT5_OFFSET (ErrorStatusMask), "Error Status Mask", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PCCT5_OFFSET (NominalLatency), "Nominal Latency", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PCCT5_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -1245,6 +1326,61 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt0[] =
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PHAT - Platform Health Assessment Table (ACPI 6.4)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPhatHdr[] =
|
||||
{
|
||||
{ACPI_DMT_PHAT, ACPI_PHATH_OFFSET (Type), "Subtable Type", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PHATH_OFFSET (Length), "Length", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_PHATH_OFFSET (Revision), "Revision", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 0: Firmware version table */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0[] =
|
||||
{
|
||||
{ACPI_DMT_UINT24, ACPI_PHAT0_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PHAT0_OFFSET (ElementCount), "Element Count", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0a[] =
|
||||
{
|
||||
{ACPI_DMT_UUID, ACPI_PHAT0A_OFFSET (Guid), "GUID", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_PHAT0A_OFFSET (VersionValue), "Version Value", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PHAT0A_OFFSET (ProducerId), "Producer ID", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 1: Firmware Health Data Record */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1[] =
|
||||
{
|
||||
{ACPI_DMT_UINT16, ACPI_PHAT1_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_PHAT1_OFFSET (Health), "Health", 0},
|
||||
{ACPI_DMT_UUID, ACPI_PHAT1_OFFSET (DeviceGuid), "Device GUID", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PHAT1_OFFSET (DeviceSpecificOffset), "Device specific offset", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1a[] =
|
||||
{
|
||||
{ACPI_DMT_STRING, 0, "Namepath", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1b[] =
|
||||
{
|
||||
{ACPI_DMT_RAW_BUFFER, 0, "Vendor Data", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PMTT - Platform Memory Topology Table
|
||||
@ -1253,24 +1389,22 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt0[] =
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT_OFFSET (MemoryDeviceCount), "Memory Device Count", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* Common Subtable header (one per Subtable) */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[] =
|
||||
{
|
||||
{ACPI_DMT_PMTT, ACPI_PMTTH_OFFSET (Type), "Subtable Type", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_PMTTH_OFFSET (Reserved1), "Reserved", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Length), "Length", DT_LENGTH},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
|
||||
{ACPI_DMT_FLAG0, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Top-level Device", 0},
|
||||
{ACPI_DMT_FLAG1, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Physical Element", 0},
|
||||
{ACPI_DMT_FLAGS2, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Memory Type", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Reserved2), "Reserved", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
#define ACPI_DM_PMTT_HEADER \
|
||||
{ACPI_DMT_PMTT, ACPI_PMTTH_OFFSET (Type), "Subtable Type", 0}, \
|
||||
{ACPI_DMT_UINT8, ACPI_PMTTH_OFFSET (Reserved1), "Reserved", 0}, \
|
||||
{ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Length), "Length", DT_LENGTH}, \
|
||||
{ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, \
|
||||
{ACPI_DMT_FLAG0, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Top-level Device", 0}, \
|
||||
{ACPI_DMT_FLAG1, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Physical Element", 0}, \
|
||||
{ACPI_DMT_FLAGS2, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Memory Type", 0}, \
|
||||
{ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Reserved2), "Reserved", 0}, \
|
||||
{ACPI_DMT_UINT32, ACPI_PMTTH_OFFSET (MemoryDeviceCount), "Memory Device Count", 0}
|
||||
|
||||
/* PMTT Subtables */
|
||||
|
||||
@ -1278,6 +1412,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[] =
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[] =
|
||||
{
|
||||
ACPI_DM_PMTT_HEADER,
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (SocketId), "Socket ID", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (Reserved), "Reserved", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
@ -1287,22 +1422,9 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[] =
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadLatency), "Read Latency", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteLatency), "Write Latency", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadBandwidth), "Read Bandwidth", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteBandwidth), "Write Bandwidth", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (AccessWidth), "Access Width", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Alignment), "Alignment", 0},
|
||||
ACPI_DM_PMTT_HEADER,
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (ControllerId), "Controller ID", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (DomainCount), "Domain Count", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 1a: Proximity Domain */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT1A_OFFSET (ProximityDomain), "Proximity Domain", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
@ -1310,13 +1432,21 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[] =
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[] =
|
||||
{
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (ComponentId), "Component ID", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (MemorySize), "Memory Size", 0},
|
||||
ACPI_DM_PMTT_HEADER,
|
||||
{ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (BiosHandle), "Bios Handle", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 0xFF: Vendor Specific */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPmttVendor[] =
|
||||
{
|
||||
ACPI_DM_PMTT_HEADER,
|
||||
{ACPI_DMT_UUID, ACPI_PMTT_VENDOR_OFFSET (TypeUuid), "Type Uuid", 0},
|
||||
{ACPI_DMT_PMTT_VENDOR, ACPI_PMTT_VENDOR_OFFSET (Specific), "Vendor Data", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -1371,6 +1501,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[] =
|
||||
{ACPI_DMT_FLAG4, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Cache Type valid", 0},
|
||||
{ACPI_DMT_FLAG5, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Write Policy valid", 0},
|
||||
{ACPI_DMT_FLAG6, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Line Size valid", 0},
|
||||
{ACPI_DMT_FLAG7, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Cache ID valid", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (NextLevelOfCache), "Next Level of Cache", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (Size), "Size", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (NumberOfSets), "Number of Sets", 0},
|
||||
@ -1383,6 +1514,14 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[] =
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 1: cache type v1 */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1a[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (CacheId), "Cache ID", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 2: ID */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[] =
|
||||
@ -1499,6 +1638,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSdevHdr[] =
|
||||
{ACPI_DMT_SDEV, ACPI_SDEVH_OFFSET (Type), "Subtable Type", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVH_OFFSET (Flags), "Flags (decoded below)", 0},
|
||||
{ACPI_DMT_FLAG0, ACPI_SDEVH_FLAG_OFFSET (Flags,0), "Allow handoff to unsecure OS", 0},
|
||||
{ACPI_DMT_FLAG1, ACPI_SDEVH_FLAG_OFFSET (Flags,0), "Secure access components present", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_SDEVH_OFFSET (Length), "Length", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
@ -1522,6 +1662,53 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0a[] =
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0b[] =
|
||||
{
|
||||
{ACPI_DMT_UINT16, ACPI_SDEV0B_OFFSET (SecureComponentOffset), "Secure Access Components Offset", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_SDEV0B_OFFSET (SecureComponentLength), "Secure Access Components Length", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* Secure access components */
|
||||
|
||||
/* Common secure access components header secure access component */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoSdevSecCompHdr[] =
|
||||
{
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVCH_OFFSET (Type), "Secure Component Type", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVCH_OFFSET (Flags), "Flags (decoded below)", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_SDEVCH_OFFSET (Length), "Length", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 0: Identification Based Secure Access Component */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoSdevSecCompId[] =
|
||||
{
|
||||
{ACPI_DMT_UINT16, ACPI_SDEVC0_OFFSET (HardwareIdOffset), "Hardware ID Offset", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_SDEVC0_OFFSET (HardwareIdLength), "Hardware ID Length", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_SDEVC0_OFFSET (SubsystemIdOffset), "Subsystem ID Offset", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_SDEVC0_OFFSET (SubsystemIdLength), "Subsystem ID Length", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_SDEVC0_OFFSET (HardwareRevision), "Hardware Revision", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVC0_OFFSET (HardwareRevPresent), "Hardware Rev Present", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVC0_OFFSET (ClassCodePresent), "Class Code Present", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVC0_OFFSET (PciBaseClass), "PCI Base Class", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVC0_OFFSET (PciSubClass), "PCI SubClass", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_SDEVC0_OFFSET (PciProgrammingXface), "PCI Programming Xface", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 1: Memory Based Secure Access Component */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoSdevSecCompMem[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_SDEVC1_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_SDEVC1_OFFSET (MemoryBaseAddress), "Memory Base Address", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_SDEVC1_OFFSET (MemoryLength), "Memory Length", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/* 1: PCIe Endpoint Device Based Device Structure */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1[] =
|
||||
|
@ -378,6 +378,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat5[] =
|
||||
{ACPI_DMT_BUF16, ACPI_SRAT5_OFFSET (DeviceHandle), "Device Handle", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
|
||||
{ACPI_DMT_FLAG0, ACPI_SRAT5_FLAG_OFFSET (Flags,0), "Enabled", 0},
|
||||
{ACPI_DMT_FLAG1, ACPI_SRAT5_FLAG_OFFSET (Flags,0), "Architectural Transactions", 0},
|
||||
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (Reserved1), "Reserved2", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
@ -526,6 +527,77 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[] =
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* VIOT - Virtual I/O Translation Table
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoViot[] =
|
||||
{
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT_OFFSET (NodeCount), "Node count", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT_OFFSET (NodeOffset), "Node offset", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_VIOT_OFFSET (Reserved), "Reserved", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* Common VIOT subtable header */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoViotHeader[] =
|
||||
{
|
||||
{ACPI_DMT_VIOT, ACPI_VIOTH_OFFSET (Type), "Type", 0},
|
||||
{ACPI_DMT_UINT8, ACPI_VIOTH_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOTH_OFFSET (Length), "Length", DT_LENGTH},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* VIOT Subtables */
|
||||
|
||||
/* 0x01: PCI Range Node */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoViot1[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_VIOT1_OFFSET (EndpointStart), "Endpoint start", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT1_OFFSET (SegmentStart), "PCI Segment start", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT1_OFFSET (SegmentEnd), "PCI Segment end", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT1_OFFSET (BdfStart), "PCI BDF start", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT1_OFFSET (BdfEnd), "PCI BDF end", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT1_OFFSET (OutputNode), "Output node", 0},
|
||||
{ACPI_DMT_UINT48, ACPI_VIOT1_OFFSET (Reserved), "Reserved", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 0x02: MMIO Endpoint Node */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoViot2[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_VIOT2_OFFSET (Endpoint), "Endpoint", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_VIOT2_OFFSET (BaseAddress), "Base address", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT2_OFFSET (OutputNode), "Output node", 0},
|
||||
{ACPI_DMT_UINT48, ACPI_VIOT2_OFFSET (Reserved), "Reserved", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 0x03: PCI Virtio-IOMMU Node */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoViot3[] =
|
||||
{
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT3_OFFSET (Segment), "PCI Segment", 0},
|
||||
{ACPI_DMT_UINT16, ACPI_VIOT3_OFFSET (Bdf), "PCI BDF number", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_VIOT3_OFFSET (Reserved), "Reserved", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
/* 0x04: MMIO Virtio-IOMMU Node */
|
||||
|
||||
ACPI_DMTABLE_INFO AcpiDmTableInfoViot4[] =
|
||||
{
|
||||
{ACPI_DMT_UINT32, ACPI_VIOT4_OFFSET (Reserved), "Reserved", 0},
|
||||
{ACPI_DMT_UINT64, ACPI_VIOT4_OFFSET (BaseAddress), "Base address", 0},
|
||||
ACPI_DMT_TERMINATOR
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* WAET - Windows ACPI Emulated devices Table
|
||||
|
@ -153,7 +153,7 @@
|
||||
|
||||
/*
|
||||
* Local heap allocation wrappers. See aslcache.c for allocation from local
|
||||
* cache alloctions
|
||||
* cache allocations
|
||||
*/
|
||||
|
||||
|
||||
|
@ -184,7 +184,7 @@ FlConsumeNewComment (
|
||||
* not handle comment delimiters within string literals. However,
|
||||
* on the rare chance this happens and an invalid character is
|
||||
* missed, the parser will catch the error by failing in some
|
||||
* spectactular manner.
|
||||
* spectacular manner.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -216,7 +216,7 @@ FlIsFileAsciiSource (
|
||||
|
||||
while (fread (&Byte, 1, 1, Handle) == 1)
|
||||
{
|
||||
/* Ignore comment fields (allow non-ascii within) */
|
||||
/* Ignore comment fields (allow non-ASCII within) */
|
||||
|
||||
if (OpeningComment)
|
||||
{
|
||||
|
@ -1538,6 +1538,10 @@ ASL_RESOURCE_NODE *
|
||||
RsDoUartSerialBusDescriptor (
|
||||
ASL_RESOURCE_INFO *Info);
|
||||
|
||||
ASL_RESOURCE_NODE *
|
||||
RsDoCsi2SerialBusDescriptor (
|
||||
ASL_RESOURCE_INFO *Info);
|
||||
|
||||
ASL_RESOURCE_NODE *
|
||||
RsDoPinFunctionDescriptor (
|
||||
ASL_RESOURCE_INFO *Info);
|
||||
|
@ -434,6 +434,7 @@ NamePathTail [.]{NameSeg}
|
||||
"ResourceTemplate" { count (1); return (PARSEOP_RESOURCETEMPLATE); }
|
||||
"RawDataBuffer" { count (1); return (PARSEOP_DATABUFFER); }
|
||||
|
||||
"Csi2Bus" { count (1); return (PARSEOP_CSI2_SERIALBUS); }
|
||||
"DMA" { count (1); return (PARSEOP_DMA); }
|
||||
"DWordIO" { count (1); return (PARSEOP_DWORDIO); }
|
||||
"DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); }
|
||||
|
@ -1125,7 +1125,7 @@ void
|
||||
AslCheckExpectedExceptions (
|
||||
void)
|
||||
{
|
||||
UINT8 i;
|
||||
UINT32 i;
|
||||
ASL_EXPECTED_MSG_NODE *Current = AslGbl_ExpectedErrorCodeList;
|
||||
ASL_LOCATION_NODE *LocationNode;
|
||||
|
||||
@ -1188,7 +1188,7 @@ AslLogExpectedException (
|
||||
|
||||
if (MessageId > 6999)
|
||||
{
|
||||
printf ("\"%s\" is not a valid warning/remark/erro ID\n",
|
||||
printf ("\"%s\" is not a valid warning/remark/error ID\n",
|
||||
MessageIdString);
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
@ -1336,7 +1336,7 @@ AslElevateException (
|
||||
|
||||
if (MessageId > 6999)
|
||||
{
|
||||
printf ("\"%s\" is not a valid warning/remark/erro ID\n",
|
||||
printf ("\"%s\" is not a valid warning/remark/error ID\n",
|
||||
MessageIdString);
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
@ -360,6 +360,11 @@ OptionalSlaveMode
|
||||
| ',' SlaveModeKeyword {$$ = $2;}
|
||||
;
|
||||
|
||||
OptionalSlaveMode_First
|
||||
: {$$ = NULL;}
|
||||
| SlaveModeKeyword {$$ = $1;}
|
||||
;
|
||||
|
||||
OptionalShareType
|
||||
: {$$ = NULL;}
|
||||
| ',' {$$ = NULL;}
|
||||
|
@ -346,6 +346,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
|
||||
/* FUNCTION */ OP_TABLE_ENTRY (AML_METHOD_OP, 0, OP_AML_PACKAGE, 0),
|
||||
/* GPIOINT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
||||
/* GPIOIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
||||
/* CSI2SERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
||||
/* I2CSERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
||||
/* I2CSERIALBUSV2 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
|
||||
/* IF */ OP_TABLE_ENTRY (AML_IF_OP, 0, OP_AML_PACKAGE, 0),
|
||||
|
@ -384,7 +384,8 @@ const char *AslCompilerMsgs [] =
|
||||
/* ASL_MSG_EXTERNAL_FOUND_HERE */ "External declaration below ",
|
||||
/* ASL_MSG_LOWER_CASE_NAMESEG */ "At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case",
|
||||
/* ASL_MSG_LOWER_CASE_NAMEPATH */ "At least one lower case letter found in NamePath, ASL is case insensitive - converting to upper case",
|
||||
/* ASL_MSG_UUID_NOT_FOUND */ "Unknown UUID string"
|
||||
/* ASL_MSG_UUID_NOT_FOUND */ "Unknown UUID string",
|
||||
/* ASL_MSG_LEGACY_DDB_TYPE */ "DDBHandleObj has been deprecated along with the Unload operator. DDBHandlObj objects are only used in Unload"
|
||||
};
|
||||
|
||||
/* Table compiler */
|
||||
|
@ -389,6 +389,7 @@ typedef enum
|
||||
ASL_MSG_LOWER_CASE_NAMESEG,
|
||||
ASL_MSG_LOWER_CASE_NAMEPATH,
|
||||
ASL_MSG_UUID_NOT_FOUND,
|
||||
ASL_MSG_LEGACY_DDB_TYPE,
|
||||
|
||||
|
||||
/* These messages are used by the Data Table compiler only */
|
||||
|
@ -519,7 +519,8 @@ NsDoOneNamespaceObject (
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Print the full pathname and addtional info for a namespace node.
|
||||
* DESCRIPTION: Print the full pathname and additional info for a namespace
|
||||
* node.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -676,7 +676,7 @@ OpcDoUnicode (
|
||||
* Bits 4-0 - 3rd character of mfg code
|
||||
* Byte 2: Bits 7-4 - 1st hex digit of product number
|
||||
* Bits 3-0 - 2nd hex digit of product number
|
||||
* Byte 3: Bits 7-4 - 3st hex digit of product number
|
||||
* Byte 3: Bits 7-4 - 3rd hex digit of product number
|
||||
* Bits 3-0 - Hex digit of the revision number
|
||||
*
|
||||
******************************************************************************/
|
||||
|
@ -1090,7 +1090,7 @@ OpnDoDefinitionBlock (
|
||||
* Use the definition block file parameter instead of the input
|
||||
* filename. Since all files were opened previously, remove the
|
||||
* existing file and open a new file with the name of this
|
||||
* definiton block parameter. Since AML code generation has yet
|
||||
* definition block parameter. Since AML code generation has yet
|
||||
* to happen, the previous file can be removed without any impacts.
|
||||
*/
|
||||
FlCloseFile (ASL_FILE_AML_OUTPUT);
|
||||
|
@ -208,7 +208,7 @@ AslLocalAllocate (
|
||||
* These shift/reduce conflicts are expected. There should be zero
|
||||
* reduce/reduce conflicts.
|
||||
*/
|
||||
%expect 124
|
||||
%expect 127
|
||||
|
||||
/*! [Begin] no source code translation */
|
||||
|
||||
|
@ -352,7 +352,7 @@ OpcParsePrintf (
|
||||
|
||||
/*
|
||||
* Append an empty string if the first argument is
|
||||
* not a string. This will implicitly conver the 2nd
|
||||
* not a string. This will implicitly convert the 2nd
|
||||
* concat source to a string per the ACPI specification.
|
||||
*/
|
||||
if (!Op->Asl.Child)
|
||||
|
@ -990,6 +990,11 @@ RsDoOneResourceDescriptor (
|
||||
Rnode = RsDoUartSerialBusDescriptor (Info);
|
||||
break;
|
||||
|
||||
case PARSEOP_CSI2_SERIALBUS:
|
||||
|
||||
Rnode = RsDoCsi2SerialBusDescriptor (Info);
|
||||
break;
|
||||
|
||||
case PARSEOP_PINCONFIG:
|
||||
|
||||
Rnode = RsDoPinConfigDescriptor (Info);
|
||||
|
@ -190,7 +190,8 @@ ResourceMacroList
|
||||
;
|
||||
|
||||
ResourceMacroTerm
|
||||
: DMATerm {}
|
||||
: Csi2SerialBusTerm {}
|
||||
| DMATerm {}
|
||||
| DWordIOTerm {}
|
||||
| DWordMemoryTerm {}
|
||||
| DWordSpaceTerm {}
|
||||
@ -233,6 +234,23 @@ ResourceMacroTerm
|
||||
| WordSpaceTerm {}
|
||||
;
|
||||
|
||||
Csi2SerialBusTerm
|
||||
: PARSEOP_CSI2_SERIALBUS
|
||||
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);}
|
||||
OptionalSlaveMode_First {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */
|
||||
',' ByteConstExpr {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */
|
||||
OptionalByteConstExpr {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */
|
||||
',' StringData /* 12: ResourceSource */
|
||||
',' ByteConstExpr /* 14: ResourceSourceIndex */
|
||||
OptionalResourceType /* 15; ResourceType (ResourceUsage) */
|
||||
OptionalNameString /* 16: DescriptorName */
|
||||
OptionalBuffer_Last /* 17: VendorData */
|
||||
PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,8,
|
||||
$4,$7,$9,$12,$14,$15,$16,$17);}
|
||||
| PARSEOP_CSI2_SERIALBUS
|
||||
PARSEOP_OPEN_PAREN
|
||||
error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
|
||||
|
||||
DMATerm
|
||||
: PARSEOP_DMA
|
||||
PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);}
|
||||
|
@ -1387,6 +1387,142 @@ RsDoUartSerialBusDescriptor (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: RsDoCsi2SerialBusDescriptor
|
||||
*
|
||||
* PARAMETERS: Info - Parse Op and resource template offset
|
||||
*
|
||||
* RETURN: Completed resource node
|
||||
*
|
||||
* DESCRIPTION: Construct a long "Csi2SerialBus" descriptor
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ASL_RESOURCE_NODE *
|
||||
RsDoCsi2SerialBusDescriptor (
|
||||
ASL_RESOURCE_INFO *Info)
|
||||
{
|
||||
AML_RESOURCE *Descriptor;
|
||||
ACPI_PARSE_OBJECT *InitializerOp;
|
||||
ASL_RESOURCE_NODE *Rnode;
|
||||
char *ResourceSource = NULL;
|
||||
UINT8 *VendorData = NULL;
|
||||
UINT16 ResSourceLength;
|
||||
UINT16 VendorLength;
|
||||
UINT16 DescriptorSize;
|
||||
UINT32 CurrentByteOffset;
|
||||
UINT32 i;
|
||||
|
||||
|
||||
InitializerOp = Info->DescriptorTypeOp->Asl.Child;
|
||||
CurrentByteOffset = Info->CurrentByteOffset;
|
||||
|
||||
/*
|
||||
* Calculate lengths for fields that have variable length:
|
||||
* 1) Resource Source string
|
||||
* 2) Vendor Data buffer
|
||||
*/
|
||||
ResSourceLength = RsGetStringDataLength (InitializerOp);
|
||||
VendorLength = RsGetBufferDataLength (InitializerOp);
|
||||
|
||||
DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_CSI2_SERIALBUS) +
|
||||
ResSourceLength + VendorLength;
|
||||
|
||||
/* Allocate the local resource node and initialize */
|
||||
|
||||
Rnode = RsAllocateResourceNode (DescriptorSize +
|
||||
sizeof (AML_RESOURCE_LARGE_HEADER));
|
||||
|
||||
Descriptor = Rnode->Buffer;
|
||||
Descriptor->Csi2SerialBus.ResourceLength = DescriptorSize;
|
||||
Descriptor->Csi2SerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS;
|
||||
Descriptor->Csi2SerialBus.RevisionId = AML_RESOURCE_CSI2_REVISION;
|
||||
Descriptor->Csi2SerialBus.TypeRevisionId = AML_RESOURCE_CSI2_TYPE_REVISION;
|
||||
Descriptor->Csi2SerialBus.Type = AML_RESOURCE_CSI2_SERIALBUSTYPE;
|
||||
Descriptor->Csi2SerialBus.TypeDataLength = AML_RESOURCE_CSI2_MIN_DATA_LEN + VendorLength;
|
||||
|
||||
/* Build pointers to optional areas */
|
||||
|
||||
VendorData = ACPI_ADD_PTR (UINT8, Descriptor, sizeof (AML_RESOURCE_CSI2_SERIALBUS));
|
||||
ResourceSource = ACPI_ADD_PTR (char, VendorData, VendorLength);
|
||||
|
||||
/* Process all child initialization nodes */
|
||||
|
||||
for (i = 0; InitializerOp; i++)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0: /* Slave Mode [Flag] (_SLV) */
|
||||
|
||||
RsSetFlagBits (&Descriptor->Csi2SerialBus.Flags, InitializerOp, 0, 0);
|
||||
RsCreateBitField (InitializerOp, ACPI_RESTAG_SLAVEMODE,
|
||||
CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.Flags), 0);
|
||||
break;
|
||||
|
||||
case 1: /* Phy Type [Flag] (_PHY) */
|
||||
|
||||
RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 0, 0);
|
||||
RsCreateBitField (InitializerOp, ACPI_RESTAG_PHYTYPE,
|
||||
CurrentByteOffset + ASL_RESDESC_OFFSET (Csi2SerialBus.TypeSpecificFlags), 0);
|
||||
break;
|
||||
|
||||
case 2: /* Local Port Instance [Integer] (_PRT) */
|
||||
|
||||
RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 0, 0);
|
||||
RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LOCALPORT,
|
||||
CurrentByteOffset + ASL_RESDESC_OFFSET (Csi2SerialBus.TypeSpecificFlags), 2, 6);
|
||||
break;
|
||||
|
||||
case 3: /* ResSource [Optional Field - STRING] */
|
||||
|
||||
if (ResSourceLength)
|
||||
{
|
||||
/* Copy string to the descriptor */
|
||||
|
||||
strcpy (ResourceSource,
|
||||
InitializerOp->Asl.Value.String);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4: /* Resource Index */
|
||||
|
||||
if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
|
||||
{
|
||||
Descriptor->Csi2SerialBus.ResSourceIndex =
|
||||
(UINT8) InitializerOp->Asl.Value.Integer;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5: /* Resource Usage (consumer/producer) */
|
||||
|
||||
RsSetFlagBits (&Descriptor->Csi2SerialBus.Flags, InitializerOp, 1, 1);
|
||||
break;
|
||||
|
||||
case 6: /* Resource Tag (Descriptor Name) */
|
||||
|
||||
UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
|
||||
break;
|
||||
|
||||
case 7: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */
|
||||
|
||||
RsGetVendorData (InitializerOp, VendorData,
|
||||
CurrentByteOffset + sizeof (AML_RESOURCE_CSI2_SERIALBUS));
|
||||
break;
|
||||
|
||||
default: /* Ignore any extra nodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
|
||||
}
|
||||
|
||||
MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource);
|
||||
return (Rnode);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: RsDoPinFunctionDescriptor
|
||||
|
@ -283,6 +283,7 @@ NoEcho('
|
||||
%token <i> PARSEOP_FUNCTION
|
||||
%token <i> PARSEOP_GPIO_INT
|
||||
%token <i> PARSEOP_GPIO_IO
|
||||
%token <i> PARSEOP_CSI2_SERIALBUS
|
||||
%token <i> PARSEOP_I2C_SERIALBUS
|
||||
%token <i> PARSEOP_I2C_SERIALBUS_V2
|
||||
%token <i> PARSEOP_IF
|
||||
|
@ -541,6 +541,11 @@ TrTransformSubtree (
|
||||
AslError (ASL_WARNING, ASL_MSG_LEGACY_PROCESSOR_OP, Op, Op->Asl.ExternalName);
|
||||
break;
|
||||
|
||||
case PARSEOP_OBJECTTYPE_DDB:
|
||||
|
||||
AslError (ASL_WARNING, ASL_MSG_LEGACY_DDB_TYPE, Op, Op->Asl.ExternalName);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do here for other opcodes */
|
||||
|
@ -410,6 +410,7 @@ NoEcho('
|
||||
/* Resource Descriptors */
|
||||
|
||||
%type <n> ConnectionTerm
|
||||
%type <n> Csi2SerialBusTerm
|
||||
%type <n> DMATerm
|
||||
%type <n> DWordIOTerm
|
||||
%type <n> DWordMemoryTerm
|
||||
@ -501,6 +502,7 @@ NoEcho('
|
||||
%type <n> OptionalShareType
|
||||
%type <n> OptionalShareType_First
|
||||
%type <n> OptionalSlaveMode
|
||||
%type <n> OptionalSlaveMode_First
|
||||
%type <n> OptionalStopBits
|
||||
%type <n> OptionalStringData
|
||||
%type <n> OptionalSyncLevel
|
||||
|
@ -573,6 +573,10 @@ ACPI_STATUS
|
||||
DtCompileCpep (
|
||||
void **PFieldList);
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompileCedt (
|
||||
void **PFieldList);
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompileCsrt (
|
||||
void **PFieldList);
|
||||
@ -657,6 +661,10 @@ ACPI_STATUS
|
||||
DtCompilePdtt (
|
||||
void **PFieldList);
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompilePhat (
|
||||
void **PFieldList);
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompilePmtt (
|
||||
void **PFieldList);
|
||||
@ -705,6 +713,10 @@ ACPI_STATUS
|
||||
DtCompileUefi (
|
||||
void **PFieldList);
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompileViot (
|
||||
void **PFieldList);
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompileWdat (
|
||||
void **PFieldList);
|
||||
@ -733,6 +745,7 @@ extern const unsigned char TemplateAsf[];
|
||||
extern const unsigned char TemplateBoot[];
|
||||
extern const unsigned char TemplateBert[];
|
||||
extern const unsigned char TemplateBgrt[];
|
||||
extern const unsigned char TemplateCedt[];
|
||||
extern const unsigned char TemplateCpep[];
|
||||
extern const unsigned char TemplateCsrt[];
|
||||
extern const unsigned char TemplateDbg2[];
|
||||
@ -760,6 +773,7 @@ extern const unsigned char TemplateMsdm[];
|
||||
extern const unsigned char TemplateNfit[];
|
||||
extern const unsigned char TemplatePcct[];
|
||||
extern const unsigned char TemplatePdtt[];
|
||||
extern const unsigned char TemplatePhat[];
|
||||
extern const unsigned char TemplatePmtt[];
|
||||
extern const unsigned char TemplatePptt[];
|
||||
extern const unsigned char TemplateRasf[];
|
||||
@ -777,6 +791,7 @@ extern const unsigned char TemplateStao[];
|
||||
extern const unsigned char TemplateTcpa[];
|
||||
extern const unsigned char TemplateTpm2[];
|
||||
extern const unsigned char TemplateUefi[];
|
||||
extern const unsigned char TemplateViot[];
|
||||
extern const unsigned char TemplateWaet[];
|
||||
extern const unsigned char TemplateWdat[];
|
||||
extern const unsigned char TemplateWddt[];
|
||||
|
@ -342,6 +342,80 @@ DtCompileAsf (
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: DtCompileCedt
|
||||
*
|
||||
* PARAMETERS: List - Current field list pointer
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Compile CEDT.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompileCedt (
|
||||
void **List)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
DT_SUBTABLE *Subtable;
|
||||
DT_SUBTABLE *ParentTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
ACPI_CEDT_HEADER *CedtHeader;
|
||||
DT_FIELD *SubtableStart;
|
||||
|
||||
|
||||
/* Walk the parse tree */
|
||||
|
||||
while (*PFieldList)
|
||||
{
|
||||
SubtableStart = *PFieldList;
|
||||
|
||||
/* CEDT Header */
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedtHdr,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
CedtHeader = ACPI_CAST_PTR (ACPI_CEDT_HEADER, Subtable->Buffer);
|
||||
|
||||
switch (CedtHeader->Type)
|
||||
{
|
||||
case ACPI_CEDT_TYPE_CHBS:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CEDT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
/* CEDT Subtable */
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt0, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPopSubtable ();
|
||||
}
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: DtCompileCpep
|
||||
@ -1582,10 +1656,12 @@ DtCompileIort (
|
||||
DT_SUBTABLE *ParentTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_TABLE_HEADER *Table;
|
||||
ACPI_TABLE_IORT *Iort;
|
||||
ACPI_IORT_NODE *IortNode;
|
||||
ACPI_IORT_ITS_GROUP *IortItsGroup;
|
||||
ACPI_IORT_SMMU *IortSmmu;
|
||||
ACPI_IORT_RMR *IortRmr;
|
||||
UINT32 NodeNumber;
|
||||
UINT32 NodeLength;
|
||||
UINT32 IdMappingNumber;
|
||||
@ -1593,6 +1669,8 @@ DtCompileIort (
|
||||
UINT32 ContextIrptNumber;
|
||||
UINT32 PmuIrptNumber;
|
||||
UINT32 PaddingLength;
|
||||
UINT8 Revision;
|
||||
UINT32 RmrCount;
|
||||
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
@ -1605,6 +1683,17 @@ DtCompileIort (
|
||||
}
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
|
||||
Revision = Table->Revision;
|
||||
|
||||
/* Both IORT Rev E and E.a have known issues and are not supported */
|
||||
|
||||
if (Revision == 1 || Revision == 2)
|
||||
{
|
||||
DtError (ASL_ERROR, ASL_MSG_UNSUPPORTED, NULL, "IORT table revision");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Using ACPI_SUB_PTR, We needn't define a separate structure. Care
|
||||
* should be taken to avoid accessing ACPI_TABLE_HEADER fields.
|
||||
@ -1645,8 +1734,17 @@ DtCompileIort (
|
||||
while (*PFieldList)
|
||||
{
|
||||
SubtableStart = *PFieldList;
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortHdr,
|
||||
&Subtable);
|
||||
if (Revision == 0)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortHdr,
|
||||
&Subtable);
|
||||
}
|
||||
else if (Revision >= 3)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortHdr3,
|
||||
&Subtable);
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
@ -1864,7 +1962,46 @@ DtCompileIort (
|
||||
NodeLength += Subtable->Length;
|
||||
break;
|
||||
|
||||
default:
|
||||
case ACPI_IORT_NODE_RMR:
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort6,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
IortRmr = ACPI_CAST_PTR (ACPI_IORT_RMR, Subtable->Buffer);
|
||||
NodeLength += Subtable->Length;
|
||||
|
||||
/* Compile RMR Descriptors */
|
||||
|
||||
RmrCount = 0;
|
||||
IortRmr->RmrOffset = NodeLength;
|
||||
while (*PFieldList)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort6a,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
if (!Subtable)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
NodeLength += sizeof (ACPI_IORT_RMR_DESC);
|
||||
RmrCount++;
|
||||
}
|
||||
|
||||
IortRmr->RmrCount = RmrCount;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IORT");
|
||||
return (AE_ERROR);
|
||||
|
@ -366,6 +366,11 @@ DtCompileMadt (
|
||||
InfoTable = AcpiDmTableInfoMadt15;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_MULTIPROC_WAKEUP:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt16;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT");
|
||||
@ -858,6 +863,11 @@ DtCompilePcct (
|
||||
InfoTable = AcpiDmTableInfoPcct4;
|
||||
break;
|
||||
|
||||
case ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoPcct5;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PCCT");
|
||||
@ -939,6 +949,142 @@ DtCompilePdtt (
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: DtCompilePhat
|
||||
*
|
||||
* PARAMETERS: List - Current field list pointer
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Compile Phat.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompilePhat (
|
||||
void **List)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
DT_SUBTABLE *Subtable;
|
||||
DT_SUBTABLE *ParentTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
ACPI_PHAT_HEADER *PhatHeader;
|
||||
ACPI_DMTABLE_INFO *Info;
|
||||
ACPI_PHAT_VERSION_DATA *VersionData;
|
||||
UINT32 RecordCount;
|
||||
|
||||
|
||||
/* The table consist of subtables */
|
||||
|
||||
while (*PFieldList)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhatHdr, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
PhatHeader = ACPI_CAST_PTR (ACPI_PHAT_HEADER, Subtable->Buffer);
|
||||
|
||||
switch (PhatHeader->Type)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
Info = AcpiDmTableInfoPhat0;
|
||||
PhatHeader->Length = sizeof (ACPI_PHAT_VERSION_DATA);
|
||||
break;
|
||||
|
||||
case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
|
||||
|
||||
Info = AcpiDmTableInfoPhat1;
|
||||
PhatHeader->Length = sizeof (ACPI_PHAT_HEALTH_DATA);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, *PFieldList, "PHAT");
|
||||
return (AE_ERROR);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
Status = DtCompileTable (PFieldList, Info, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
switch (PhatHeader->Type)
|
||||
{
|
||||
case ACPI_PHAT_TYPE_FW_VERSION_DATA:
|
||||
|
||||
VersionData = ACPI_CAST_PTR (ACPI_PHAT_VERSION_DATA,
|
||||
(Subtable->Buffer - sizeof (ACPI_PHAT_HEADER)));
|
||||
RecordCount = VersionData->ElementCount;
|
||||
|
||||
while (RecordCount)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat0a,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
RecordCount--;
|
||||
PhatHeader->Length += sizeof (ACPI_PHAT_VERSION_ELEMENT);
|
||||
}
|
||||
break;
|
||||
|
||||
case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
|
||||
|
||||
/* Compile device path */
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1a, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
PhatHeader->Length += (UINT16) Subtable->Length;
|
||||
|
||||
/* Compile vendor specific data */
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1b, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
PhatHeader->Length += (UINT16) Subtable->Length;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, *PFieldList, "PHAT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: DtCompilePmtt
|
||||
@ -960,10 +1106,7 @@ DtCompilePmtt (
|
||||
DT_SUBTABLE *ParentTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_PMTT_HEADER *PmttHeader;
|
||||
ACPI_PMTT_CONTROLLER *PmttController;
|
||||
UINT16 DomainCount;
|
||||
UINT8 PrevType = ACPI_PMTT_TYPE_SOCKET;
|
||||
UINT16 Type;
|
||||
|
||||
|
||||
/* Main table */
|
||||
@ -978,41 +1121,21 @@ DtCompilePmtt (
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
/* Subtables */
|
||||
|
||||
while (*PFieldList)
|
||||
{
|
||||
SubtableStart = *PFieldList;
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttHdr,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
DtCompileInteger ((UINT8 *) &Type, *PFieldList, 2, 0);
|
||||
|
||||
PmttHeader = ACPI_CAST_PTR (ACPI_PMTT_HEADER, Subtable->Buffer);
|
||||
while (PrevType >= PmttHeader->Type)
|
||||
{
|
||||
DtPopSubtable ();
|
||||
|
||||
if (PrevType == ACPI_PMTT_TYPE_SOCKET)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
PrevType--;
|
||||
}
|
||||
|
||||
PrevType = PmttHeader->Type;
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
switch (PmttHeader->Type)
|
||||
switch (Type)
|
||||
{
|
||||
case ACPI_PMTT_TYPE_SOCKET:
|
||||
|
||||
/* Subtable: Socket Structure */
|
||||
|
||||
DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_SOCKET (0)\n");
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt0,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -1020,14 +1143,14 @@ DtCompilePmtt (
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
break;
|
||||
|
||||
case ACPI_PMTT_TYPE_CONTROLLER:
|
||||
|
||||
/* Subtable: Memory Controller Structure */
|
||||
|
||||
DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_CONTROLLER (1)\n");
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -1035,31 +1158,13 @@ DtCompilePmtt (
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER,
|
||||
(Subtable->Buffer - sizeof (ACPI_PMTT_HEADER)));
|
||||
DomainCount = PmttController->DomainCount;
|
||||
|
||||
while (DomainCount)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1a,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DomainCount--;
|
||||
}
|
||||
break;
|
||||
|
||||
case ACPI_PMTT_TYPE_DIMM:
|
||||
|
||||
/* Subtable: Physical Component Structure */
|
||||
/* Subtable: Physical Component (DIMM) Structure */
|
||||
|
||||
DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_DIMM (2)\n");
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt2,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -1067,8 +1172,20 @@ DtCompilePmtt (
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
break;
|
||||
|
||||
case ACPI_PMTT_TYPE_VENDOR:
|
||||
|
||||
/* Subtable: Vendor-specific Structure */
|
||||
|
||||
DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_VENDOR(FF)\n");
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttVendor,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1076,6 +1193,8 @@ DtCompilePmtt (
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PMTT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
}
|
||||
|
||||
return (Status);
|
||||
@ -1106,6 +1225,7 @@ DtCompilePptt (
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_TABLE_HEADER *PpttAcpiHeader;
|
||||
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
@ -1191,6 +1311,20 @@ DtCompilePptt (
|
||||
}
|
||||
break;
|
||||
|
||||
case ACPI_PPTT_TYPE_CACHE:
|
||||
|
||||
PpttAcpiHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER,
|
||||
AslGbl_RootTable->Buffer);
|
||||
if (PpttAcpiHeader->Revision < 3)
|
||||
{
|
||||
break;
|
||||
}
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPptt1a,
|
||||
&Subtable);
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
PpttHeader->Length += (UINT8)(Subtable->Length);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
@ -1336,16 +1470,20 @@ ACPI_STATUS
|
||||
DtCompileSdev (
|
||||
void **List)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_SDEV_HEADER *SdevHeader;
|
||||
DT_SUBTABLE *Subtable;
|
||||
DT_SUBTABLE *ParentTable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_SDEV_PCIE *Pcie = NULL;
|
||||
ACPI_SDEV_NAMESPACE *Namesp = NULL;
|
||||
UINT32 EntryCount;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_SDEV_HEADER *SdevHeader;
|
||||
ACPI_SDEV_HEADER *SecureComponentHeader;
|
||||
DT_SUBTABLE *Subtable;
|
||||
DT_SUBTABLE *ParentTable;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
ACPI_DMTABLE_INFO *SecureComponentInfoTable = NULL;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_SDEV_PCIE *Pcie = NULL;
|
||||
ACPI_SDEV_NAMESPACE *Namesp = NULL;
|
||||
UINT32 EntryCount;
|
||||
ACPI_SDEV_SECURE_COMPONENT *SecureComponent = NULL;
|
||||
UINT16 ComponentLength = 0;
|
||||
|
||||
|
||||
/* Subtables */
|
||||
@ -1375,6 +1513,8 @@ DtCompileSdev (
|
||||
|
||||
InfoTable = AcpiDmTableInfoSdev0;
|
||||
Namesp = ACPI_CAST_PTR (ACPI_SDEV_NAMESPACE, Subtable->Buffer);
|
||||
SecureComponent = ACPI_CAST_PTR (ACPI_SDEV_SECURE_COMPONENT,
|
||||
ACPI_ADD_PTR (UINT8, Subtable->Buffer, sizeof(ACPI_SDEV_NAMESPACE)));
|
||||
break;
|
||||
|
||||
case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE:
|
||||
@ -1406,6 +1546,86 @@ DtCompileSdev (
|
||||
{
|
||||
case ACPI_SDEV_TYPE_NAMESPACE_DEVICE:
|
||||
|
||||
/*
|
||||
* Device Id Offset will be be calculated differently depending on
|
||||
* the presence of secure access components.
|
||||
*/
|
||||
Namesp->DeviceIdOffset = 0;
|
||||
ComponentLength = 0;
|
||||
|
||||
/* If the secure access component exists, get the structures */
|
||||
|
||||
if (SdevHeader->Flags & ACPI_SDEV_SECURE_COMPONENTS_PRESENT)
|
||||
{
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev0b,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_SECURE_COMPONENT);
|
||||
|
||||
/* Compile a secure access component header */
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdevSecCompHdr,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
/* Compile the secure access component */
|
||||
|
||||
SecureComponentHeader = ACPI_CAST_PTR (ACPI_SDEV_HEADER, Subtable->Buffer);
|
||||
switch (SecureComponentHeader->Type)
|
||||
{
|
||||
case ACPI_SDEV_TYPE_ID_COMPONENT:
|
||||
|
||||
SecureComponentInfoTable = AcpiDmTableInfoSdevSecCompId;
|
||||
Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_ID_COMPONENT);
|
||||
ComponentLength = sizeof (ACPI_SDEV_ID_COMPONENT);
|
||||
break;
|
||||
|
||||
case ACPI_SDEV_TYPE_MEM_COMPONENT:
|
||||
|
||||
SecureComponentInfoTable = AcpiDmTableInfoSdevSecCompMem;
|
||||
Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_MEM_COMPONENT);
|
||||
ComponentLength = sizeof (ACPI_SDEV_MEM_COMPONENT);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Any other secure component types are undefined */
|
||||
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
Status = DtCompileTable (PFieldList, SecureComponentInfoTable,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
SecureComponent->SecureComponentOffset =
|
||||
sizeof (ACPI_SDEV_NAMESPACE) + sizeof (ACPI_SDEV_SECURE_COMPONENT);
|
||||
SecureComponent->SecureComponentLength = ComponentLength;
|
||||
|
||||
|
||||
/*
|
||||
* Add the secure component to the subtable to be added for the
|
||||
* the namespace subtable's length
|
||||
*/
|
||||
ComponentLength += sizeof (ACPI_SDEV_SECURE_COMPONENT);
|
||||
}
|
||||
|
||||
/* Append DeviceId namespace string */
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev0a,
|
||||
@ -1423,7 +1643,8 @@ DtCompileSdev (
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
Namesp->DeviceIdOffset = sizeof (ACPI_SDEV_NAMESPACE);
|
||||
Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_NAMESPACE);
|
||||
|
||||
Namesp->DeviceIdLength = (UINT16) Subtable->Length;
|
||||
|
||||
/* Append Vendor data */
|
||||
@ -1453,7 +1674,7 @@ DtCompileSdev (
|
||||
/* Final size of entire namespace structure */
|
||||
|
||||
SdevHeader->Length = (UINT16)(sizeof(ACPI_SDEV_NAMESPACE) +
|
||||
Subtable->Length + Namesp->DeviceIdLength);
|
||||
Subtable->Length + Namesp->DeviceIdLength) + ComponentLength;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2137,6 +2358,111 @@ DtCompileUefi (
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: DtCompileViot
|
||||
*
|
||||
* PARAMETERS: List - Current field list pointer
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Compile VIOT.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
DtCompileViot (
|
||||
void **List)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
DT_SUBTABLE *Subtable;
|
||||
DT_SUBTABLE *ParentTable;
|
||||
DT_FIELD **PFieldList = (DT_FIELD **) List;
|
||||
DT_FIELD *SubtableStart;
|
||||
ACPI_TABLE_VIOT *Viot;
|
||||
ACPI_VIOT_HEADER *ViotHeader;
|
||||
ACPI_DMTABLE_INFO *InfoTable;
|
||||
UINT16 NodeCount;
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoViot, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
|
||||
/*
|
||||
* Using ACPI_SUB_PTR, We needn't define a separate structure. Care
|
||||
* should be taken to avoid accessing ACPI_TABLE_HEADER fields.
|
||||
*/
|
||||
Viot = ACPI_SUB_PTR (ACPI_TABLE_VIOT, Subtable->Buffer,
|
||||
sizeof (ACPI_TABLE_HEADER));
|
||||
|
||||
Viot->NodeOffset = sizeof (ACPI_TABLE_VIOT);
|
||||
|
||||
NodeCount = 0;
|
||||
while (*PFieldList) {
|
||||
SubtableStart = *PFieldList;
|
||||
Status = DtCompileTable (PFieldList, AcpiDmTableInfoViotHeader,
|
||||
&Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPushSubtable (Subtable);
|
||||
|
||||
ViotHeader = ACPI_CAST_PTR (ACPI_VIOT_HEADER, Subtable->Buffer);
|
||||
|
||||
switch (ViotHeader->Type)
|
||||
{
|
||||
case ACPI_VIOT_NODE_PCI_RANGE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot1;
|
||||
break;
|
||||
|
||||
case ACPI_VIOT_NODE_MMIO:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot2;
|
||||
break;
|
||||
|
||||
case ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot3;
|
||||
break;
|
||||
|
||||
case ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO:
|
||||
|
||||
InfoTable = AcpiDmTableInfoViot4;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "VIOT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
||||
Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
ParentTable = DtPeekSubtable ();
|
||||
DtInsertSubtable (ParentTable, Subtable);
|
||||
DtPopSubtable ();
|
||||
NodeCount++;
|
||||
}
|
||||
|
||||
Viot->NodeCount = NodeCount;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: DtCompileWdat
|
||||
|
@ -204,6 +204,27 @@ const unsigned char TemplateBoot[] =
|
||||
0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00 /* 00000020 "(.. ...." */
|
||||
};
|
||||
|
||||
const unsigned char TemplateCedt[] =
|
||||
{
|
||||
0x43,0x45,0x44,0x54,0x84,0x00,0x00,0x00, /* 00000000 "CEDT...." */
|
||||
0x01,0x8B,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x05,0x01,0x21,0x20,0x00,0x00,0x20,0x00, /* 00000020 "..! .. ." */
|
||||
0x33,0x33,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000028 "33......" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xD5, /* 00000030 ".....!C." */
|
||||
0x00,0x00,0x00,0x00,0x45,0x23,0x01,0x00, /* 00000038 "....E#.." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, /* 00000040 "...... ." */
|
||||
0x44,0x44,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000048 "DD......" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xA5, /* 00000050 ".....!C." */
|
||||
0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00, /* 00000058 "....E#.." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, /* 00000060 "...... ." */
|
||||
0x55,0x55,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000068 "UU......" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xB5, /* 00000070 ".....!C." */
|
||||
0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00, /* 00000078 "....E#.." */
|
||||
0x00,0x00,0x00,0x00 /* 00000080 "...." */
|
||||
};
|
||||
|
||||
const unsigned char TemplateCpep[] =
|
||||
{
|
||||
0x43,0x50,0x45,0x50,0x34,0x00,0x00,0x00, /* 00000000 "CPEP4..." */
|
||||
@ -697,39 +718,39 @@ const unsigned char TemplateHpet[] =
|
||||
|
||||
const unsigned char TemplateIort[] =
|
||||
{
|
||||
0x49,0x4F,0x52,0x54,0xF8,0x01,0x00,0x00, /* 00000000 "IORT...." */
|
||||
0x00,0x72,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".rINTEL " */
|
||||
0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00, /* 00000000 "IORT<..." */
|
||||
0x03,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x13,0x03,0x18,0x20,0x06,0x00,0x00,0x00, /* 00000020 "... ...." */
|
||||
0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00, /* 00000020 "..! ...." */
|
||||
0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "4......." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00, /* 00000030 "........" */
|
||||
0x49,0x4F,0x52,0x54,0x00,0x18,0x00,0x01, /* 00000030 "IORT...." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000040 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00, /* 00000048 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x04, /* 00000048 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000050 "........" */
|
||||
0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "l......." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */
|
||||
0x00,0x5C,0x5F,0x53,0x42,0x2E,0x50,0x43, /* 00000068 ".\_SB.PC" */
|
||||
0x49,0x30,0x2E,0x44,0x45,0x56,0x30,0x00, /* 00000070 "I0.DEV0." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */
|
||||
0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00, /* 00000078 "IORT<..." */
|
||||
0x03,0xF2,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000080 "..INTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000088 "Template" */
|
||||
0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000090 "....INTL" */
|
||||
0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00, /* 00000098 "..! ...." */
|
||||
0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "4......." */
|
||||
0x49,0x4F,0x52,0x54,0x00,0x18,0x00,0x01, /* 000000A8 "IORT...." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x00, /* 000000C8 ".....8.." */
|
||||
0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x03, /* 000000C8 ".....8.." */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000D0 "........" */
|
||||
0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "$......." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x03,0x60,0x00,0x01, /* 00000100 ".....`.." */
|
||||
0x00,0x00,0x00,0x00,0x03,0x60,0x00,0x03, /* 00000100 ".....`.." */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000108 "........" */
|
||||
0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "L......." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */
|
||||
@ -741,7 +762,7 @@ const unsigned char TemplateIort[] =
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "........" */
|
||||
0x00,0x00,0x00,0x00,0x04,0x58,0x00,0x01, /* 00000160 ".....X.." */
|
||||
0x00,0x00,0x00,0x00,0x04,0x58,0x00,0x04, /* 00000160 ".....X.." */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000168 "........" */
|
||||
0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000170 "D......." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */
|
||||
@ -752,14 +773,23 @@ const unsigned char TemplateIort[] =
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x05,0x3C,0x00,0x01, /* 000001B8 ".....<.." */
|
||||
0x00,0x00,0x00,0x00,0x05,0x3C,0x00,0x02, /* 000001B8 ".....<.." */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001C0 "........" */
|
||||
0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C8 "(......." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00 /* 000001F0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001F0 "........" */
|
||||
0x06,0x44,0x00,0x01,0x00,0x00,0x00,0x00, /* 000001F8 ".D......" */
|
||||
0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00, /* 00000200 "....0..." */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000208 "........" */
|
||||
0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000210 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000218 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000220 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000230 "........" */
|
||||
0x01,0x00,0x00,0x00 /* 00000238 "...." */
|
||||
};
|
||||
|
||||
const unsigned char TemplateIvrs[] =
|
||||
@ -817,11 +847,11 @@ const unsigned char TemplateLpit[] =
|
||||
|
||||
const unsigned char TemplateMadt[] =
|
||||
{
|
||||
0x41,0x50,0x49,0x43,0x5A,0x01,0x00,0x00, /* 00000000 "APICZ..." */
|
||||
0x05,0xEF,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x41,0x50,0x49,0x43,0x6A,0x01,0x00,0x00, /* 00000000 "APICj..." */
|
||||
0x05,0x9D,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */
|
||||
0x13,0x11,0x20,0x20,0x00,0x00,0x00,0x00, /* 00000020 ".. ...." */
|
||||
0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 00000028 "........" */
|
||||
0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00, /* 00000030 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
|
||||
@ -860,7 +890,9 @@ const unsigned char TemplateMadt[] =
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x14, /* 00000140 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */
|
||||
0x00,0x00 /* 00000158 ".." */
|
||||
0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00, /* 00000158 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */
|
||||
0x00,0x00 /* 00000168 ".." */
|
||||
};
|
||||
|
||||
const unsigned char TemplateMcfg[] =
|
||||
@ -956,91 +988,92 @@ const unsigned char TemplateMsct[] =
|
||||
|
||||
const unsigned char TemplateNfit[] =
|
||||
{
|
||||
0x4E,0x46,0x49,0x54,0x80,0x01,0x00,0x00, /* 00000000 "NFIT...." */
|
||||
0x01,0x07,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x4E,0x46,0x49,0x54,0x88,0x01,0x00,0x00, /* 00000000 "NFIT...." */
|
||||
0x01,0x81,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x29,0x09,0x17,0x20,0x00,0x00,0x00,0x00, /* 00000020 ").. ...." */
|
||||
0x00,0x00,0x38,0x00,0x01,0x00,0x00,0x00, /* 00000028 "..8....." */
|
||||
0x13,0x11,0x20,0x20,0x00,0x00,0x00,0x00, /* 00000020 ".. ...." */
|
||||
0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00, /* 00000028 "..@....." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
|
||||
0x30,0x05,0xAF,0x91,0x86,0x5D,0x0E,0x47, /* 00000038 "0....].G" */
|
||||
0xA6,0xB0,0x0A,0x2D,0xB9,0x40,0x82,0x49, /* 00000040 "...-.@.I" */
|
||||
0x00,0x00,0x00,0x7C,0x03,0x00,0x00,0x00, /* 00000048 "...|...." */
|
||||
0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00, /* 00000050 "........" */
|
||||
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */
|
||||
0x01,0x00,0x30,0x00,0x01,0x00,0x00,0x00, /* 00000060 "..0....." */
|
||||
0x04,0x00,0x00,0x00,0x01,0x00,0x01,0x00, /* 00000068 "........" */
|
||||
0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, /* 00000070 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */
|
||||
0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, /* 00000080 "........" */
|
||||
0x01,0x00,0x03,0x00,0x2A,0x00,0x00,0x00, /* 00000088 "....*..." */
|
||||
0x02,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000090 ".. ....." */
|
||||
0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /* 00000098 "........" */
|
||||
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000A0 "........" */
|
||||
0x06,0x00,0x00,0x00,0x09,0x00,0x00,0x00, /* 000000A8 "........" */
|
||||
0x03,0x00,0x28,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "..(....." */
|
||||
0xB4,0x13,0x5D,0x40,0x91,0x0B,0x29,0x93, /* 000000B8 "..]@..)." */
|
||||
0x67,0xE8,0x23,0x4C,0x00,0x00,0x00,0x88, /* 000000C0 "g.#L...." */
|
||||
0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, /* 000000C8 ".."3DUfw" */
|
||||
0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF, /* 000000D0 "........" */
|
||||
0x04,0x00,0x50,0x00,0x01,0x00,0x86,0x80, /* 000000D8 "..P....." */
|
||||
0x17,0x20,0x01,0x00,0x86,0x80,0x17,0x20, /* 000000E0 ". ..... " */
|
||||
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */
|
||||
0x89,0x00,0x54,0x76,0x01,0x03,0x00,0x01, /* 000000F0 "..Tv...." */
|
||||
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 ". ......" */
|
||||
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */
|
||||
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */
|
||||
0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */
|
||||
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */
|
||||
0x05,0x00,0x28,0x00,0x01,0x00,0x00,0x01, /* 00000128 "..(....." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */
|
||||
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 ". ......" */
|
||||
0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00, /* 00000140 "........" */
|
||||
0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00, /* 00000148 "........" */
|
||||
0x06,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000150 ".. ....." */
|
||||
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "........" */
|
||||
0x00,0x00,0x00,0x18,0x04,0x00,0x00,0x00, /* 00000160 "........" */
|
||||
0x00,0x00,0x00,0x18,0x06,0x00,0x00,0x00, /* 00000168 "........" */
|
||||
0x07,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000170 "........" */
|
||||
0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000178 "........" */
|
||||
0x00,0xEF,0xCD,0xAB,0x78,0x56,0x34,0x12, /* 00000060 "....xV4." */
|
||||
0x01,0x00,0x30,0x00,0x01,0x00,0x00,0x00, /* 00000068 "..0....." */
|
||||
0x04,0x00,0x00,0x00,0x01,0x00,0x01,0x00, /* 00000070 "........" */
|
||||
0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, /* 00000078 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */
|
||||
0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, /* 00000088 "........" */
|
||||
0x01,0x00,0x03,0x00,0x2A,0x00,0x00,0x00, /* 00000090 "....*..." */
|
||||
0x02,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000098 ".. ....." */
|
||||
0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /* 000000A0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000A8 "........" */
|
||||
0x06,0x00,0x00,0x00,0x09,0x00,0x00,0x00, /* 000000B0 "........" */
|
||||
0x03,0x00,0x28,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "..(....." */
|
||||
0xB4,0x13,0x5D,0x40,0x91,0x0B,0x29,0x93, /* 000000C0 "..]@..)." */
|
||||
0x67,0xE8,0x23,0x4C,0x00,0x00,0x00,0x88, /* 000000C8 "g.#L...." */
|
||||
0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, /* 000000D0 ".."3DUfw" */
|
||||
0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF, /* 000000D8 "........" */
|
||||
0x04,0x00,0x50,0x00,0x01,0x00,0x86,0x80, /* 000000E0 "..P....." */
|
||||
0x17,0x20,0x01,0x00,0x86,0x80,0x17,0x20, /* 000000E8 ". ..... " */
|
||||
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */
|
||||
0x89,0x00,0x54,0x76,0x01,0x03,0x00,0x01, /* 000000F8 "..Tv...." */
|
||||
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 ". ......" */
|
||||
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */
|
||||
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */
|
||||
0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */
|
||||
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */
|
||||
0x05,0x00,0x28,0x00,0x01,0x00,0x00,0x01, /* 00000130 "..(....." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 "........" */
|
||||
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 ". ......" */
|
||||
0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00, /* 00000148 "........" */
|
||||
0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00, /* 00000150 "........" */
|
||||
0x06,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000158 ".. ....." */
|
||||
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */
|
||||
0x00,0x00,0x00,0x18,0x04,0x00,0x00,0x00, /* 00000168 "........" */
|
||||
0x00,0x00,0x00,0x18,0x06,0x00,0x00,0x00, /* 00000170 "........" */
|
||||
0x07,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */
|
||||
0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000180 "........" */
|
||||
};
|
||||
|
||||
const unsigned char TemplatePcct[] =
|
||||
{
|
||||
0x50,0x43,0x43,0x54,0x4e,0x02,0x00,0x00, /* 00000000 "PCCTN..." */
|
||||
0x01,0x47,0x49,0x4e,0x54,0x45,0x4c,0x20, /* 00000008 ".GINTEL " */
|
||||
0x54,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c, /* 00000018 "....INTL" */
|
||||
0x03,0x03,0x17,0x20,0x01,0x00,0x00,0x00, /* 00000020 "... ...." */
|
||||
0x50,0x43,0x43,0x54,0xAE,0x02,0x00,0x00, /* 00000000 "PCCT...." */
|
||||
0x01,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x25,0x09,0x20,0x20,0x01,0x00,0x00,0x00, /* 00000020 "%. ...." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
|
||||
0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 ".>......" */
|
||||
0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 ".>......" */
|
||||
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, /* 00000038 "........" */
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, /* 00000040 """""""""" */
|
||||
0x01,0x32,0x00,0x03,0x33,0x33,0x33,0x33, /* 00000048 ".2..3333" */
|
||||
0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, /* 00000050 "3333DDDD" */
|
||||
0x44,0x44,0x44,0x44,0x55,0x55,0x55,0x55, /* 00000058 "DDDDUUUU" */
|
||||
0x55,0x55,0x55,0x55,0x66,0x66,0x66,0x66, /* 00000060 "UUUUffff" */
|
||||
0x77,0x77,0x77,0x77,0x88,0x88,0x01,0x3e, /* 00000068 "wwww...>" */
|
||||
0x77,0x77,0x77,0x77,0x88,0x88,0x01,0x3E, /* 00000068 "wwww...>" */
|
||||
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000070 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x32, /* 00000080 ".......2" */
|
||||
0x00,0x03,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000088 "..DDDDDD" */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000090 "DDDDDDDD" */
|
||||
0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55, /* 00000098 "DDUUUUUU" */
|
||||
0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000000a0 "UUffffww" */
|
||||
0x77,0x77,0x88,0x88,0x02,0x5a,0x01,0x00, /* 000000a8 "ww...Z.." */
|
||||
0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000b0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000b8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x32,0x00,0x03, /* 000000c0 ".....2.." */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000c8 "DDDDDDDD" */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000d0 "DDDDDDDD" */
|
||||
0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, /* 000000d8 "UUUUUUUU" */
|
||||
0x66,0x66,0x66,0x66,0x77,0x77,0x77,0x77, /* 000000e0 "ffffwwww" */
|
||||
0x88,0x88,0x01,0x32,0x00,0x03,0x33,0x33, /* 000000e8 "...2..33" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x44,0x44, /* 000000f0 "333333DD" */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x55,0x55, /* 000000f8 "DDDDDDUU" */
|
||||
0x55,0x55,0x55,0x55,0x55,0x55,0x03,0xa4, /* 00000100 "UUUUUU.." */
|
||||
0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000000A0 "UUffffww" */
|
||||
0x77,0x77,0x88,0x88,0x02,0x5A,0x01,0x00, /* 000000A8 "ww...Z.." */
|
||||
0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x32,0x00,0x03, /* 000000C0 ".....2.." */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000C8 "DDDDDDDD" */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000D0 "DDDDDDDD" */
|
||||
0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, /* 000000D8 "UUUUUUUU" */
|
||||
0x66,0x66,0x66,0x66,0x77,0x77,0x77,0x77, /* 000000E0 "ffffwwww" */
|
||||
0x88,0x88,0x01,0x32,0x00,0x03,0x33,0x33, /* 000000E8 "...2..33" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x44,0x44, /* 000000F0 "333333DD" */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x55,0x55, /* 000000F8 "DDDDDDUU" */
|
||||
0x55,0x55,0x55,0x55,0x55,0x55,0x03,0xA4, /* 00000100 "UUUUUU.." */
|
||||
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000108 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */
|
||||
0x00,0x00,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000118 "...2..33" */
|
||||
@ -1060,18 +1093,18 @@ const unsigned char TemplatePcct[] =
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x44,0x44, /* 00000188 "333333DD" */
|
||||
0x44,0x44,0x44,0x44,0x44,0x44,0x01,0x32, /* 00000190 "DDDDDD.2" */
|
||||
0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000198 "..333333" */
|
||||
0x33,0x33,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001a0 "33UUUUUU" */
|
||||
0x55,0x55,0x04,0xa4,0x01,0x00,0x00,0x00, /* 000001a8 "UU......" */
|
||||
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001b0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x32, /* 000001b8 ".......2" */
|
||||
0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001c0 "..333333" */
|
||||
0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 000001c8 "33DDDDDD" */
|
||||
0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001d0 "DDUUUUUU" */
|
||||
0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000001d8 "UUffffww" */
|
||||
0x77,0x77,0x88,0x88,0x88,0x88,0x01,0x32, /* 000001e0 "ww.....2" */
|
||||
0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001e8 "..333333" */
|
||||
0x33,0x33,0x99,0x99,0x99,0x99,0x99,0x99, /* 000001f0 "33......" */
|
||||
0x99,0x99,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001f8 "........" */
|
||||
0x33,0x33,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001A0 "33UUUUUU" */
|
||||
0x55,0x55,0x04,0xA4,0x01,0x00,0x00,0x00, /* 000001A8 "UU......" */
|
||||
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B0 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x32, /* 000001B8 ".......2" */
|
||||
0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001C0 "..333333" */
|
||||
0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 000001C8 "33DDDDDD" */
|
||||
0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001D0 "DDUUUUUU" */
|
||||
0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000001D8 "UUffffww" */
|
||||
0x77,0x77,0x88,0x88,0x88,0x88,0x01,0x32, /* 000001E0 "ww.....2" */
|
||||
0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001E8 "..333333" */
|
||||
0x33,0x33,0x99,0x99,0x99,0x99,0x99,0x99, /* 000001F0 "33......" */
|
||||
0x99,0x99,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000200 "........" */
|
||||
0x00,0x00,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000208 "...2..33" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x22,0x22, /* 00000210 "333333""" */
|
||||
@ -1081,7 +1114,19 @@ const unsigned char TemplatePcct[] =
|
||||
0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000230 "33DDDDDD" */
|
||||
0x44,0x44,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000238 "DD.2..33" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x55,0x55, /* 00000240 "333333UU" */
|
||||
0x55,0x55,0x55,0x55,0x55,0x55 /* 00000248 "UUUUUU| */
|
||||
0x55,0x55,0x55,0x55,0x55,0x55,0x05,0x60, /* 00000248 "UUUUUU.`" */
|
||||
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000250 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000258 "........" */
|
||||
0x00,0x00,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000260 "...2..33" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000268 "33333333" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000270 "33333333" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x01,0x32, /* 00000278 "333333.2" */
|
||||
0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000280 "..333333" */
|
||||
0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000288 "33DDDDDD" */
|
||||
0x44,0x44,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000290 "DD.2..33" */
|
||||
0x33,0x33,0x33,0x33,0x33,0x33,0x55,0x55, /* 00000298 "333333UU" */
|
||||
0x55,0x55,0x55,0x55,0x55,0x55,0x03,0x00, /* 000002A0 "UUUUUU.." */
|
||||
0x00,0x00,0x05,0x00,0x00,0x00 /* 000002A8 "......" */
|
||||
};
|
||||
|
||||
const unsigned char TemplatePdtt[] =
|
||||
@ -1095,31 +1140,50 @@ const unsigned char TemplatePdtt[] =
|
||||
0xCC,0x01,0xDD,0x00 /* 00000030 "...." */
|
||||
};
|
||||
|
||||
const unsigned char TemplatePhat [] =
|
||||
{
|
||||
0x50,0x48,0x41,0x54,0x6F,0x00,0x00,0x00, /* 00000000 "PHATo..." */
|
||||
0x01,0xC7,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x05,0x01,0x21,0x20,0x00,0x00,0x28,0x00, /* 00000020 "..! ..(." */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */
|
||||
0x30,0x05,0xAF,0x91,0x86,0x5D,0x0E,0x47, /* 00000030 "0....].G" */
|
||||
0xA6,0xB0,0x0A,0x2D,0xB9,0x40,0x82,0x49, /* 00000038 "...-.@.I" */
|
||||
0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01, /* 00000040 "........" */
|
||||
0x0C,0x0B,0x0A,0x09,0x01,0x00,0x23,0x00, /* 00000048 "......#." */
|
||||
0x00,0x00,0x00,0x00,0x30,0x05,0xAF,0x91, /* 00000050 "....0..." */
|
||||
0x86,0x5D,0x0E,0x47,0xA6,0xB0,0x0A,0x2D, /* 00000058 ".].G...-" */
|
||||
0xB9,0x40,0x82,0x49,0x00,0x00,0x00,0x00, /* 00000060 ".@.I...." */
|
||||
0x61,0x73,0x64,0x66,0x00,0xFF,0x11 /* 00000068 "asdf..." */
|
||||
};
|
||||
|
||||
const unsigned char TemplatePmtt[] =
|
||||
{
|
||||
0x50,0x4D,0x54,0x54,0xB4,0x00,0x00,0x00, /* 00000000 "PMTT...." */
|
||||
0x01,0x3A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".:INTEL " */
|
||||
0x50,0x4D,0x54,0x54,0xBB,0x00,0x00,0x00, /* 00000000 "PMTT...." */
|
||||
0x02,0x2E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
|
||||
0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x26,0x08,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "&.. ...." */
|
||||
0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x54,0x00, /* 00000030 "......T." */
|
||||
0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */
|
||||
0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */
|
||||
0x02,0x00,0x14,0x00,0x02,0x00,0x00,0x00, /* 00000060 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */
|
||||
0x00,0x00,0x00,0x00,0x02,0x00,0x14,0x00, /* 00000070 "........" */
|
||||
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */
|
||||
0x01,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000088 ".. ....." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */
|
||||
0x00,0x00,0x0C,0x00,0x01,0x00,0x00,0x00, /* 000000A8 "........" */
|
||||
0x00,0x00,0x00,0x00 /* 000000B0 "...." */
|
||||
0x05,0x01,0x21,0x20,0x08,0x00,0x00,0x00, /* 00000020 "..! ...." */
|
||||
0x00,0x00,0x10,0x00,0x0D,0x00,0x00,0x00, /* 00000028 "........" */
|
||||
0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */
|
||||
0x01,0x00,0x10,0x00,0x04,0x00,0x00,0x00, /* 00000038 "........" */
|
||||
0x02,0x00,0x00,0x00,0x44,0x44,0x00,0x00, /* 00000040 "....DD.." */
|
||||
0x02,0x00,0x10,0x00,0x04,0x00,0x00,0x00, /* 00000048 "........" */
|
||||
0x01,0x00,0x00,0x00,0x78,0x56,0x34,0x12, /* 00000050 "....xV4." */
|
||||
0xFF,0x00,0x23,0x00,0x0D,0x00,0x00,0x00, /* 00000058 "..#....." */
|
||||
0x03,0x00,0x00,0x00,0x03,0x02,0x01,0x00, /* 00000060 "........" */
|
||||
0x08,0x04,0x07,0x06,0x08,0x09,0x0A,0x0B, /* 00000068 "........" */
|
||||
0x0C,0x0D,0x0E,0x0F,0x55,0x66,0x77,0x88, /* 00000070 "....Ufw." */
|
||||
0x11,0xAA,0xBB,0x00,0x00,0x10,0x00,0x0D, /* 00000078 "........" */
|
||||
0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01, /* 00000080 "........" */
|
||||
0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x00, /* 00000088 "........" */
|
||||
0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, /* 00000090 "........" */
|
||||
0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x04, /* 00000098 "........" */
|
||||
0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x78, /* 000000A0 ".......x" */
|
||||
0x56,0x34,0x12,0x02,0x00,0x10,0x00,0x04, /* 000000A8 "V4......" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78, /* 000000B0 ".......x" */
|
||||
0x56,0x34,0x12 /* 000000B8 "V4." */
|
||||
};
|
||||
|
||||
const unsigned char TemplatePptt[] =
|
||||
@ -1205,21 +1269,24 @@ const unsigned char TemplateSdei[] =
|
||||
|
||||
const unsigned char TemplateSdev[] =
|
||||
{
|
||||
0x53,0x44,0x45,0x56,0x72,0x00,0x00,0x00, /* 00000000 "SDEVr..." */
|
||||
0x01,0x2F,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "./INTEL " */
|
||||
0x53,0x44,0x45,0x56,0x89,0x00,0x00,0x00, /* 00000000 "SDEV...." */
|
||||
0x01,0x6E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".nINTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x31,0x08,0x17,0x20,0x00,0x01,0x2A,0x00, /* 00000020 "1.. ..*." */
|
||||
0x0C,0x00,0x16,0x00,0x22,0x00,0x08,0x00, /* 00000028 "...."..." */
|
||||
0x5C,0x5C,0x5F,0x53,0x42,0x5F,0x2E,0x50, /* 00000030 "\\_SB_.P" */
|
||||
0x43,0x49,0x30,0x2E,0x55,0x53,0x42,0x31, /* 00000038 "CI0.USB1" */
|
||||
0x2E,0x53,0x55,0x42,0x31,0x00,0x00,0x11, /* 00000040 ".SUB1..." */
|
||||
0x22,0x33,0x44,0x55,0x66,0x77,0x01,0x01, /* 00000048 ""3DUfw.." */
|
||||
0x24,0x00,0x10,0x00,0x20,0x00,0x10,0x00, /* 00000050 "$... ..." */
|
||||
0x04,0x00,0x14,0x00,0x10,0x00,0x11,0x22, /* 00000058 "......."" */
|
||||
0x33,0x44,0xEE,0xDD,0xCC,0xBB,0xAA,0x55, /* 00000060 "3D.....U" */
|
||||
0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD, /* 00000068 "fw......" */
|
||||
0xEE,0xFF /* 00000070 ".." */
|
||||
0x05,0x01,0x21,0x20,0x00,0x03,0x41,0x00, /* 00000020 "..! ..A." */
|
||||
0x23,0x00,0x16,0x00,0x39,0x00,0x08,0x00, /* 00000028 "#...9..." */
|
||||
0x10,0x00,0x13,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
|
||||
0x01,0x00,0x03,0x02,0x05,0x04,0x07,0x06, /* 00000038 "........" */
|
||||
0x09,0x08,0x0A,0x0B,0x0C,0x0D,0x0E,0x5C, /* 00000040 ".......\" */
|
||||
0x5C,0x5F,0x53,0x42,0x5F,0x2E,0x50,0x43, /* 00000048 "\_SB_.PC" */
|
||||
0x49,0x30,0x2E,0x55,0x53,0x42,0x31,0x2E, /* 00000050 "I0.USB1." */
|
||||
0x53,0x55,0x42,0x31,0x00,0x00,0x11,0x22, /* 00000058 "SUB1..."" */
|
||||
0x33,0x44,0x55,0x66,0x77,0x01,0x01,0x24, /* 00000060 "3DUfw..$" */
|
||||
0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x04, /* 00000068 "... ...." */
|
||||
0x00,0x14,0x00,0x10,0x00,0x11,0x22,0x33, /* 00000070 "......"3" */
|
||||
0x44,0xEE,0xDD,0xCC,0xBB,0xAA,0x55,0x66, /* 00000078 "D.....Uf" */
|
||||
0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE, /* 00000080 "w......." */
|
||||
0xFF /* 00000088 "." */
|
||||
};
|
||||
|
||||
const unsigned char TemplateSlic[] =
|
||||
@ -1450,6 +1517,26 @@ const unsigned char TemplateUefi[] =
|
||||
0x0C,0x0D,0x0E,0x0F,0x00,0x00 /* 00000030 "......" */
|
||||
};
|
||||
|
||||
const unsigned char TemplateViot[] =
|
||||
{
|
||||
0x56,0x49,0x4F,0x54,0x80,0x00,0x00,0x00, /* 00000000 "VIOT...." */
|
||||
0x00,0x52,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".RINTEL " */
|
||||
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
|
||||
0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
|
||||
0x05,0x01,0x21,0x20,0x04,0x00,0x30,0x00, /* 00000020 "..! ..0." */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
|
||||
0x01,0x00,0x18,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, /* 00000038 "........" */
|
||||
0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "`......." */
|
||||
0x02,0x00,0x18,0x00,0x00,0x00,0x01,0x00, /* 00000048 "........" */
|
||||
0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00, /* 00000050 "........" */
|
||||
0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "p......." */
|
||||
0x03,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */
|
||||
0x04,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */
|
||||
0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00 /* 00000078 "........" */
|
||||
};
|
||||
|
||||
const unsigned char TemplateWaet[] =
|
||||
{
|
||||
0x57,0x41,0x45,0x54,0x28,0x00,0x00,0x00, /* 00000000 "WAET(..." */
|
||||
|
@ -438,6 +438,7 @@ DtGetFieldType (
|
||||
case ACPI_DMT_BUF16:
|
||||
case ACPI_DMT_BUF128:
|
||||
case ACPI_DMT_PCI_PATH:
|
||||
case ACPI_DMT_PMTT_VENDOR:
|
||||
|
||||
Type = DT_FIELD_TYPE_BUFFER;
|
||||
break;
|
||||
@ -573,6 +574,7 @@ DtGetFieldLength (
|
||||
case ACPI_DMT_CHKSUM:
|
||||
case ACPI_DMT_SPACEID:
|
||||
case ACPI_DMT_ACCWIDTH:
|
||||
case ACPI_DMT_CEDT:
|
||||
case ACPI_DMT_IVRS:
|
||||
case ACPI_DMT_GTDT:
|
||||
case ACPI_DMT_MADT:
|
||||
@ -589,6 +591,7 @@ DtGetFieldLength (
|
||||
case ACPI_DMT_ERSTACT:
|
||||
case ACPI_DMT_ERSTINST:
|
||||
case ACPI_DMT_DMAR_SCOPE:
|
||||
case ACPI_DMT_VIOT:
|
||||
|
||||
ByteLength = 1;
|
||||
break;
|
||||
@ -599,6 +602,7 @@ DtGetFieldLength (
|
||||
case ACPI_DMT_HMAT:
|
||||
case ACPI_DMT_NFIT:
|
||||
case ACPI_DMT_PCI_PATH:
|
||||
case ACPI_DMT_PHAT:
|
||||
|
||||
ByteLength = 2;
|
||||
break;
|
||||
@ -673,6 +677,7 @@ DtGetFieldLength (
|
||||
|
||||
case ACPI_DMT_BUFFER:
|
||||
case ACPI_DMT_RAW_BUFFER:
|
||||
case ACPI_DMT_PMTT_VENDOR:
|
||||
|
||||
Value = DtGetFieldValue (Field);
|
||||
if (Value)
|
||||
|
@ -159,6 +159,13 @@
|
||||
|
||||
/* Local prototypes */
|
||||
|
||||
static void
|
||||
AcpiDmCsi2SerialBusDescriptor (
|
||||
ACPI_OP_WALK_INFO *Info,
|
||||
AML_RESOURCE *Resource,
|
||||
UINT32 Length,
|
||||
UINT32 Level);
|
||||
|
||||
static void
|
||||
AcpiDmI2cSerialBusDescriptor (
|
||||
ACPI_OP_WALK_INFO *Info,
|
||||
@ -200,7 +207,8 @@ static ACPI_RESOURCE_HANDLER SerialBusResourceDispatch [] =
|
||||
NULL,
|
||||
AcpiDmI2cSerialBusDescriptor,
|
||||
AcpiDmSpiSerialBusDescriptor,
|
||||
AcpiDmUartSerialBusDescriptor
|
||||
AcpiDmUartSerialBusDescriptor,
|
||||
AcpiDmCsi2SerialBusDescriptor
|
||||
};
|
||||
|
||||
|
||||
@ -676,6 +684,15 @@ AcpiDmDumpSerialBusVendorData (
|
||||
sizeof (AML_RESOURCE_UART_SERIALBUS));
|
||||
break;
|
||||
|
||||
case AML_RESOURCE_CSI2_SERIALBUSTYPE:
|
||||
|
||||
VendorLength = Resource->CommonSerialBus.TypeDataLength -
|
||||
AML_RESOURCE_CSI2_MIN_DATA_LEN;
|
||||
|
||||
VendorData = ACPI_ADD_PTR (UINT8, Resource,
|
||||
sizeof (AML_RESOURCE_CSI2_SERIALBUS));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
@ -687,6 +704,75 @@ AcpiDmDumpSerialBusVendorData (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmCsi2SerialBusDescriptor
|
||||
*
|
||||
* PARAMETERS: Info - Extra resource info
|
||||
* Resource - Pointer to the resource descriptor
|
||||
* Length - Length of the descriptor in bytes
|
||||
* Level - Current source code indentation level
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Decode a CSI2 serial bus descriptor
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
AcpiDmCsi2SerialBusDescriptor (
|
||||
ACPI_OP_WALK_INFO *Info,
|
||||
AML_RESOURCE *Resource,
|
||||
UINT32 Length,
|
||||
UINT32 Level)
|
||||
{
|
||||
UINT32 ResourceSourceOffset;
|
||||
char *DeviceName;
|
||||
|
||||
|
||||
/* SlaveMode, PhyType, LocalPortInstance */
|
||||
|
||||
AcpiDmIndent (Level);
|
||||
AcpiOsPrintf ("Csi2Bus (%s,",
|
||||
AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->Csi2SerialBus.Flags)]);
|
||||
|
||||
AcpiOsPrintf (" 0x%2.2X, 0x%2.2X,\n",
|
||||
Resource->Csi2SerialBus.TypeSpecificFlags & 0x03,
|
||||
Resource->Csi2SerialBus.TypeSpecificFlags & 0xFC);
|
||||
|
||||
/* ResourceSource is a required field */
|
||||
|
||||
ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) +
|
||||
Resource->CommonSerialBus.TypeDataLength;
|
||||
|
||||
AcpiDmIndent (Level + 1);
|
||||
DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset);
|
||||
AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX);
|
||||
|
||||
/* ResourceSourceIndex, ResourceUsage */
|
||||
|
||||
AcpiOsPrintf (",\n");
|
||||
AcpiDmIndent (Level + 1);
|
||||
AcpiOsPrintf ("0x%2.2X, ", Resource->Csi2SerialBus.ResSourceIndex);
|
||||
|
||||
AcpiOsPrintf ("%s, ",
|
||||
AcpiGbl_ConsumeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Csi2SerialBus.Flags, 1)]);
|
||||
|
||||
/* Insert a descriptor name */
|
||||
|
||||
AcpiDmDescriptorName ();
|
||||
|
||||
/* Dump the vendor data */
|
||||
|
||||
AcpiOsPrintf (",\n");
|
||||
AcpiDmIndent (Level + 1);
|
||||
AcpiDmDumpSerialBusVendorData (Resource, Level);
|
||||
AcpiOsPrintf (")\n");
|
||||
|
||||
MpSaveSerialInfo (Info->MappingOp, Resource, DeviceName);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmI2cSerialBusDescriptor
|
||||
@ -947,7 +1033,7 @@ AcpiDmUartSerialBusDescriptor (
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Decode a I2C/SPI/UART serial bus descriptor
|
||||
* DESCRIPTION: Decode a I2C/SPI/UART/CSI2 serial bus descriptor
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -677,6 +677,13 @@ AcpiEvInstallSpaceHandler (
|
||||
|
||||
/* Init handler obj */
|
||||
|
||||
Status = AcpiOsCreateMutex (&HandlerObj->AddressSpace.ContextMutex);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiUtRemoveReference (HandlerObj);
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
HandlerObj->AddressSpace.SpaceId = (UINT8) SpaceId;
|
||||
HandlerObj->AddressSpace.HandlerFlags = Flags;
|
||||
HandlerObj->AddressSpace.RegionList = NULL;
|
||||
|
@ -270,6 +270,8 @@ AcpiEvAddressSpaceDispatch (
|
||||
ACPI_OPERAND_OBJECT *RegionObj2;
|
||||
void *RegionContext = NULL;
|
||||
ACPI_CONNECTION_INFO *Context;
|
||||
ACPI_MUTEX ContextMutex;
|
||||
BOOLEAN ContextLocked;
|
||||
ACPI_PHYSICAL_ADDRESS Address;
|
||||
|
||||
|
||||
@ -296,6 +298,8 @@ AcpiEvAddressSpaceDispatch (
|
||||
}
|
||||
|
||||
Context = HandlerDesc->AddressSpace.Context;
|
||||
ContextMutex = HandlerDesc->AddressSpace.ContextMutex;
|
||||
ContextLocked = FALSE;
|
||||
|
||||
/*
|
||||
* It may be the case that the region has never been initialized.
|
||||
@ -362,43 +366,6 @@ AcpiEvAddressSpaceDispatch (
|
||||
Handler = HandlerDesc->AddressSpace.Handler;
|
||||
Address = (RegionObj->Region.Address + RegionOffset);
|
||||
|
||||
/*
|
||||
* Special handling for GenericSerialBus and GeneralPurposeIo:
|
||||
* There are three extra parameters that must be passed to the
|
||||
* handler via the context:
|
||||
* 1) Connection buffer, a resource template from Connection() op
|
||||
* 2) Length of the above buffer
|
||||
* 3) Actual access length from the AccessAs() op
|
||||
*
|
||||
* In addition, for GeneralPurposeIo, the Address and BitWidth fields
|
||||
* are defined as follows:
|
||||
* 1) Address is the pin number index of the field (bit offset from
|
||||
* the previous Connection)
|
||||
* 2) BitWidth is the actual bit length of the field (number of pins)
|
||||
*/
|
||||
if ((RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) &&
|
||||
Context &&
|
||||
FieldObj)
|
||||
{
|
||||
/* Get the Connection (ResourceTemplate) buffer */
|
||||
|
||||
Context->Connection = FieldObj->Field.ResourceBuffer;
|
||||
Context->Length = FieldObj->Field.ResourceLength;
|
||||
Context->AccessLength = FieldObj->Field.AccessLength;
|
||||
}
|
||||
if ((RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GPIO) &&
|
||||
Context &&
|
||||
FieldObj)
|
||||
{
|
||||
/* Get the Connection (ResourceTemplate) buffer */
|
||||
|
||||
Context->Connection = FieldObj->Field.ResourceBuffer;
|
||||
Context->Length = FieldObj->Field.ResourceLength;
|
||||
Context->AccessLength = FieldObj->Field.AccessLength;
|
||||
Address = FieldObj->Field.PinNumberIndex;
|
||||
BitWidth = FieldObj->Field.BitLength;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
|
||||
"Handler %p (@%p) Address %8.8X%8.8X [%s]\n",
|
||||
&RegionObj->Region.Handler->AddressSpace, Handler,
|
||||
@ -416,11 +383,62 @@ AcpiEvAddressSpaceDispatch (
|
||||
AcpiExExitInterpreter();
|
||||
}
|
||||
|
||||
/*
|
||||
* Special handling for GenericSerialBus and GeneralPurposeIo:
|
||||
* There are three extra parameters that must be passed to the
|
||||
* handler via the context:
|
||||
* 1) Connection buffer, a resource template from Connection() op
|
||||
* 2) Length of the above buffer
|
||||
* 3) Actual access length from the AccessAs() op
|
||||
*
|
||||
* Since we pass these extra parameters via the context, which is
|
||||
* shared between threads, we must lock the context to avoid these
|
||||
* parameters being changed from another thread before the handler
|
||||
* has completed running.
|
||||
*
|
||||
* In addition, for GeneralPurposeIo, the Address and BitWidth fields
|
||||
* are defined as follows:
|
||||
* 1) Address is the pin number index of the field (bit offset from
|
||||
* the previous Connection)
|
||||
* 2) BitWidth is the actual bit length of the field (number of pins)
|
||||
*/
|
||||
if ((RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS ||
|
||||
RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GPIO) &&
|
||||
Context &&
|
||||
FieldObj)
|
||||
{
|
||||
|
||||
Status = AcpiOsAcquireMutex (ContextMutex, ACPI_WAIT_FOREVER);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto ReEnterInterpreter;
|
||||
}
|
||||
|
||||
ContextLocked = TRUE;
|
||||
|
||||
/* Get the Connection (ResourceTemplate) buffer */
|
||||
|
||||
Context->Connection = FieldObj->Field.ResourceBuffer;
|
||||
Context->Length = FieldObj->Field.ResourceLength;
|
||||
Context->AccessLength = FieldObj->Field.AccessLength;
|
||||
|
||||
if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GPIO)
|
||||
{
|
||||
Address = FieldObj->Field.PinNumberIndex;
|
||||
BitWidth = FieldObj->Field.BitLength;
|
||||
}
|
||||
}
|
||||
|
||||
/* Call the handler */
|
||||
|
||||
Status = Handler (Function, Address, BitWidth, Value, Context,
|
||||
RegionObj2->Extra.RegionContext);
|
||||
|
||||
if (ContextLocked)
|
||||
{
|
||||
AcpiOsReleaseMutex (ContextMutex);
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_EXCEPTION ((AE_INFO, Status, "Returned by Handler for [%s]",
|
||||
@ -438,6 +456,7 @@ AcpiEvAddressSpaceDispatch (
|
||||
}
|
||||
}
|
||||
|
||||
ReEnterInterpreter:
|
||||
if (!(HandlerDesc->AddressSpace.HandlerFlags &
|
||||
ACPI_ADDR_HANDLER_DEFAULT_INSTALLED))
|
||||
{
|
||||
|
@ -362,6 +362,7 @@ AcpiRemoveAddressSpaceHandler (
|
||||
|
||||
/* Now we can delete the handler object */
|
||||
|
||||
AcpiOsReleaseMutex (HandlerObj->AddressSpace.ContextMutex);
|
||||
AcpiUtRemoveReference (HandlerObj);
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
@ -251,14 +251,13 @@ AcpiNsRootInitialize (
|
||||
* predefined names are at the root level. It is much easier to
|
||||
* just create and link the new node(s) here.
|
||||
*/
|
||||
NewNode = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_NAMESPACE_NODE));
|
||||
NewNode = AcpiNsCreateNode (*ACPI_CAST_PTR (UINT32, InitVal->Name));
|
||||
if (!NewNode)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
ACPI_COPY_NAMESEG (NewNode->Name.Ascii, InitVal->Name);
|
||||
NewNode->DescriptorType = ACPI_DESC_TYPE_NAMED;
|
||||
NewNode->Type = InitVal->Type;
|
||||
|
||||
|
@ -690,8 +690,9 @@ AcpiNsRepair_HID (
|
||||
ACPI_OPERAND_OBJECT **ReturnObjectPtr)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
|
||||
char *Dest;
|
||||
ACPI_OPERAND_OBJECT *NewString;
|
||||
char *Source;
|
||||
char *Dest;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME (NsRepair_HID);
|
||||
@ -716,6 +717,14 @@ AcpiNsRepair_HID (
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
/* It is simplest to always create a new string object */
|
||||
|
||||
NewString = AcpiUtCreateStringObject (ReturnObject->String.Length);
|
||||
if (!NewString)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove a leading asterisk if present. For some unknown reason, there
|
||||
* are many machines in the field that contains IDs like this.
|
||||
@ -726,7 +735,7 @@ AcpiNsRepair_HID (
|
||||
if (*Source == '*')
|
||||
{
|
||||
Source++;
|
||||
ReturnObject->String.Length--;
|
||||
NewString->String.Length--;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
|
||||
"%s: Removed invalid leading asterisk\n", Info->FullPathname));
|
||||
@ -740,12 +749,13 @@ AcpiNsRepair_HID (
|
||||
* "NNNN####" where N is an uppercase letter or decimal digit, and
|
||||
* # is a hex digit.
|
||||
*/
|
||||
for (Dest = ReturnObject->String.Pointer; *Source; Dest++, Source++)
|
||||
for (Dest = NewString->String.Pointer; *Source; Dest++, Source++)
|
||||
{
|
||||
*Dest = (char) toupper ((int) *Source);
|
||||
}
|
||||
ReturnObject->String.Pointer[ReturnObject->String.Length] = 0;
|
||||
|
||||
AcpiUtRemoveReference (ReturnObject);
|
||||
*ReturnObjectPtr = NewString;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
@ -816,9 +816,9 @@ AcpiRsGetListLength (
|
||||
*SizeNeeded += BufferSize;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES,
|
||||
"Type %.2X, AmlLength %.2X InternalLength %.2X\n",
|
||||
"Type %.2X, AmlLength %.2X InternalLength %.2X%8X\n",
|
||||
AcpiUtGetResourceType (AmlBuffer),
|
||||
AcpiUtGetDescriptorLength (AmlBuffer), BufferSize));
|
||||
AcpiUtGetDescriptorLength (AmlBuffer), ACPI_FORMAT_UINT64(*SizeNeeded)));
|
||||
|
||||
/*
|
||||
* Point to the next resource within the AML stream using the length
|
||||
|
@ -277,6 +277,11 @@ AcpiRsDumpResourceList (
|
||||
ResourceList->Type);
|
||||
return;
|
||||
}
|
||||
else if (!ResourceList->Type)
|
||||
{
|
||||
ACPI_ERROR ((AE_INFO, "Invalid Zero Resource Type"));
|
||||
return;
|
||||
}
|
||||
|
||||
/* Sanity check the length. It must not be zero, or we loop forever */
|
||||
|
||||
@ -460,6 +465,11 @@ AcpiRsDumpDescriptor (
|
||||
AcpiRsOutString (Name, Table->Pointer [*Target & 0x07]);
|
||||
break;
|
||||
|
||||
case ACPI_RSD_6BITFLAG:
|
||||
|
||||
AcpiRsOutInteger8 (Name, (ACPI_GET8 (Target) & 0x3F));
|
||||
break;
|
||||
|
||||
case ACPI_RSD_SHORTLIST:
|
||||
/*
|
||||
* Short byte list (single line output) for DMA and IRQ resources
|
||||
|
@ -454,6 +454,21 @@ ACPI_RSDUMP_INFO AcpiRsDumpCommonSerialBus[11] =
|
||||
ACPI_RS_DUMP_COMMON_SERIAL_BUS
|
||||
};
|
||||
|
||||
ACPI_RSDUMP_INFO AcpiRsDumpCsi2SerialBus[11] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpCsi2SerialBus), "Camera Serial Bus", NULL},
|
||||
{ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Csi2SerialBus.RevisionId), "RevisionId", NULL},
|
||||
{ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Csi2SerialBus.Type), "Type", AcpiGbl_SbtDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Csi2SerialBus.ProducerConsumer), "ProducerConsumer", AcpiGbl_ConsumeDecode},
|
||||
{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Csi2SerialBus.SlaveMode), "SlaveMode", AcpiGbl_SmDecode},
|
||||
{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Csi2SerialBus.PhyType), "PhyType", AcpiGbl_PhyDecode},
|
||||
{ACPI_RSD_6BITFLAG, ACPI_RSD_OFFSET (Csi2SerialBus.LocalPortInstance), "LocalPortInstance", NULL},
|
||||
{ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Csi2SerialBus.TypeRevisionId), "TypeRevisionId", NULL},
|
||||
{ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Csi2SerialBus.VendorLength), "VendorLength", NULL},
|
||||
{ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (Csi2SerialBus.VendorData), "VendorData", NULL},
|
||||
{ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Csi2SerialBus.ResourceSource), "ResourceSource", NULL},
|
||||
};
|
||||
|
||||
ACPI_RSDUMP_INFO AcpiRsDumpI2cSerialBus[14] =
|
||||
{
|
||||
{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpI2cSerialBus), "I2C Serial Bus", NULL},
|
||||
|
@ -245,7 +245,7 @@ ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] =
|
||||
AcpiRsConvertPinGroupConfig, /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG */
|
||||
};
|
||||
|
||||
/* Subtype table for SerialBus -- I2C, SPI, and UART */
|
||||
/* Subtype table for SerialBus -- I2C, SPI, UART, and CSI2 */
|
||||
|
||||
ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[] =
|
||||
{
|
||||
@ -253,6 +253,7 @@ ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[] =
|
||||
AcpiRsConvertI2cSerialBus,
|
||||
AcpiRsConvertSpiSerialBus,
|
||||
AcpiRsConvertUartSerialBus,
|
||||
AcpiRsConvertCsi2SerialBus
|
||||
};
|
||||
|
||||
|
||||
@ -295,6 +296,7 @@ ACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[] =
|
||||
AcpiRsDumpI2cSerialBus, /* AML_RESOURCE_I2C_BUS_TYPE */
|
||||
AcpiRsDumpSpiSerialBus, /* AML_RESOURCE_SPI_BUS_TYPE */
|
||||
AcpiRsDumpUartSerialBus, /* AML_RESOURCE_UART_BUS_TYPE */
|
||||
AcpiRsDumpCsi2SerialBus, /* AML_RESOURCE_CSI2_BUS_TYPE */
|
||||
};
|
||||
#endif
|
||||
|
||||
@ -384,6 +386,7 @@ const UINT8 AcpiGbl_AmlResourceSerialBusSizes[] =
|
||||
sizeof (AML_RESOURCE_I2C_SERIALBUS),
|
||||
sizeof (AML_RESOURCE_SPI_SERIALBUS),
|
||||
sizeof (AML_RESOURCE_UART_SERIALBUS),
|
||||
sizeof (AML_RESOURCE_CSI2_SERIALBUS),
|
||||
};
|
||||
|
||||
const UINT8 AcpiGbl_ResourceStructSerialBusSizes[] =
|
||||
@ -392,4 +395,5 @@ const UINT8 AcpiGbl_ResourceStructSerialBusSizes[] =
|
||||
ACPI_RS_SIZE (ACPI_RESOURCE_I2C_SERIALBUS),
|
||||
ACPI_RS_SIZE (ACPI_RESOURCE_SPI_SERIALBUS),
|
||||
ACPI_RS_SIZE (ACPI_RESOURCE_UART_SERIALBUS),
|
||||
ACPI_RS_SIZE (ACPI_RESOURCE_CSI2_SERIALBUS),
|
||||
};
|
||||
|
@ -216,7 +216,7 @@ AcpiRsConvertAmlToResources (
|
||||
}
|
||||
else
|
||||
{
|
||||
/* This is an I2C, SPI, or UART SerialBus descriptor */
|
||||
/* This is an I2C, SPI, UART, or CSI2 SerialBus descriptor */
|
||||
|
||||
ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch [
|
||||
AmlResource->CommonSerialBus.Type];
|
||||
@ -246,6 +246,12 @@ AcpiRsConvertAmlToResources (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if (!Resource->Length)
|
||||
{
|
||||
ACPI_EXCEPTION ((AE_INFO, Status,
|
||||
"Zero-length resource returned from RsConvertAmlToResource"));
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES,
|
||||
"Type %.2X, AmlLength %.2X InternalLength %.2X\n",
|
||||
AcpiUtGetResourceType (Aml), Length,
|
||||
@ -326,7 +332,7 @@ AcpiRsConvertResourcesToAml (
|
||||
}
|
||||
else
|
||||
{
|
||||
/* This is an I2C, SPI, or UART SerialBus descriptor */
|
||||
/* This is an I2C, SPI, UART or CSI2 SerialBus descriptor */
|
||||
|
||||
ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch[
|
||||
Resource->Data.CommonSerialBus.Type];
|
||||
|
@ -225,6 +225,8 @@ AcpiRsConvertAmlToResource (
|
||||
Count = INIT_TABLE_LENGTH (Info);
|
||||
while (Count)
|
||||
{
|
||||
Target = NULL;
|
||||
|
||||
/*
|
||||
* Source is the external AML byte stream buffer,
|
||||
* destination is the internal resource descriptor
|
||||
@ -275,6 +277,14 @@ AcpiRsConvertAmlToResource (
|
||||
((ACPI_GET8 (Source) >> Info->Value) & 0x07));
|
||||
break;
|
||||
|
||||
case ACPI_RSC_6BITFLAG:
|
||||
/*
|
||||
* Mask and shift the flag bits
|
||||
*/
|
||||
ACPI_SET8 (Destination,
|
||||
((ACPI_GET8 (Source) >> Info->Value) & 0x3F));
|
||||
break;
|
||||
|
||||
case ACPI_RSC_COUNT:
|
||||
|
||||
ItemCount = ACPI_GET8 (Source);
|
||||
@ -654,6 +664,14 @@ AcpiRsConvertResourceToAml (
|
||||
((ACPI_GET8 (Source) & 0x07) << Info->Value));
|
||||
break;
|
||||
|
||||
case ACPI_RSC_6BITFLAG:
|
||||
/*
|
||||
* Mask and shift the flag bits
|
||||
*/
|
||||
ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8)
|
||||
((ACPI_GET8 (Source) & 0x3F) << Info->Value));
|
||||
break;
|
||||
|
||||
case ACPI_RSC_COUNT:
|
||||
|
||||
ItemCount = ACPI_GET8 (Source);
|
||||
|
@ -327,6 +327,76 @@ ACPI_RSCONVERT_INFO AcpiRsConvertPinFunction[13] =
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* AcpiRsConvertCsi2SerialBus
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_RSCONVERT_INFO AcpiRsConvertCsi2SerialBus[14] =
|
||||
{
|
||||
{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
|
||||
ACPI_RS_SIZE (ACPI_RESOURCE_CSI2_SERIALBUS),
|
||||
ACPI_RSC_TABLE_SIZE (AcpiRsConvertCsi2SerialBus)},
|
||||
|
||||
{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
|
||||
sizeof (AML_RESOURCE_CSI2_SERIALBUS),
|
||||
0},
|
||||
|
||||
{ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
|
||||
AML_OFFSET (CommonSerialBus.RevisionId),
|
||||
1},
|
||||
|
||||
{ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Csi2SerialBus.Type),
|
||||
AML_OFFSET (Csi2SerialBus.Type),
|
||||
1},
|
||||
|
||||
{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.ProducerConsumer),
|
||||
AML_OFFSET (Csi2SerialBus.Flags),
|
||||
1},
|
||||
|
||||
{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.SlaveMode),
|
||||
AML_OFFSET (Csi2SerialBus.Flags),
|
||||
0},
|
||||
|
||||
{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.PhyType),
|
||||
AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
|
||||
0},
|
||||
|
||||
{ACPI_RSC_6BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.LocalPortInstance),
|
||||
AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
|
||||
2},
|
||||
|
||||
{ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Csi2SerialBus.TypeRevisionId),
|
||||
AML_OFFSET (Csi2SerialBus.TypeRevisionId),
|
||||
1},
|
||||
|
||||
/* Vendor data */
|
||||
|
||||
{ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorLength),
|
||||
AML_OFFSET (Csi2SerialBus.TypeDataLength),
|
||||
AML_RESOURCE_CSI2_MIN_DATA_LEN},
|
||||
|
||||
{ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorData),
|
||||
0,
|
||||
sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
|
||||
|
||||
/* Resource Source */
|
||||
|
||||
{ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.Index),
|
||||
AML_OFFSET (Csi2SerialBus.ResSourceIndex),
|
||||
1},
|
||||
|
||||
{ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringLength),
|
||||
AML_OFFSET (Csi2SerialBus.TypeDataLength),
|
||||
sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
|
||||
|
||||
{ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringPtr),
|
||||
AML_OFFSET (Csi2SerialBus.TypeDataLength),
|
||||
sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* AcpiRsConvertI2cSerialBus
|
||||
|
@ -240,6 +240,14 @@ const char *AcpiGbl_MtpDecode[] =
|
||||
"AddressRangeNVS"
|
||||
};
|
||||
|
||||
const char *AcpiGbl_PhyDecode[] =
|
||||
{
|
||||
"Type C",
|
||||
"Type D",
|
||||
"Unknown Type",
|
||||
"Unknown Type"
|
||||
};
|
||||
|
||||
const char *AcpiGbl_RngDecode[] =
|
||||
{
|
||||
"InvalidRanges",
|
||||
@ -331,7 +339,8 @@ const char *AcpiGbl_SbtDecode[] =
|
||||
"/* UNKNOWN serial bus type */",
|
||||
"I2C",
|
||||
"SPI",
|
||||
"UART"
|
||||
"UART",
|
||||
"CSI2"
|
||||
};
|
||||
|
||||
/* I2C serial bus access mode */
|
||||
|
@ -212,6 +212,7 @@ const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[] =
|
||||
ACPI_AML_SIZE_LARGE (AML_RESOURCE_I2C_SERIALBUS),
|
||||
ACPI_AML_SIZE_LARGE (AML_RESOURCE_SPI_SERIALBUS),
|
||||
ACPI_AML_SIZE_LARGE (AML_RESOURCE_UART_SERIALBUS),
|
||||
ACPI_AML_SIZE_LARGE (AML_RESOURCE_CSI2_SERIALBUS),
|
||||
};
|
||||
|
||||
|
||||
|
@ -251,6 +251,7 @@ typedef enum
|
||||
/* Types that are specific to particular ACPI tables */
|
||||
|
||||
ACPI_DMT_ASF,
|
||||
ACPI_DMT_CEDT,
|
||||
ACPI_DMT_DMAR,
|
||||
ACPI_DMT_DMAR_SCOPE,
|
||||
ACPI_DMT_EINJACT,
|
||||
@ -269,13 +270,16 @@ typedef enum
|
||||
ACPI_DMT_MADT,
|
||||
ACPI_DMT_NFIT,
|
||||
ACPI_DMT_PCCT,
|
||||
ACPI_DMT_PHAT,
|
||||
ACPI_DMT_PMTT,
|
||||
ACPI_DMT_PMTT_VENDOR,
|
||||
ACPI_DMT_PPTT,
|
||||
ACPI_DMT_SDEI,
|
||||
ACPI_DMT_SDEV,
|
||||
ACPI_DMT_SLIC,
|
||||
ACPI_DMT_SRAT,
|
||||
ACPI_DMT_TPM2,
|
||||
ACPI_DMT_VIOT,
|
||||
|
||||
/* Special opcodes */
|
||||
|
||||
@ -364,6 +368,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoBert[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedtHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt0[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[];
|
||||
@ -451,8 +457,11 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort3b[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort3c[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort5[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort6[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort6a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr3[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[];
|
||||
@ -463,6 +472,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid1[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[];
|
||||
@ -481,6 +492,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt13[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt16[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[];
|
||||
@ -507,11 +519,17 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit7[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhatHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1b[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmttVendor[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcctHdr[];
|
||||
@ -520,10 +538,12 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct1[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct2[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct3[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct4[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct5[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt0[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt0[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt0a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPpttHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[];
|
||||
@ -539,6 +559,10 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdev[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdevHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0b[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdevSecCompHdr[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdevSecCompId[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdevSecCompMem[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1b[];
|
||||
@ -565,6 +589,12 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm211[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm23[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm23a[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoViot[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoViotHeader[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoViot1[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoViot2[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoViot3[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoViot4[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoWaet[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdat[];
|
||||
extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdat0[];
|
||||
@ -640,6 +670,10 @@ void
|
||||
AcpiDmDumpAsf (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
||||
void
|
||||
AcpiDmDumpCedt (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
||||
void
|
||||
AcpiDmDumpCpep (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
@ -728,6 +762,10 @@ void
|
||||
AcpiDmDumpPdtt (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
||||
void
|
||||
AcpiDmDumpPhat (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
||||
void
|
||||
AcpiDmDumpPmtt (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
@ -776,6 +814,10 @@ void
|
||||
AcpiDmDumpTpm2 (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
||||
void
|
||||
AcpiDmDumpViot (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
||||
void
|
||||
AcpiDmDumpWdat (
|
||||
ACPI_TABLE_HEADER *Table);
|
||||
|
@ -521,6 +521,7 @@ typedef struct acpi_object_addr_handler
|
||||
ACPI_ADR_SPACE_HANDLER Handler;
|
||||
ACPI_NAMESPACE_NODE *Node; /* Parent device */
|
||||
void *Context;
|
||||
ACPI_MUTEX ContextMutex;
|
||||
ACPI_ADR_SPACE_SETUP Setup;
|
||||
union acpi_operand_object *RegionList; /* Regions using this handler */
|
||||
union acpi_operand_object *Next;
|
||||
|
@ -508,7 +508,7 @@
|
||||
*
|
||||
* A less-safe version of the macros is provided for optional use if the
|
||||
* compiler uses excessive CPU stack (for example, this may happen in the
|
||||
* debug case if code optimzation is disabled.)
|
||||
* debug case if code optimization is disabled.)
|
||||
*/
|
||||
|
||||
/* Exit trace helper macro */
|
||||
|
@ -154,7 +154,7 @@
|
||||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20210105
|
||||
#define ACPI_CA_VERSION 0x20210331
|
||||
|
||||
#include <contrib/dev/acpica/include/acconfig.h>
|
||||
#include <contrib/dev/acpica/include/actypes.h>
|
||||
|
@ -472,6 +472,17 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] =
|
||||
{{"_BMS", METHOD_1ARGS (ACPI_TYPE_INTEGER),
|
||||
METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
|
||||
|
||||
{{"_BPC", METHOD_0ARGS,
|
||||
METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
|
||||
PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),
|
||||
|
||||
{{"_BPS", METHOD_0ARGS,
|
||||
METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (5 Int) */
|
||||
PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5,0,0,0),
|
||||
|
||||
{{"_BPT", METHOD_1ARGS (ACPI_TYPE_PACKAGE),
|
||||
METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
|
||||
|
||||
{{"_BQC", METHOD_0ARGS,
|
||||
METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
|
||||
|
||||
@ -491,6 +502,10 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] =
|
||||
{{"_CBA", METHOD_0ARGS,
|
||||
METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See PCI firmware spec 3.0 */
|
||||
|
||||
{{"_CBR", METHOD_0ARGS,
|
||||
METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */
|
||||
PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0,0,0),
|
||||
|
||||
{{"_CCA", METHOD_0ARGS,
|
||||
METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* ACPI 5.1 */
|
||||
|
||||
|
@ -192,6 +192,7 @@ typedef enum
|
||||
ACPI_RSC_1BITFLAG,
|
||||
ACPI_RSC_2BITFLAG,
|
||||
ACPI_RSC_3BITFLAG,
|
||||
ACPI_RSC_6BITFLAG,
|
||||
ACPI_RSC_ADDRESS,
|
||||
ACPI_RSC_BITMASK,
|
||||
ACPI_RSC_BITMASK16,
|
||||
@ -252,6 +253,7 @@ typedef enum
|
||||
ACPI_RSD_1BITFLAG,
|
||||
ACPI_RSD_2BITFLAG,
|
||||
ACPI_RSD_3BITFLAG,
|
||||
ACPI_RSD_6BITFLAG,
|
||||
ACPI_RSD_ADDRESS,
|
||||
ACPI_RSD_DWORDLIST,
|
||||
ACPI_RSD_LITERAL,
|
||||
@ -495,6 +497,7 @@ extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[];
|
||||
extern ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[];
|
||||
extern ACPI_RSCONVERT_INFO AcpiRsConvertGpio[];
|
||||
extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedDma[];
|
||||
extern ACPI_RSCONVERT_INFO AcpiRsConvertCsi2SerialBus[];
|
||||
extern ACPI_RSCONVERT_INFO AcpiRsConvertI2cSerialBus[];
|
||||
extern ACPI_RSCONVERT_INFO AcpiRsConvertSpiSerialBus[];
|
||||
extern ACPI_RSCONVERT_INFO AcpiRsConvertUartSerialBus[];
|
||||
@ -550,6 +553,7 @@ extern ACPI_RSDUMP_INFO AcpiRsDumpGpio[];
|
||||
extern ACPI_RSDUMP_INFO AcpiRsDumpPinFunction[];
|
||||
extern ACPI_RSDUMP_INFO AcpiRsDumpFixedDma[];
|
||||
extern ACPI_RSDUMP_INFO AcpiRsDumpCommonSerialBus[];
|
||||
extern ACPI_RSDUMP_INFO AcpiRsDumpCsi2SerialBus[];
|
||||
extern ACPI_RSDUMP_INFO AcpiRsDumpI2cSerialBus[];
|
||||
extern ACPI_RSDUMP_INFO AcpiRsDumpSpiSerialBus[];
|
||||
extern ACPI_RSDUMP_INFO AcpiRsDumpUartSerialBus[];
|
||||
|
@ -593,7 +593,7 @@ typedef struct acpi_resource_gpio
|
||||
#define ACPI_IO_RESTRICT_NONE_PRESERVE 3
|
||||
|
||||
|
||||
/* Common structure for I2C, SPI, and UART serial descriptors */
|
||||
/* Common structure for I2C, SPI, UART, CSI2 serial descriptors */
|
||||
|
||||
#define ACPI_RESOURCE_SERIAL_COMMON \
|
||||
UINT8 RevisionId; \
|
||||
@ -618,6 +618,7 @@ typedef struct acpi_resource_common_serialbus
|
||||
#define ACPI_RESOURCE_SERIAL_TYPE_I2C 1
|
||||
#define ACPI_RESOURCE_SERIAL_TYPE_SPI 2
|
||||
#define ACPI_RESOURCE_SERIAL_TYPE_UART 3
|
||||
#define ACPI_RESOURCE_SERIAL_TYPE_CSI2 4
|
||||
|
||||
/* Values for SlaveMode field above */
|
||||
|
||||
@ -732,6 +733,14 @@ typedef struct acpi_resource_uart_serialbus
|
||||
#define ACPI_UART_CLEAR_TO_SEND (1<<6)
|
||||
#define ACPI_UART_REQUEST_TO_SEND (1<<7)
|
||||
|
||||
typedef struct acpi_resource_csi2_serialbus
|
||||
{
|
||||
ACPI_RESOURCE_SERIAL_COMMON
|
||||
UINT8 LocalPortInstance;
|
||||
UINT8 PhyType;
|
||||
|
||||
} ACPI_RESOURCE_CSI2_SERIALBUS;
|
||||
|
||||
typedef struct acpi_resource_pin_function
|
||||
{
|
||||
UINT8 RevisionId;
|
||||
@ -872,6 +881,7 @@ typedef union acpi_resource_data
|
||||
ACPI_RESOURCE_I2C_SERIALBUS I2cSerialBus;
|
||||
ACPI_RESOURCE_SPI_SERIALBUS SpiSerialBus;
|
||||
ACPI_RESOURCE_UART_SERIALBUS UartSerialBus;
|
||||
ACPI_RESOURCE_CSI2_SERIALBUS Csi2SerialBus;
|
||||
ACPI_RESOURCE_COMMON_SERIALBUS CommonSerialBus;
|
||||
ACPI_RESOURCE_PIN_FUNCTION PinFunction;
|
||||
ACPI_RESOURCE_PIN_CONFIG PinConfig;
|
||||
|
@ -196,6 +196,7 @@
|
||||
#define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f)
|
||||
#define ACPI_TPM23_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM23,f)
|
||||
#define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f)
|
||||
#define ACPI_VIOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_VIOT,f)
|
||||
#define ACPI_WAET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f)
|
||||
#define ACPI_WDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDAT,f)
|
||||
#define ACPI_WDDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDDT,f)
|
||||
@ -213,6 +214,8 @@
|
||||
#define ACPI_ASF2a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f)
|
||||
#define ACPI_ASF3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f)
|
||||
#define ACPI_ASF4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
|
||||
#define ACPI_CEDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_HEADER, f)
|
||||
#define ACPI_CEDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CHBS, f)
|
||||
#define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
|
||||
#define ACPI_CSRT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_GROUP,f)
|
||||
#define ACPI_CSRT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_SHARED_INFO,f)
|
||||
@ -260,6 +263,8 @@
|
||||
#define ACPI_IORT3A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_SMMU_GSI,f)
|
||||
#define ACPI_IORT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_SMMU_V3,f)
|
||||
#define ACPI_IORT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_PMCG,f)
|
||||
#define ACPI_IORT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_RMR,f)
|
||||
#define ACPI_IORT6A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_RMR_DESC,f)
|
||||
#define ACPI_IORTA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_MEMORY_ACCESS,f)
|
||||
#define ACPI_IORTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NODE,f)
|
||||
#define ACPI_IORTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ID_MAPPING,f)
|
||||
@ -271,6 +276,7 @@
|
||||
#define ACPI_IVRS8A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f)
|
||||
#define ACPI_IVRS8B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8B,f)
|
||||
#define ACPI_IVRS8C_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8C,f)
|
||||
#define ACPI_IVRSHID_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE_HID,f)
|
||||
#define ACPI_LPITH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_LPIT_HEADER,f)
|
||||
#define ACPI_LPIT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_LPIT_NATIVE,f)
|
||||
#define ACPI_MADT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f)
|
||||
@ -289,6 +295,7 @@
|
||||
#define ACPI_MADT13_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_MSI_FRAME,f)
|
||||
#define ACPI_MADT14_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_REDISTRIBUTOR,f)
|
||||
#define ACPI_MADT15_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_TRANSLATOR,f)
|
||||
#define ACPI_MADT16_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_MULTIPROC_WAKEUP,f)
|
||||
#define ACPI_MADTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
|
||||
#define ACPI_MCFG0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
|
||||
#define ACPI_MPST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_NODE,f)
|
||||
@ -311,21 +318,31 @@
|
||||
#define ACPI_PCCT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED_TYPE2,f)
|
||||
#define ACPI_PCCT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_EXT_PCC_MASTER,f)
|
||||
#define ACPI_PCCT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_EXT_PCC_SLAVE,f)
|
||||
#define ACPI_PCCT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REG,f)
|
||||
#define ACPI_PDTT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PDTT_CHANNEL,f)
|
||||
#define ACPI_PHATH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PHAT_HEADER,f)
|
||||
#define ACPI_PHAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PHAT_VERSION_DATA,f)
|
||||
#define ACPI_PHAT0A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PHAT_VERSION_ELEMENT,f)
|
||||
#define ACPI_PHAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PHAT_HEALTH_DATA,f)
|
||||
#define ACPI_PMTT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_SOCKET,f)
|
||||
#define ACPI_PMTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_CONTROLLER,f)
|
||||
#define ACPI_PMTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_DOMAIN,f)
|
||||
#define ACPI_PMTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_PHYSICAL_COMPONENT,f)
|
||||
#define ACPI_PMTT_VENDOR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_VENDOR_SPECIFIC,f)
|
||||
#define ACPI_PMTTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_HEADER,f)
|
||||
#define ACPI_PPTTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
|
||||
#define ACPI_PPTT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_PROCESSOR,f)
|
||||
#define ACPI_PPTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE,f)
|
||||
#define ACPI_PPTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE_V1,f)
|
||||
#define ACPI_PPTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_ID,f)
|
||||
#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f)
|
||||
#define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f)
|
||||
#define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f)
|
||||
#define ACPI_SDEVH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_HEADER,f)
|
||||
#define ACPI_SDEV0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_NAMESPACE,f)
|
||||
#define ACPI_SDEV0B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_SECURE_COMPONENT,f)
|
||||
#define ACPI_SDEVCH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_HEADER,f)
|
||||
#define ACPI_SDEVC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_ID_COMPONENT, f)
|
||||
#define ACPI_SDEVC1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_MEM_COMPONENT, f)
|
||||
#define ACPI_SDEV1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_PCIE,f)
|
||||
#define ACPI_SDEV1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SDEV_PCIE_PATH,f)
|
||||
#define ACPI_SLIC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIC,f)
|
||||
@ -341,6 +358,11 @@
|
||||
#define ACPI_TPM2A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f)
|
||||
#define ACPI_TPM211_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_ARM_SMC,f)
|
||||
#define ACPI_TPM23A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM23_TRAILER,f)
|
||||
#define ACPI_VIOTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VIOT_HEADER,f)
|
||||
#define ACPI_VIOT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VIOT_PCI_RANGE,f)
|
||||
#define ACPI_VIOT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VIOT_MMIO,f)
|
||||
#define ACPI_VIOT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VIOT_VIRTIO_IOMMU_PCI,f)
|
||||
#define ACPI_VIOT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VIOT_VIRTIO_IOMMU_MMIO,f)
|
||||
#define ACPI_WDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f)
|
||||
|
||||
/*
|
||||
@ -358,6 +380,7 @@
|
||||
#define ACPI_HPET_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_HPET,f,o)
|
||||
#define ACPI_PPTT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_PPTT_PROCESSOR,f,o)
|
||||
#define ACPI_PPTT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_PPTT_CACHE,f,o)
|
||||
#define ACPI_PPTT1A_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_PPTT_CACHE_V1,f,o)
|
||||
#define ACPI_SRAT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_CPU_AFFINITY,f,o)
|
||||
#define ACPI_SRAT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o)
|
||||
#define ACPI_SRAT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o)
|
||||
@ -372,6 +395,7 @@
|
||||
#define ACPI_IORT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU,f,o)
|
||||
#define ACPI_IORT3a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU_GSI,f,o)
|
||||
#define ACPI_IORT4_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU_V3,f,o)
|
||||
#define ACPI_IORT6_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_RMR,f,o)
|
||||
#define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o)
|
||||
#define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o)
|
||||
#define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o)
|
||||
|
@ -172,6 +172,7 @@
|
||||
#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
|
||||
#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */
|
||||
#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
|
||||
#define ACPI_SIG_CEDT "CEDT" /* CXL Early Discovery Table */
|
||||
#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
|
||||
#define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
|
||||
#define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
|
||||
@ -492,6 +493,58 @@ typedef struct acpi_table_boot
|
||||
} ACPI_TABLE_BOOT;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* CEDT - CXL Early Discovery Table
|
||||
* Version 1
|
||||
*
|
||||
* Conforms to the "CXL Early Discovery Table" (CXL 2.0)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
typedef struct acpi_table_cedt
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
|
||||
|
||||
} ACPI_TABLE_CEDT;
|
||||
|
||||
/* CEDT subtable header (Performance Record Structure) */
|
||||
|
||||
typedef struct acpi_cedt_header
|
||||
{
|
||||
UINT8 Type;
|
||||
UINT8 Reserved;
|
||||
UINT16 Length;
|
||||
|
||||
} ACPI_CEDT_HEADER;
|
||||
|
||||
/* Values for Type field above */
|
||||
|
||||
enum AcpiCedtType
|
||||
{
|
||||
ACPI_CEDT_TYPE_CHBS = 0,
|
||||
ACPI_CEDT_TYPE_RESERVED = 1
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* CEDT subtables
|
||||
*/
|
||||
|
||||
/* 0: CXL Host Bridge Structure */
|
||||
|
||||
typedef struct acpi_cedt_chbs
|
||||
{
|
||||
ACPI_CEDT_HEADER Header;
|
||||
UINT32 Uid;
|
||||
UINT32 CxlVersion;
|
||||
UINT32 Reserved;
|
||||
UINT64 Base;
|
||||
UINT64 Length;
|
||||
|
||||
} ACPI_CEDT_CHBS;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* CPEP - Corrected Platform Error Polling table (ACPI 4.0)
|
||||
@ -1829,7 +1882,8 @@ typedef struct acpi_hmat_locality
|
||||
ACPI_HMAT_STRUCTURE Header;
|
||||
UINT8 Flags;
|
||||
UINT8 DataType;
|
||||
UINT16 Reserved1;
|
||||
UINT8 MinTransferSize;
|
||||
UINT8 Reserved1;
|
||||
UINT32 NumberOfInitiatorPDs;
|
||||
UINT32 NumberOfTargetPDs;
|
||||
UINT32 Reserved2;
|
||||
@ -1839,14 +1893,17 @@ typedef struct acpi_hmat_locality
|
||||
|
||||
/* Masks for Flags field above */
|
||||
|
||||
#define ACPI_HMAT_MEMORY_HIERARCHY (0x0F)
|
||||
#define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */
|
||||
|
||||
/* Values for Memory Hierarchy flag */
|
||||
/* Values for Memory Hierarchy flags */
|
||||
|
||||
#define ACPI_HMAT_MEMORY 0
|
||||
#define ACPI_HMAT_1ST_LEVEL_CACHE 1
|
||||
#define ACPI_HMAT_2ND_LEVEL_CACHE 2
|
||||
#define ACPI_HMAT_3RD_LEVEL_CACHE 3
|
||||
#define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */
|
||||
#define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */
|
||||
|
||||
|
||||
/* Values for DataType field above */
|
||||
|
||||
|
@ -180,6 +180,7 @@
|
||||
#define ACPI_SIG_NFIT "NFIT" /* NVDIMM Firmware Interface Table */
|
||||
#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */
|
||||
#define ACPI_SIG_PDTT "PDTT" /* Platform Debug Trigger Table */
|
||||
#define ACPI_SIG_PHAT "PHAT" /* Platform Health Assessment Table */
|
||||
#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */
|
||||
#define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */
|
||||
#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
|
||||
@ -213,7 +214,7 @@
|
||||
* IORT - IO Remapping Table
|
||||
*
|
||||
* Conforms to "IO Remapping Table System Software on ARM Platforms",
|
||||
* Document number: ARM DEN 0049D, March 2018
|
||||
* Document number: ARM DEN 0049E.b, Feb 2021
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -235,7 +236,7 @@ typedef struct acpi_iort_node
|
||||
UINT8 Type;
|
||||
UINT16 Length;
|
||||
UINT8 Revision;
|
||||
UINT32 Reserved;
|
||||
UINT32 Identifier;
|
||||
UINT32 MappingCount;
|
||||
UINT32 MappingOffset;
|
||||
char NodeData[1];
|
||||
@ -251,7 +252,8 @@ enum AcpiIortNodeType
|
||||
ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02,
|
||||
ACPI_IORT_NODE_SMMU = 0x03,
|
||||
ACPI_IORT_NODE_SMMU_V3 = 0x04,
|
||||
ACPI_IORT_NODE_PMCG = 0x05
|
||||
ACPI_IORT_NODE_PMCG = 0x05,
|
||||
ACPI_IORT_NODE_RMR = 0x06,
|
||||
};
|
||||
|
||||
|
||||
@ -332,10 +334,11 @@ typedef struct acpi_iort_root_complex
|
||||
|
||||
} ACPI_IORT_ROOT_COMPLEX;
|
||||
|
||||
/* Values for AtsAttribute field above */
|
||||
/* Masks for AtsAttribute field above */
|
||||
|
||||
#define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */
|
||||
#define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */
|
||||
#define ACPI_IORT_ATS_SUPPORTED (1) /* The root complex ATS support */
|
||||
#define ACPI_IORT_PRI_SUPPORTED (1<<1) /* The root complex PRI support */
|
||||
#define ACPI_IORT_PASID_FWD_SUPPORTED (1<<2) /* The root complex PASID forward support */
|
||||
|
||||
|
||||
typedef struct acpi_iort_smmu
|
||||
@ -416,6 +419,19 @@ typedef struct acpi_iort_pmcg
|
||||
|
||||
} ACPI_IORT_PMCG;
|
||||
|
||||
typedef struct acpi_iort_rmr {
|
||||
UINT32 Flags;
|
||||
UINT32 RmrCount;
|
||||
UINT32 RmrOffset;
|
||||
|
||||
} ACPI_IORT_RMR;
|
||||
|
||||
typedef struct acpi_iort_rmr_desc {
|
||||
UINT64 BaseAddress;
|
||||
UINT64 Length;
|
||||
UINT32 Reserved;
|
||||
|
||||
} ACPI_IORT_RMR_DESC;
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -459,6 +475,7 @@ enum AcpiIvrsType
|
||||
{
|
||||
ACPI_IVRS_TYPE_HARDWARE1 = 0x10,
|
||||
ACPI_IVRS_TYPE_HARDWARE2 = 0x11,
|
||||
ACPI_IVRS_TYPE_HARDWARE3 = 0x40,
|
||||
ACPI_IVRS_TYPE_MEMORY1 = 0x20,
|
||||
ACPI_IVRS_TYPE_MEMORY2 = 0x21,
|
||||
ACPI_IVRS_TYPE_MEMORY3 = 0x22
|
||||
@ -555,7 +572,11 @@ enum AcpiIvrsDeviceEntryType
|
||||
ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */
|
||||
ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */
|
||||
ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */
|
||||
ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */
|
||||
ACPI_IVRS_TYPE_SPECIAL = 72, /* Uses ACPI_IVRS_DEVICE8C */
|
||||
|
||||
/* Variable-length device entries */
|
||||
|
||||
ACPI_IVRS_TYPE_HID = 240 /* Uses ACPI_IVRS_DEVICE_HID */
|
||||
};
|
||||
|
||||
/* Values for Data field above */
|
||||
@ -616,6 +637,18 @@ typedef struct acpi_ivrs_device8c
|
||||
#define ACPI_IVHD_IOAPIC 1
|
||||
#define ACPI_IVHD_HPET 2
|
||||
|
||||
/* Type 240: variable-length device entry */
|
||||
|
||||
typedef struct acpi_ivrs_device_hid
|
||||
{
|
||||
ACPI_IVRS_DE_HEADER Header;
|
||||
UINT64 AcpiHid;
|
||||
UINT64 AcpiCid;
|
||||
UINT8 UidType;
|
||||
UINT8 UidLength;
|
||||
|
||||
} ACPI_IVRS_DEVICE_HID;
|
||||
|
||||
|
||||
/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
|
||||
|
||||
@ -733,7 +766,8 @@ enum AcpiMadtType
|
||||
ACPI_MADT_TYPE_GENERIC_MSI_FRAME = 13,
|
||||
ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
|
||||
ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
|
||||
ACPI_MADT_TYPE_RESERVED = 16 /* 16 and greater are reserved */
|
||||
ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16,
|
||||
ACPI_MADT_TYPE_RESERVED = 17 /* 17 and greater are reserved */
|
||||
};
|
||||
|
||||
|
||||
@ -989,6 +1023,17 @@ typedef struct acpi_madt_generic_translator
|
||||
|
||||
} ACPI_MADT_GENERIC_TRANSLATOR;
|
||||
|
||||
/* 16: Multiprocessor wakeup (ACPI 6.4) */
|
||||
|
||||
typedef struct acpi_madt_multiproc_wakeup
|
||||
{
|
||||
ACPI_SUBTABLE_HEADER Header;
|
||||
UINT16 MailboxVersion;
|
||||
UINT32 Reserved; /* reserved - must be zero */
|
||||
UINT64 BaseAddress;
|
||||
|
||||
} ACPI_MADT_MULTIPROC_WAKEUP;
|
||||
|
||||
|
||||
/*
|
||||
* Common flags fields for MADT subtables
|
||||
@ -1299,6 +1344,7 @@ typedef struct acpi_nfit_system_address
|
||||
UINT64 Address;
|
||||
UINT64 Length;
|
||||
UINT64 MemoryMapping;
|
||||
UINT64 LocationCookie; /* ACPI 6.4 */
|
||||
|
||||
} ACPI_NFIT_SYSTEM_ADDRESS;
|
||||
|
||||
@ -1306,6 +1352,7 @@ typedef struct acpi_nfit_system_address
|
||||
|
||||
#define ACPI_NFIT_ADD_ONLINE_ONLY (1) /* 00: Add/Online Operation Only */
|
||||
#define ACPI_NFIT_PROXIMITY_VALID (1<<1) /* 01: Proximity Domain Valid */
|
||||
#define ACPI_NFIT_LOCATION_COOKIE_VALID (1<<2) /* 02: SPA location cookie valid (ACPI 6.4) */
|
||||
|
||||
/* Range Type GUIDs appear in the include/acuuid.h file */
|
||||
|
||||
@ -1529,7 +1576,8 @@ enum AcpiPcctType
|
||||
ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2, /* ACPI 6.1 */
|
||||
ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE = 3, /* ACPI 6.2 */
|
||||
ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE = 4, /* ACPI 6.2 */
|
||||
ACPI_PCCT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
|
||||
ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE = 5, /* ACPI 6.4 */
|
||||
ACPI_PCCT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
|
||||
};
|
||||
|
||||
/*
|
||||
@ -1658,6 +1706,26 @@ typedef struct acpi_pcct_ext_pcc_slave
|
||||
|
||||
} ACPI_PCCT_EXT_PCC_SLAVE;
|
||||
|
||||
/* 5: HW Registers based Communications Subspace */
|
||||
|
||||
typedef struct acpi_pcct_hw_reg
|
||||
{
|
||||
ACPI_SUBTABLE_HEADER Header;
|
||||
UINT16 Version;
|
||||
UINT64 BaseAddress;
|
||||
UINT64 Length;
|
||||
ACPI_GENERIC_ADDRESS DoorbellRegister;
|
||||
UINT64 DoorbellPreserve;
|
||||
UINT64 DoorbellWrite;
|
||||
ACPI_GENERIC_ADDRESS CmdCompleteRegister;
|
||||
UINT64 CmdCompleteMask;
|
||||
ACPI_GENERIC_ADDRESS ErrorStatusRegister;
|
||||
UINT64 ErrorStatusMask;
|
||||
UINT32 NominalLatency;
|
||||
UINT32 MinTurnaroundTime;
|
||||
|
||||
} ACPI_PCCT_HW_REG;
|
||||
|
||||
|
||||
/* Values for doorbell flags above */
|
||||
|
||||
@ -1728,6 +1796,79 @@ typedef struct acpi_pdtt_channel
|
||||
#define ACPI_PDTT_TRIGGER_ORDER (1<<2)
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PHAT - Platform Health Assessment Table (ACPI 6.4)
|
||||
* Version 1
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
typedef struct acpi_table_phat
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
|
||||
|
||||
} ACPI_TABLE_PHAT;
|
||||
|
||||
/* Common header for PHAT subtables that follow main table */
|
||||
|
||||
typedef struct acpi_phat_header
|
||||
{
|
||||
UINT16 Type;
|
||||
UINT16 Length;
|
||||
UINT8 Revision;
|
||||
|
||||
} ACPI_PHAT_HEADER;
|
||||
|
||||
|
||||
/* Values for Type field above */
|
||||
|
||||
#define ACPI_PHAT_TYPE_FW_VERSION_DATA 0
|
||||
#define ACPI_PHAT_TYPE_FW_HEALTH_DATA 1
|
||||
#define ACPI_PHAT_TYPE_RESERVED 2 /* 0x02-0xFFFF are reserved */
|
||||
|
||||
/*
|
||||
* PHAT subtables, correspond to Type in ACPI_PHAT_HEADER
|
||||
*/
|
||||
|
||||
/* 0: Firmware Version Data Record */
|
||||
|
||||
typedef struct acpi_phat_version_data
|
||||
{
|
||||
ACPI_PHAT_HEADER Header;
|
||||
UINT8 Reserved[3];
|
||||
UINT32 ElementCount;
|
||||
|
||||
} ACPI_PHAT_VERSION_DATA;
|
||||
|
||||
typedef struct acpi_phat_version_element
|
||||
{
|
||||
UINT8 Guid[16];
|
||||
UINT64 VersionValue;
|
||||
UINT32 ProducerId;
|
||||
|
||||
} ACPI_PHAT_VERSION_ELEMENT;
|
||||
|
||||
|
||||
/* 1: Firmware Health Data Record */
|
||||
|
||||
typedef struct acpi_phat_health_data
|
||||
{
|
||||
ACPI_PHAT_HEADER Header;
|
||||
UINT8 Reserved[2];
|
||||
UINT8 Health;
|
||||
UINT8 DeviceGuid[16];
|
||||
UINT32 DeviceSpecificOffset; /* Zero if no Device-specific data */
|
||||
|
||||
} ACPI_PHAT_HEALTH_DATA;
|
||||
|
||||
/* Values for Health field above */
|
||||
|
||||
#define ACPI_PHAT_ERRORS_FOUND 0
|
||||
#define ACPI_PHAT_NO_ERRORS 1
|
||||
#define ACPI_PHAT_UNKNOWN_ERRORS 2
|
||||
#define ACPI_PHAT_ADVISORY 3
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PMTT - Platform Memory Topology Table (ACPI 5.0)
|
||||
@ -1738,7 +1879,11 @@ typedef struct acpi_pdtt_channel
|
||||
typedef struct acpi_table_pmtt
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
|
||||
UINT32 Reserved;
|
||||
UINT32 MemoryDeviceCount;
|
||||
/*
|
||||
* Immediately followed by:
|
||||
* MEMORY_DEVICE MemoryDeviceStruct[MemoryDeviceCount];
|
||||
*/
|
||||
|
||||
} ACPI_TABLE_PMTT;
|
||||
|
||||
@ -1752,6 +1897,12 @@ typedef struct acpi_pmtt_header
|
||||
UINT16 Length;
|
||||
UINT16 Flags;
|
||||
UINT16 Reserved2;
|
||||
UINT32 MemoryDeviceCount; /* Zero means no memory device structs follow */
|
||||
/*
|
||||
* Immediately followed by:
|
||||
* UINT8 TypeSpecificData[]
|
||||
* MEMORY_DEVICE MemoryDeviceStruct[MemoryDeviceCount];
|
||||
*/
|
||||
|
||||
} ACPI_PMTT_HEADER;
|
||||
|
||||
@ -1760,7 +1911,8 @@ typedef struct acpi_pmtt_header
|
||||
#define ACPI_PMTT_TYPE_SOCKET 0
|
||||
#define ACPI_PMTT_TYPE_CONTROLLER 1
|
||||
#define ACPI_PMTT_TYPE_DIMM 2
|
||||
#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */
|
||||
#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFE are reserved */
|
||||
#define ACPI_PMTT_TYPE_VENDOR 0xFF
|
||||
|
||||
/* Values for Flags field above */
|
||||
|
||||
@ -1783,6 +1935,10 @@ typedef struct acpi_pmtt_socket
|
||||
UINT16 Reserved;
|
||||
|
||||
} ACPI_PMTT_SOCKET;
|
||||
/*
|
||||
* Immediately followed by:
|
||||
* MEMORY_DEVICE MemoryDeviceStruct[MemoryDeviceCount];
|
||||
*/
|
||||
|
||||
|
||||
/* 1: Memory Controller subtable */
|
||||
@ -1790,24 +1946,14 @@ typedef struct acpi_pmtt_socket
|
||||
typedef struct acpi_pmtt_controller
|
||||
{
|
||||
ACPI_PMTT_HEADER Header;
|
||||
UINT32 ReadLatency;
|
||||
UINT32 WriteLatency;
|
||||
UINT32 ReadBandwidth;
|
||||
UINT32 WriteBandwidth;
|
||||
UINT16 AccessWidth;
|
||||
UINT16 Alignment;
|
||||
UINT16 ControllerId;
|
||||
UINT16 Reserved;
|
||||
UINT16 DomainCount;
|
||||
|
||||
} ACPI_PMTT_CONTROLLER;
|
||||
|
||||
/* 1a: Proximity Domain substructure */
|
||||
|
||||
typedef struct acpi_pmtt_domain
|
||||
{
|
||||
UINT32 ProximityDomain;
|
||||
|
||||
} ACPI_PMTT_DOMAIN;
|
||||
/*
|
||||
* Immediately followed by:
|
||||
* MEMORY_DEVICE MemoryDeviceStruct[MemoryDeviceCount];
|
||||
*/
|
||||
|
||||
|
||||
/* 2: Physical Component Identifier (DIMM) */
|
||||
@ -1815,14 +1961,27 @@ typedef struct acpi_pmtt_domain
|
||||
typedef struct acpi_pmtt_physical_component
|
||||
{
|
||||
ACPI_PMTT_HEADER Header;
|
||||
UINT16 ComponentId;
|
||||
UINT16 Reserved;
|
||||
UINT32 MemorySize;
|
||||
UINT32 BiosHandle;
|
||||
|
||||
} ACPI_PMTT_PHYSICAL_COMPONENT;
|
||||
|
||||
|
||||
/* 0xFF: Vendor Specific Data */
|
||||
|
||||
typedef struct acpi_pmtt_vendor_specific
|
||||
{
|
||||
ACPI_PMTT_HEADER Header;
|
||||
UINT8 TypeUuid[16];
|
||||
UINT8 Specific[];
|
||||
/*
|
||||
* Immediately followed by:
|
||||
* UINT8 VendorSpecificData[];
|
||||
* MEMORY_DEVICE MemoryDeviceStruct[MemoryDeviceCount];
|
||||
*/
|
||||
|
||||
} ACPI_PMTT_VENDOR_SPECIFIC;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PPTT - Processor Properties Topology Table (ACPI 6.2)
|
||||
@ -1885,6 +2044,15 @@ typedef struct acpi_pptt_cache
|
||||
|
||||
} ACPI_PPTT_CACHE;
|
||||
|
||||
/* 1: Cache Type Structure for PPTT version 3 */
|
||||
|
||||
typedef struct acpi_pptt_cache_v1
|
||||
{
|
||||
UINT32 CacheId;
|
||||
|
||||
} ACPI_PPTT_CACHE_V1;
|
||||
|
||||
|
||||
/* Flags */
|
||||
|
||||
#define ACPI_PPTT_SIZE_PROPERTY_VALID (1) /* Physical property valid */
|
||||
@ -1894,6 +2062,7 @@ typedef struct acpi_pptt_cache
|
||||
#define ACPI_PPTT_CACHE_TYPE_VALID (1<<4) /* Cache type valid */
|
||||
#define ACPI_PPTT_WRITE_POLICY_VALID (1<<5) /* Write policy valid */
|
||||
#define ACPI_PPTT_LINE_SIZE_VALID (1<<6) /* Line size valid */
|
||||
#define ACPI_PPTT_CACHE_ID_VALID (1<<7) /* Cache ID valid */
|
||||
|
||||
/* Masks for Attributes */
|
||||
|
||||
@ -2108,6 +2277,7 @@ enum AcpiSdevType
|
||||
/* Values for flags above */
|
||||
|
||||
#define ACPI_SDEV_HANDOFF_TO_UNSECURE_OS (1)
|
||||
#define ACPI_SDEV_SECURE_COMPONENTS_PRESENT (1<<1)
|
||||
|
||||
/*
|
||||
* SDEV subtables
|
||||
@ -2125,6 +2295,58 @@ typedef struct acpi_sdev_namespace
|
||||
|
||||
} ACPI_SDEV_NAMESPACE;
|
||||
|
||||
typedef struct acpi_sdev_secure_component
|
||||
{
|
||||
UINT16 SecureComponentOffset;
|
||||
UINT16 SecureComponentLength;
|
||||
|
||||
} ACPI_SDEV_SECURE_COMPONENT;
|
||||
|
||||
|
||||
/*
|
||||
* SDEV sub-subtables ("Components") for above
|
||||
*/
|
||||
typedef struct acpi_sdev_component
|
||||
{
|
||||
ACPI_SDEV_HEADER Header;
|
||||
|
||||
} ACPI_SDEV_COMPONENT;
|
||||
|
||||
|
||||
/* Values for sub-subtable type above */
|
||||
|
||||
enum AcpiSacType
|
||||
{
|
||||
ACPI_SDEV_TYPE_ID_COMPONENT = 0,
|
||||
ACPI_SDEV_TYPE_MEM_COMPONENT = 1
|
||||
};
|
||||
|
||||
typedef struct acpi_sdev_id_component
|
||||
{
|
||||
ACPI_SDEV_HEADER Header;
|
||||
UINT16 HardwareIdOffset;
|
||||
UINT16 HardwareIdLength;
|
||||
UINT16 SubsystemIdOffset;
|
||||
UINT16 SubsystemIdLength;
|
||||
UINT16 HardwareRevision;
|
||||
UINT8 HardwareRevPresent;
|
||||
UINT8 ClassCodePresent;
|
||||
UINT8 PciBaseClass;
|
||||
UINT8 PciSubClass;
|
||||
UINT8 PciProgrammingXface;
|
||||
|
||||
} ACPI_SDEV_ID_COMPONENT;
|
||||
|
||||
typedef struct acpi_sdev_mem_component
|
||||
{
|
||||
ACPI_SDEV_HEADER Header;
|
||||
UINT32 Reserved;
|
||||
UINT64 MemoryBaseAddress;
|
||||
UINT64 MemoryLength;
|
||||
|
||||
} ACPI_SDEV_MEM_COMPONENT;
|
||||
|
||||
|
||||
/* 1: PCIe Endpoint Device Based Device Structure */
|
||||
|
||||
typedef struct acpi_sdev_pcie
|
||||
|
@ -177,6 +177,7 @@
|
||||
#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
|
||||
#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
|
||||
#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
|
||||
#define ACPI_SIG_VIOT "VIOT" /* Virtual I/O Translation Table */
|
||||
#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
|
||||
#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
|
||||
#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
|
||||
@ -463,7 +464,8 @@ typedef struct acpi_srat_generic_affinity
|
||||
|
||||
/* Flags for ACPI_SRAT_GENERIC_AFFINITY */
|
||||
|
||||
#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
|
||||
#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
|
||||
#define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS (1<<1) /* ACPI 6.4 */
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -682,6 +684,86 @@ typedef struct acpi_table_uefi
|
||||
} ACPI_TABLE_UEFI;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* VIOT - Virtual I/O Translation Table
|
||||
* Version 1
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
typedef struct acpi_table_viot
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
|
||||
UINT16 NodeCount;
|
||||
UINT16 NodeOffset;
|
||||
UINT8 Reserved[8];
|
||||
|
||||
} ACPI_TABLE_VIOT;
|
||||
|
||||
/* VIOT subtable header */
|
||||
|
||||
typedef struct acpi_viot_header
|
||||
{
|
||||
UINT8 Type;
|
||||
UINT8 Reserved;
|
||||
UINT16 Length;
|
||||
|
||||
} ACPI_VIOT_HEADER;
|
||||
|
||||
/* Values for Type field above */
|
||||
|
||||
enum AcpiViotNodeType
|
||||
{
|
||||
ACPI_VIOT_NODE_PCI_RANGE = 0x01,
|
||||
ACPI_VIOT_NODE_MMIO = 0x02,
|
||||
ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 0x03,
|
||||
ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 0x04,
|
||||
ACPI_VIOT_RESERVED = 0x05
|
||||
};
|
||||
|
||||
/* VIOT subtables */
|
||||
|
||||
typedef struct acpi_viot_pci_range
|
||||
{
|
||||
ACPI_VIOT_HEADER Header;
|
||||
UINT32 EndpointStart;
|
||||
UINT16 SegmentStart;
|
||||
UINT16 SegmentEnd;
|
||||
UINT16 BdfStart;
|
||||
UINT16 BdfEnd;
|
||||
UINT16 OutputNode;
|
||||
UINT8 Reserved[6];
|
||||
|
||||
} ACPI_VIOT_PCI_RANGE;
|
||||
|
||||
typedef struct acpi_viot_mmio
|
||||
{
|
||||
ACPI_VIOT_HEADER Header;
|
||||
UINT32 Endpoint;
|
||||
UINT64 BaseAddress;
|
||||
UINT16 OutputNode;
|
||||
UINT8 Reserved[6];
|
||||
|
||||
} ACPI_VIOT_MMIO;
|
||||
|
||||
typedef struct acpi_viot_virtio_iommu_pci
|
||||
{
|
||||
ACPI_VIOT_HEADER Header;
|
||||
UINT16 Segment;
|
||||
UINT16 Bdf;
|
||||
UINT8 Reserved[8];
|
||||
|
||||
} ACPI_VIOT_VIRTIO_IOMMU_PCI;
|
||||
|
||||
typedef struct acpi_viot_virtio_iommu_mmio
|
||||
{
|
||||
ACPI_VIOT_HEADER Header;
|
||||
UINT8 Reserved[4];
|
||||
UINT64 BaseAddress;
|
||||
|
||||
} ACPI_VIOT_VIRTIO_IOMMU_MMIO;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* WAET - Windows ACPI Emulated devices Table
|
||||
|
@ -171,6 +171,7 @@ extern const char *AcpiGbl_MaxDecode[];
|
||||
extern const char *AcpiGbl_MemDecode[];
|
||||
extern const char *AcpiGbl_MinDecode[];
|
||||
extern const char *AcpiGbl_MtpDecode[];
|
||||
extern const char *AcpiGbl_PhyDecode[];
|
||||
extern const char *AcpiGbl_RngDecode[];
|
||||
extern const char *AcpiGbl_RwDecode[];
|
||||
extern const char *AcpiGbl_ShrDecode[];
|
||||
|
@ -210,5 +210,6 @@
|
||||
#define UUID_DEVICE_GRAPHS "ab02a46b-74c7-45a2-bd68-f7d344ef2153"
|
||||
#define UUID_HIERARCHICAL_DATA_EXTENSION "dbb8e3e6-5886-4ba6-8795-1319f52a966b"
|
||||
#define UUID_CORESIGHT_GRAPH "3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd"
|
||||
#define UUID_USB4_CAPABILITIES "23a0d13a-26ab-486c-9c5f-0ffa525a575a"
|
||||
|
||||
#endif /* __ACUUID_H__ */
|
||||
|
@ -183,6 +183,7 @@
|
||||
#define ACPI_RESTAG_IORESTRICTION "_IOR"
|
||||
#define ACPI_RESTAG_LENGTH "_LEN"
|
||||
#define ACPI_RESTAG_LINE "_LIN"
|
||||
#define ACPI_RESTAG_LOCALPORT "_PRT"
|
||||
#define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
|
||||
#define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
|
||||
#define ACPI_RESTAG_MAXADDR "_MAX"
|
||||
@ -192,6 +193,7 @@
|
||||
#define ACPI_RESTAG_MODE "_MOD"
|
||||
#define ACPI_RESTAG_PARITY "_PAR"
|
||||
#define ACPI_RESTAG_PHASE "_PHA"
|
||||
#define ACPI_RESTAG_PHYTYPE "_PHY"
|
||||
#define ACPI_RESTAG_PIN "_PIN"
|
||||
#define ACPI_RESTAG_PINCONFIG "_PPI"
|
||||
#define ACPI_RESTAG_PINCONFIG_TYPE "_TYP"
|
||||
@ -568,7 +570,8 @@ typedef struct aml_resource_gpio
|
||||
#define AML_RESOURCE_I2C_SERIALBUSTYPE 1
|
||||
#define AML_RESOURCE_SPI_SERIALBUSTYPE 2
|
||||
#define AML_RESOURCE_UART_SERIALBUSTYPE 3
|
||||
#define AML_RESOURCE_MAX_SERIALBUSTYPE 3
|
||||
#define AML_RESOURCE_CSI2_SERIALBUSTYPE 4
|
||||
#define AML_RESOURCE_MAX_SERIALBUSTYPE 4
|
||||
#define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */
|
||||
|
||||
typedef struct aml_resource_common_serialbus
|
||||
@ -578,6 +581,24 @@ typedef struct aml_resource_common_serialbus
|
||||
|
||||
} AML_RESOURCE_COMMON_SERIALBUS;
|
||||
|
||||
|
||||
typedef struct aml_resource_csi2_serialbus
|
||||
{
|
||||
AML_RESOURCE_LARGE_HEADER_COMMON
|
||||
AML_RESOURCE_SERIAL_COMMON
|
||||
|
||||
/*
|
||||
* Optional fields follow immediately:
|
||||
* 1) Vendor Data bytes
|
||||
* 2) Resource Source String
|
||||
*/
|
||||
|
||||
} AML_RESOURCE_CSI2_SERIALBUS;
|
||||
|
||||
#define AML_RESOURCE_CSI2_REVISION 1 /* ACPI 6.4 */
|
||||
#define AML_RESOURCE_CSI2_TYPE_REVISION 1 /* ACPI 6.4 */
|
||||
#define AML_RESOURCE_CSI2_MIN_DATA_LEN 0 /* ACPI 6.4 */
|
||||
|
||||
typedef struct aml_resource_i2c_serialbus
|
||||
{
|
||||
AML_RESOURCE_LARGE_HEADER_COMMON
|
||||
@ -617,7 +638,6 @@ typedef struct aml_resource_spi_serialbus
|
||||
#define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */
|
||||
#define AML_RESOURCE_SPI_MIN_DATA_LEN 9
|
||||
|
||||
|
||||
typedef struct aml_resource_uart_serialbus
|
||||
{
|
||||
AML_RESOURCE_LARGE_HEADER_COMMON
|
||||
@ -792,6 +812,7 @@ typedef union aml_resource
|
||||
AML_RESOURCE_I2C_SERIALBUS I2cSerialBus;
|
||||
AML_RESOURCE_SPI_SERIALBUS SpiSerialBus;
|
||||
AML_RESOURCE_UART_SERIALBUS UartSerialBus;
|
||||
AML_RESOURCE_CSI2_SERIALBUS Csi2SerialBus;
|
||||
AML_RESOURCE_COMMON_SERIALBUS CommonSerialBus;
|
||||
AML_RESOURCE_PIN_FUNCTION PinFunction;
|
||||
AML_RESOURCE_PIN_CONFIG PinConfig;
|
||||
|
@ -205,7 +205,7 @@ typedef __builtin_va_list va_list;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Explictly mark intentional explicit fallthrough to silence
|
||||
* Explicitly mark intentional explicit fallthrough to silence
|
||||
* -Wimplicit-fallthrough in GCC 7.1+.
|
||||
*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user