summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Moore <Robert.Moore@intel.com>2012-10-12 12:21:06 -0700
committerRobert Moore <Robert.Moore@intel.com>2012-10-12 12:21:06 -0700
commitd4fa24b0bfd4e8e548d2070926c61bdb766b48d6 (patch)
tree126b529963acdc4016f63e181c058a48ba772c16
parent7f4976610592ce4fe5b1c2895daa7f6410970d55 (diff)
downloadacpica-d4fa24b0bfd4e8e548d2070926c61bdb766b48d6.tar.gz
Update support for ACPI 5.0 MPST table.
Fixes some problems introduced by late changes to the table as it was added to the ACPI 5.0 specification. Both the table compiler and the disassembler and the main header support for the table.
-rw-r--r--source/common/dmtbdump.c4
-rw-r--r--source/common/dmtbinfo.c12
-rw-r--r--source/compiler/dttable.c4
-rw-r--r--source/include/actbl3.h22
4 files changed, 21 insertions, 21 deletions
diff --git a/source/common/dmtbdump.c b/source/common/dmtbdump.c
index b602d4351..6affbead5 100644
--- a/source/common/dmtbdump.c
+++ b/source/common/dmtbdump.c
@@ -1683,8 +1683,8 @@ AcpiDmDumpMpst (
ACPI_MPST_DATA_HDR *SubTable1;
ACPI_MPST_POWER_DATA *SubTable2;
UINT16 SubtableCount;
- UINT8 PowerStateCount;
- UINT8 ComponentCount;
+ UINT32 PowerStateCount;
+ UINT32 ComponentCount;
/* Main table */
diff --git a/source/common/dmtbinfo.c b/source/common/dmtbinfo.c
index 56f827e9e..84ee162a6 100644
--- a/source/common/dmtbinfo.c
+++ b/source/common/dmtbinfo.c
@@ -1590,10 +1590,10 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] =
{
- {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved1), "Reserved", 0},
{ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0},
- {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0},
+ {ACPI_DMT_UINT24, ACPI_MPST_OFFSET (Reserved1[0]), "Reserved", 0},
{ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0},
+ {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0},
ACPI_DMT_TERMINATOR
};
@@ -1613,9 +1613,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[] =
{ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", DT_LENGTH},
{ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0},
{ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0},
- {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0},
- {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0},
- {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (Reserved2), "Reserved", 0},
+ {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0},
+ {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0},
ACPI_DMT_TERMINATOR
};
@@ -1641,6 +1640,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] =
{
{ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0},
+ {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (Reserved), "Reserved", 0},
ACPI_DMT_TERMINATOR
};
@@ -1648,7 +1648,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] =
{
- {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Revision), "Revision", 0},
+ {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (StructureId), "Structure ID", 0},
{ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
{ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0},
{ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0},
diff --git a/source/compiler/dttable.c b/source/compiler/dttable.c
index 98b64c47e..c7abe3975 100644
--- a/source/compiler/dttable.c
+++ b/source/compiler/dttable.c
@@ -1256,8 +1256,8 @@ DtCompileMpst (
ACPI_MPST_POWER_NODE *MpstPowerNode;
ACPI_MPST_DATA_HDR *MpstDataHeader;
UINT16 SubtableCount;
- UINT8 PowerStateCount;
- UINT8 ComponentCount;
+ UINT32 PowerStateCount;
+ UINT32 ComponentCount;
/* Main table */
diff --git a/source/include/actbl3.h b/source/include/actbl3.h
index 531257fc4..84b5e004d 100644
--- a/source/include/actbl3.h
+++ b/source/include/actbl3.h
@@ -391,10 +391,10 @@ typedef struct acpi_table_gtdt
******************************************************************************/
#define ACPI_MPST_CHANNEL_INFO \
- UINT16 Reserved1; \
UINT8 ChannelId; \
- UINT8 Reserved2; \
- UINT16 PowerNodeCount;
+ UINT8 Reserved1[3]; \
+ UINT16 PowerNodeCount; \
+ UINT16 Reserved2;
/* Main table */
@@ -425,9 +425,8 @@ typedef struct acpi_mpst_power_node
UINT32 Length;
UINT64 RangeAddress;
UINT64 RangeLength;
- UINT8 NumPowerStates;
- UINT8 NumPhysicalComponents;
- UINT16 Reserved2;
+ UINT32 NumPowerStates;
+ UINT32 NumPhysicalComponents;
} ACPI_MPST_POWER_NODE;
@@ -462,12 +461,13 @@ typedef struct acpi_mpst_component
typedef struct acpi_mpst_data_hdr
{
UINT16 CharacteristicsCount;
+ UINT16 Reserved;
} ACPI_MPST_DATA_HDR;
typedef struct acpi_mpst_power_data
{
- UINT8 Revision;
+ UINT8 StructureId;
UINT8 Flags;
UINT16 Reserved1;
UINT32 AveragePower;
@@ -491,10 +491,10 @@ typedef struct acpi_mpst_shared
UINT32 Signature;
UINT16 PccCommand;
UINT16 PccStatus;
- UINT16 CommandRegister;
- UINT16 StatusRegister;
- UINT16 PowerStateId;
- UINT16 PowerNodeId;
+ UINT32 CommandRegister;
+ UINT32 StatusRegister;
+ UINT32 PowerStateId;
+ UINT32 PowerNodeId;
UINT64 EnergyConsumed;
UINT64 AveragePower;