summaryrefslogtreecommitdiff
path: root/ArmPkg/Drivers/AcpiTables/exynos5250-arndale/Erst.aslc
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPkg/Drivers/AcpiTables/exynos5250-arndale/Erst.aslc')
-rw-r--r--ArmPkg/Drivers/AcpiTables/exynos5250-arndale/Erst.aslc319
1 files changed, 319 insertions, 0 deletions
diff --git a/ArmPkg/Drivers/AcpiTables/exynos5250-arndale/Erst.aslc b/ArmPkg/Drivers/AcpiTables/exynos5250-arndale/Erst.aslc
new file mode 100644
index 000000000..cbceeb2b8
--- /dev/null
+++ b/ArmPkg/Drivers/AcpiTables/exynos5250-arndale/Erst.aslc
@@ -0,0 +1,319 @@
+/*
+ * Copyright (c) 2013 Linaro Limited
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the BSD License which accompanies
+ * this distribution, and is available at
+ * http://opensource.org/licenses/bsd-license.php
+ *
+ * Contributors:
+ * Yi Li - yi.li@linaro.org
+*/
+
+#include <IndustryStandard/Acpi.h>
+#include <Platform.h>
+
+#define ACTION_BEGIN_WRITE_OPERATION 0x00
+#define ACTION_BEGIN_READ_OPERATION 0x01
+#define ACTION_BEGIN_CLEAR_OPERATION 0x02
+#define ACTION_END_OPERATION 0x03
+#define ACTION_SET_RECORD_OFFSET 0x04
+#define ACTION_EXECUTE_OPEARTION 0x05
+#define ACTION_CHECK_BUSY_STATUS 0x06
+#define ACTION_GET_COMMAND_STATUS 0x07
+#define ACTION_GET_RECORD_IDENTIFIER 0x08
+#define ACTION_SET_RECORD_IDENTIFIER 0x09
+#define ACTION_GET_RECORD_COUNT 0x0A
+#define ACTION_BEGIN_DUMMY_WRITE_OPERATION 0x0B
+#define ACTION_GET_NEXT_RECORD_IDENTIFIER 0x0C
+#define ACTION_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
+#define ACTION_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
+#define ACTION_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
+
+
+#pragma pack (1)
+
+typedef struct {
+ UINT8 Operation;
+ UINT8 Instruction;
+ UINT8 Flags;
+ UINT8 Reserved8;
+ EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE Register;
+ UINT64 Value;
+ UINT64 Mask;
+} EFI_ACPI_5_0_SERIALIZATION_ACTION;
+
+
+typedef struct {
+ EFI_ACPI_DESCRIPTION_HEADER Header;
+ UINT32 SerializationHeaderSize;
+ UINT32 Resv1;
+ UINT32 InstructionEntryCount;
+ EFI_ACPI_5_0_SERIALIZATION_ACTION InstructionEntry[16];
+} EFI_ACPI_5_0_BOOT_ERROR_RECORD_SERIALIZATION_TABLE;
+
+typedef struct {
+ EFI_ACPI_DESCRIPTION_HEADER Header;
+ UINT32 SerializationHeaderSize;
+ UINT32 Resv1;
+ UINT32 InstructionEntryCount;
+} EFI_ACPI_5_0_SERIALIZATION_ACTION_HEADER;
+#pragma pack ()
+
+
+
+EFI_ACPI_5_0_BOOT_ERROR_RECORD_SERIALIZATION_TABLE Erst = {
+ {
+ EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE,
+ sizeof (EFI_ACPI_5_0_BOOT_ERROR_RECORD_SERIALIZATION_TABLE),
+ EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION,
+ 0x00, // Checksum will be updated at runtime
+ {EFI_ACPI_OEM_ID},
+ EFI_ACPI_OEM_TABLE_ID,
+ 0x00000002,
+ EFI_ACPI_CREATOR_ID,
+ EFI_ACPI_CREATOR_REVISION
+ },
+ sizeof(EFI_ACPI_5_0_SERIALIZATION_ACTION_HEADER),
+ EFI_ACPI_RESERVED_DWORD,
+ 0x10,
+ {
+ { //Action0
+ 0x00, // Action:Begin Operation
+ 0x3, // Instruction:Write Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000100, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action1
+ 0x01, // Action:Begin Read Operation
+ 0x3, // Instruction:Write Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000108, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action2
+ 0x02, // Action:Begin Clear Operation
+ 0x3, // Instruction:Write Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000110, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action3
+ 0x03, // Action:Begin Clear Operation
+ 0x4, // Instruction:Noop
+ 0x1, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000118, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action4
+ 0x04, // Action:Begin Clear Operation
+ 0x2, // Instruction:Write Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000120, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action5
+ 0x05, // Action:Execute Operation
+ 0x3, // Instruction:Write Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_5_0_SYSTEM_MEMORY, //Space ID
+ 0x8, //Bit Width
+ 0x0, //Bit Offset
+ 0x1, //Encoded Access Width
+ 0x43000128, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action6
+ 0x06, // Action:Check Busy Status
+ 0x1, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000130, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action7
+ 0x07, // Action:Get Command Status
+ 0x0, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000138, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action8
+ 0x08, // Action:Get Command Status
+ 0x0, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000140, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action9
+ 0x09, // Action:Set Record Identifier
+ 0x2, // Instruction:Write Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000148, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action10
+ 0x0A, // Action:Get Record Count
+ 0x0, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000150, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action11
+ 0x0B, // Action:Begin Dummy Write
+ 0x3, // Instruction:Write Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000158, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action12
+ 0x0C, // Action:Unused/Unknown Action
+ 0x0, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000160, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action13
+ 0x0D, // Action:Get Error Address Range
+ 0x0, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000168, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action14
+ 0x0E, // Action:Get Error Address Length
+ 0x0, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000170, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ { //Action15
+ 0x0F, // Action:Get Error Attributes
+ 0x0, // Instruction:Read Register
+ 0x0, // Flags
+ 0x00, // Reserved
+ /*Register Region*/
+ EFI_ACPI_3_0_SYSTEM_MEMORY, //Space ID
+ 0x40, //Bit Width
+ 0x0, //Bit Offset
+ 0x4, //Encoded Access Width
+ 0x43000178, //Address
+ 0x0000000000000000, // Value for InjectError()
+ 0xFFFFFFFFFFFFFFFF // Mask is only valid for 32-bits
+ },
+ }
+
+};
+
+VOID*
+ReferenceAcpiTable (
+ VOID
+ )
+{
+ //
+ // Reference the table being generated to prevent the optimizer from removing the
+ // data structure from the exeutable
+ //
+ return (VOID*)&Erst;
+}