summaryrefslogtreecommitdiff
path: root/ArmPkg/Drivers/AcpiTables/foundation-v8/Csrt.aslc
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPkg/Drivers/AcpiTables/foundation-v8/Csrt.aslc')
-rw-r--r--ArmPkg/Drivers/AcpiTables/foundation-v8/Csrt.aslc274
1 files changed, 274 insertions, 0 deletions
diff --git a/ArmPkg/Drivers/AcpiTables/foundation-v8/Csrt.aslc b/ArmPkg/Drivers/AcpiTables/foundation-v8/Csrt.aslc
new file mode 100644
index 000000000..44e516fe6
--- /dev/null
+++ b/ArmPkg/Drivers/AcpiTables/foundation-v8/Csrt.aslc
@@ -0,0 +1,274 @@
+/*
+ * 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 ACPI_5_0_CSRT_VERSION 0x1
+
+#define ACPI_RESOURCE_GROUP_NUM 0x2
+#define ACPI_RESOURCE_DESCRIPTOR_NUM0 0x7
+#define ACPI_RESOURCE_DESCRIPTOR_NUM1 0x9
+
+/*resource group header*/
+typedef struct
+{
+ UINT32 Length;
+ UINT32 VendorID;
+ UINT32 SubvendorID;
+ UINT16 DeviceID;
+ UINT16 SubdeviceID;
+ UINT16 Revision;
+ UINT16 Reserved;
+ UINT32 SharedInfoLength;
+}EFI_ACPI_5_0_CRST_RESOURCE_GROUP_HEADER;
+
+/*resource descriptor header*/
+typedef struct
+{
+ UINT32 Length;
+ UINT16 ResourceType;
+ UINT16 ResourceSubType;
+ UINT32 UID;
+}EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR;
+
+
+/*timer share info*/
+typedef struct
+{
+ UINT16 usMajorVersion;
+ UINT16 usMinorVersion;
+ UINT32 uwMMIOBaseAddressLow;
+ UINT32 uwMMIOBaseAddressHigh;
+ UINT32 uwGSIInterrupt;
+ UINT8 ucInterruptPolarity;
+ UINT8 ucInterruptMode;
+ UINT8 ucNumChannels;
+ UINT8 ucDMAAddressWidth;
+ UINT16 usDMAAddressWidth;
+ UINT16 usNumHandshakeSignals;
+ UINT32 uwMaxBlockSize;
+}EFI_ACPI_5_0_CRST_SHARE_INFO;
+
+
+
+/*timer resource group header*/
+typedef struct
+{
+ EFI_ACPI_5_0_CRST_RESOURCE_GROUP_HEADER head;
+ EFI_ACPI_5_0_CRST_SHARE_INFO ShareInfo; /*share info*/
+ EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR ResourceDescriptor[ACPI_RESOURCE_DESCRIPTOR_NUM0];
+}EFI_ACPI_5_0_CRST_RESOURCE_GROUP0;
+
+/*timer resource group header*/
+typedef struct
+{
+ EFI_ACPI_5_0_CRST_RESOURCE_GROUP_HEADER head;
+ EFI_ACPI_5_0_CRST_SHARE_INFO ShareInfo; /*share info*/
+ EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR ResourceDescriptor[ACPI_RESOURCE_DESCRIPTOR_NUM1];
+}EFI_ACPI_5_0_CRST_RESOURCE_GROUP1;
+
+
+
+
+/*CSRT structure*/
+typedef struct {
+ EFI_ACPI_DESCRIPTION_HEADER Header;
+ EFI_ACPI_5_0_CRST_RESOURCE_GROUP0 ResourceGroup0;
+ EFI_ACPI_5_0_CRST_RESOURCE_GROUP1 ResourceGroup1;
+} EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE;
+
+
+
+
+EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE Csrt = {
+ {
+ EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE,
+ sizeof (EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE),
+ ACPI_5_0_CSRT_VERSION,
+ 0x00, // Checksum will be updated at runtime
+ {EFI_ACPI_OEM_ID_INTEL},
+ EFI_ACPI_OEM_TABLE_ID_INTEL,
+ EFI_ACPI_OEM_REVISION,
+ EFI_ACPI_CREATOR_ID,
+ EFI_ACPI_CREATOR_REVISION
+ },
+ /*EFI_ACPI_5_0_CRST_RESOURCE_GROUP0*/
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_GROUP0), /*Length*/
+ EFI_ACPI_CREATOR_ID, /*VendorID*/
+ 0, /*SubvendorID*/
+ 0x9C60, /*DeviceID*/
+ 0x0, /*SubdeviceID*/
+ 0002, /*Revision*/
+ 0, /*Reserved*/
+ sizeof(EFI_ACPI_5_0_CRST_SHARE_INFO), /*SharedInfoLength*/
+ /*share info*/
+ {
+ 0x1, /*Major Version*/
+ 0x0, /*Minor Version*/
+ 0xB3A00000, /*MMIO Base Address Low*/
+ 0x00000000, /*MMIO Base Address High*/
+ 0x0000002A, /*GSI Interrupt*/
+ 0x2, /*Interrupt Polarity*/
+ 0x0, /*Interrupt Mode*/
+ 0x6, /*Num Channels*/
+ 0x20, /*DMA Address Width*/
+ 0x0, /*Base Request Line*/
+ 0x10, /*Num Handshake Signals*/
+ 0xfff, /*Max Block Size*/
+ },
+ {
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x1, /*ResourceSubType*/
+ 0x20495053 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x30414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x31414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x32414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x33414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x34414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x35414843 /*UID*/
+ },
+ }
+ },
+ {
+ /*header*/
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_GROUP1), /*Length*/
+ EFI_ACPI_CREATOR_ID, /*VendorID*/
+ 0, /*SubvendorID*/
+ 0x9C60, /*DeviceID*/
+ 0x0, /*SubdeviceID*/
+ 0003, /*Revision*/
+ 0, /*Reserved*/
+ sizeof(EFI_ACPI_5_0_CRST_SHARE_INFO), /*SharedInfoLength*/
+ },
+ /*share info*/
+ {
+ 0x1, /*Major Version*/
+ 0x0, /*Minor Version*/
+ 0x0, /*MMIO Base Address Low*/
+ 0x00000000, /*MMIO Base Address High*/
+ 0x0000002B, /*GSI Interrupt*/
+ 0x2, /*Interrupt Polarity*/
+ 0x0, /*Interrupt Mode*/
+ 0x8, /*Num Channels*/
+ 0x20, /*DMA Address Width*/
+ 0x10, /*Base Request Line*/
+ 0x10, /*Num Handshake Signals*/
+ 0xfff, /*Max Block Size*/
+ },
+ {
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x1, /*ResourceSubType*/
+ 0x20433249 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x30414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x31414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x32414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x33414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x34414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x35414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x36414843 /*UID*/
+ },
+ {
+ sizeof(EFI_ACPI_5_0_CRST_RESOURCE_DESCRIPTOR), /*Length*/
+ 0x3, /*ResourceType*/
+ 0x0, /*ResourceSubType*/
+ 0x37414843 /*UID*/
+ },
+ },
+ },
+
+
+};
+
+
+VOID*
+ReferenceAcpiTable (
+ VOID
+ )
+{
+ //
+ // Reference the table being generated to prevent the optimizer from removing the
+ // data structure from the exeutable
+ //
+ return (VOID*)&Csrt;
+}