[edk2] [Patch][edk2-platforms/devel-IntelAtomProcessorE3900] Add MinnowBorad3Module EEPROM binary

Guo, Mang posted 1 patch 6 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/edk2 tags/patchew/22D2C85ED001C54AA20BFE3B0E4751D1526D140D@SHSMSX103.ccr.corp.intel.com
.../EepromAsl/Audio/Audio_codec_10EC5645.asl       |   47 +
.../EepromAsl/Audio/Audio_codec_10EC5651.asl       |   47 +
.../EepromAsl/Audio/Audio_codec_1AEC8731.asl       |   47 +
.../EepromAsl/Audio/Audio_codec_DLGS7212.asl       |   47 +
.../Eeprom/EepromAsl/Audio/Audio_codec_INT34C1.asl |   81 +
.../Eeprom/EepromAsl/Audio/Audio_codec_INT34E0.asl |   81 +
.../Eeprom/EepromAsl/Audio/Vibra_INT34E1.asl       |   45 +
.../Eeprom/EepromAsl/Charger/Charger_BQ258900.asl  |   46 +
.../Eeprom/EepromAsl/EepromSsdt0.asl               |   65 +
.../Eeprom/EepromAsl/I2C/Eeprom_M24M02.asl         |   41 +
.../Eeprom/EepromAsl/I2C/I2C_Bus2_TestDevice.asl   |   62 +
.../Eeprom/EepromAsl/SPI/SPI1_CS0_TestDevice.asl   |   35 +
.../Eeprom/EepromAsl/SPI/SPI2_CS0_TestDevice.asl   |   35 +
.../Eeprom/EepromAsl/Touch/Touch_ATML1000.asl      |  124 ++
.../Board/MinnowBoard3Module/Eeprom/EepromStruct.h |  169 ++
.../MinnowBoard3Module/Eeprom/GenerateBinary.py    |   94 +
.../Board/MinnowBoard3Module/Eeprom/Logo/Intel.bmp |  Bin 0 -> 16126 bytes
.../Board/MinnowBoard3Module/Eeprom/Logo/blank.bmp |  Bin 0 -> 1198 bytes
.../Board/MinnowBoard3Module/Eeprom/MB3-Defs.cfg   |  200 ++
.../Board/MinnowBoard3Module/Eeprom/MB3-Eeprom.bin |  Bin 0 -> 32688 bytes
.../Board/MinnowBoard3Module/Eeprom/MB3-Prj.cfg    | 2252 ++++++++++++++++++++
.../Eeprom/RSA-keys/MB3-private.pem                |   27 +
.../Eeprom/RSA-keys/MB3-public.bin                 |  Bin 0 -> 256 bytes
.../Eeprom/RSA-keys/MB3-public.pem                 |    9 +
.../Eeprom/VBT/Vbt_bxt_t_TianmaMipi.bin            |  Bin 0 -> 6656 bytes
.../Eeprom/VBT/Vbt_bxt_t_fab_b.bin                 |  Bin 0 -> 7168 bytes
.../Eeprom/VBT/Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin   |  Bin 0 -> 6656 bytes
27 files changed, 3554 insertions(+)
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5645.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5651.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_1AEC8731.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_DLGS7212.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34C1.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34E0.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Vibra_INT34E1.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Charger/Charger_BQ258900.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/EepromSsdt0.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/Eeprom_M24M02.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/I2C_Bus2_TestDevice.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI1_CS0_TestDevice.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI2_CS0_TestDevice.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Touch/Touch_ATML1000.asl
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromStruct.h
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/GenerateBinary.py
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/Intel.bmp
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/blank.bmp
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Defs.cfg
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Eeprom.bin
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Prj.cfg
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-private.pem
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.bin
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.pem
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_TianmaMipi.bin
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b.bin
create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin
[edk2] [Patch][edk2-platforms/devel-IntelAtomProcessorE3900] Add MinnowBorad3Module EEPROM binary
Posted by Guo, Mang 6 years, 1 month ago
Add MinnowBorad3Module EEPROM binary and related code for generating binary.
Correct code format.

Cc: David Wei <david.wei@intel.com>
Cc: Mike Wu  <mike.wu@intel.com>

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Kelly Steele <kelly.steele@intel.com>
Signed-off-by: Guo Mang <mang.guo@intel.com>
---
 .../EepromAsl/Audio/Audio_codec_10EC5645.asl       |   47 +
 .../EepromAsl/Audio/Audio_codec_10EC5651.asl       |   47 +
 .../EepromAsl/Audio/Audio_codec_1AEC8731.asl       |   47 +
 .../EepromAsl/Audio/Audio_codec_DLGS7212.asl       |   47 +
 .../Eeprom/EepromAsl/Audio/Audio_codec_INT34C1.asl |   81 +
 .../Eeprom/EepromAsl/Audio/Audio_codec_INT34E0.asl |   81 +
 .../Eeprom/EepromAsl/Audio/Vibra_INT34E1.asl       |   45 +
 .../Eeprom/EepromAsl/Charger/Charger_BQ258900.asl  |   46 +
 .../Eeprom/EepromAsl/EepromSsdt0.asl               |   65 +
 .../Eeprom/EepromAsl/I2C/Eeprom_M24M02.asl         |   41 +
 .../Eeprom/EepromAsl/I2C/I2C_Bus2_TestDevice.asl   |   62 +
 .../Eeprom/EepromAsl/SPI/SPI1_CS0_TestDevice.asl   |   35 +
 .../Eeprom/EepromAsl/SPI/SPI2_CS0_TestDevice.asl   |   35 +
 .../Eeprom/EepromAsl/Touch/Touch_ATML1000.asl      |  124 ++
 .../Board/MinnowBoard3Module/Eeprom/EepromStruct.h |  169 ++
 .../MinnowBoard3Module/Eeprom/GenerateBinary.py    |   94 +
 .../Board/MinnowBoard3Module/Eeprom/Logo/Intel.bmp |  Bin 0 -> 16126 bytes
 .../Board/MinnowBoard3Module/Eeprom/Logo/blank.bmp |  Bin 0 -> 1198 bytes
 .../Board/MinnowBoard3Module/Eeprom/MB3-Defs.cfg   |  200 ++
 .../Board/MinnowBoard3Module/Eeprom/MB3-Eeprom.bin |  Bin 0 -> 32688 bytes
 .../Board/MinnowBoard3Module/Eeprom/MB3-Prj.cfg    | 2252 ++++++++++++++++++++
 .../Eeprom/RSA-keys/MB3-private.pem                |   27 +
 .../Eeprom/RSA-keys/MB3-public.bin                 |  Bin 0 -> 256 bytes
 .../Eeprom/RSA-keys/MB3-public.pem                 |    9 +
 .../Eeprom/VBT/Vbt_bxt_t_TianmaMipi.bin            |  Bin 0 -> 6656 bytes
 .../Eeprom/VBT/Vbt_bxt_t_fab_b.bin                 |  Bin 0 -> 7168 bytes
 .../Eeprom/VBT/Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin   |  Bin 0 -> 6656 bytes
 27 files changed, 3554 insertions(+)
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5645.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5651.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_1AEC8731.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_DLGS7212.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34C1.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34E0.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Vibra_INT34E1.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Charger/Charger_BQ258900.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/EepromSsdt0.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/Eeprom_M24M02.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/I2C_Bus2_TestDevice.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI1_CS0_TestDevice.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI2_CS0_TestDevice.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Touch/Touch_ATML1000.asl
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromStruct.h
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/GenerateBinary.py
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/Intel.bmp
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/blank.bmp
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Defs.cfg
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Eeprom.bin
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Prj.cfg
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-private.pem
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.bin
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.pem
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_TianmaMipi.bin
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b.bin
 create mode 100644 Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin

diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5645.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5645.asl
new file mode 100644
index 0000000..e3a8e19
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5645.asl
@@ -0,0 +1,47 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+    Device (RT45) {
+        Name (_ADR, 0x1A)  // _ADR: Address
+        Name (_HID, "10EC5645")  // _HID: Hardware ID
+        Name (_CID, "10EC5645")  // _CID: Compatible ID
+        Name (_DDN, "Realtek RT5645 Audio Codec")  // _DDN: DOS Device Name
+        Name (_UID, One)  // _UID: Unique ID
+
+        Name (SBUF, ResourceTemplate () {
+          I2CSerialBus (
+            0x1A,               // SlaveAddress: bus address
+            ControllerInitiated,// SlaveMode: default to ControllerInitiated
+            400000,             // ConnectionSpeed: in Hz
+            AddressingMode7Bit, // Addressing Mode: default to 7 bit
+            "\\_SB.PCI0.I2C1",  // ResourceSource: I2C bus controller name
+            ,                   // Descriptor Name: creates name for offset of resource descriptor
+          )  // VendorData
+          GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0,"\\_SB.GPO0") {20} //  AUD_INT
+        })
+
+        Method (_CRS, 0, Serialized) { // _CRS: Current Resource Settings
+          Return (SBUF)
+        }
+
+        Method (_STA, 0, NotSerialized) { // _STA: Status
+          Return (0x0F)
+        }
+
+        Method (_DIS, 0, NotSerialized) { // _DIS: Disable Device
+        }
+    }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5651.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5651.asl
new file mode 100644
index 0000000..b82d360
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_10EC5651.asl
@@ -0,0 +1,47 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+    Device (RT51) {
+        Name (_ADR, 0x1A)  // _ADR: Address
+        Name (_HID, "10EC5651")  // _HID: Hardware ID
+        Name (_CID, "10EC5651")  // _CID: Compatible ID
+        Name (_DDN, "Realtek RT5651 Audio Codec")  // _DDN: DOS Device Name
+        Name (_UID, One)  // _UID: Unique ID
+
+        Name (SBUF, ResourceTemplate () {
+          I2CSerialBus (
+            0x1A,               // SlaveAddress: bus address
+            ControllerInitiated,// SlaveMode: default to ControllerInitiated
+            400000,             // ConnectionSpeed: in Hz
+            AddressingMode7Bit, // Addressing Mode: default to 7 bit
+            "\\_SB.PCI0.I2C1",  // ResourceSource: I2C bus controller name
+            ,                   // Descriptor Name: creates name for offset of resource descriptor
+          )  // VendorData
+          GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0,"\\_SB.GPO0") {20} //  AUD_INT
+        })
+
+        Method (_CRS, 0, Serialized) { // _CRS: Current Resource Settings
+          Return (SBUF)
+        }
+
+        Method (_STA, 0, NotSerialized) { // _STA: Status
+          Return (0x0F)
+        }
+
+        Method (_DIS, 0, NotSerialized) { // _DIS: Disable Device
+        }
+    }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_1AEC8731.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_1AEC8731.asl
new file mode 100644
index 0000000..eb373c7
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_1AEC8731.asl
@@ -0,0 +1,47 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+    Device (WLFC) {
+        Name (_ADR, 0x1A)  // _ADR: Address
+        Name (_HID, "1AEC8731")  // _HID: Hardware ID
+        Name (_CID, "1AEC8731")  // _CID: Compatible ID
+        Name (_DDN, "Wolfson WM8731 Audio Codec")  // _DDN: DOS Device Name
+        Name (_UID, One)  // _UID: Unique ID
+
+        Name (SBUF, ResourceTemplate () {
+          I2CSerialBus (
+            0x1A,               // SlaveAddress: bus address
+            ControllerInitiated,// SlaveMode: default to ControllerInitiated
+            400000,             // ConnectionSpeed: in Hz
+            AddressingMode7Bit, // Addressing Mode: default to 7 bit
+            "\\_SB.PCI0.I2C1",  // ResourceSource: I2C bus controller name
+            ,                   // Descriptor Name: creates name for offset of resource descriptor
+          )  // VendorData
+          GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0,"\\_SB.GPO0") {20} //  AUD_INT
+        })
+
+        Method (_CRS, 0, Serialized) { // _CRS: Current Resource Settings
+          Return (SBUF)
+        }
+
+        Method (_STA, 0, NotSerialized) { // _STA: Status
+          Return (0x0F)
+        }
+
+        Method (_DIS, 0, NotSerialized) { // _DIS: Disable Device
+        }
+    }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_DLGS7212.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_DLGS7212.asl
new file mode 100644
index 0000000..28200d9
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_DLGS7212.asl
@@ -0,0 +1,47 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+    Device (DLGS) {
+        Name (_ADR, 0x1A)  // _ADR: Address
+        Name (_HID, "DLGS7212")  // _HID: Hardware ID
+        Name (_CID, "DLGS7212")  // _CID: Compatible ID
+        Name (_DDN, "Dialog 7212 I2S Audio Codec")  // _DDN: DOS Device Name
+        Name (_UID, One)  // _UID: Unique ID
+
+        Name (SBUF, ResourceTemplate () {
+          I2CSerialBus (
+            0x1A,               // SlaveAddress: bus address
+            ControllerInitiated,// SlaveMode: default to ControllerInitiated
+            400000,             // ConnectionSpeed: in Hz
+            AddressingMode7Bit, // Addressing Mode: default to 7 bit
+            "\\_SB.PCI0.I2C1",  // ResourceSource: I2C bus controller name
+            ,                   // Descriptor Name: creates name for offset of resource descriptor
+          )  // VendorData
+          GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0,"\\_SB.GPO0") {20} //  AUD_INT
+        })
+
+        Method (_CRS, 0, Serialized) { // _CRS: Current Resource Settings
+          Return (SBUF)
+        }
+
+        Method (_STA, 0, NotSerialized) { // _STA: Status
+          Return (0x0F)
+        }
+
+        Method (_DIS, 0, NotSerialized) { // _DIS: Disable Device
+        }
+    }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34C1.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34C1.asl
new file mode 100644
index 0000000..86f97d2
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34C1.asl
@@ -0,0 +1,81 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+    Device (ACD0) { // Audio Codec driver I2C
+      Name (_ADR, 0x1A)
+      Name (_HID, "INT34C1")
+      Name (_CID, "INT34C1")
+      Name (_DDN, "Intel(R) Smart Sound Technology Audio Codec" )
+      Name (_UID, 1)
+
+      Name (SBUF, ResourceTemplate () {
+        I2CSerialBus (
+          0x1A,               // SlaveAddress: bus address
+          ,                   // SlaveMode: default to ControllerInitiated
+          400000,             // ConnectionSpeed: in Hz
+          ,                   // Addressing Mode: default to 7 bit
+          "\\_SB.PCI0.I2C1",  // ResourceSource: I2C bus controller name
+          ,                   // Descriptor Name: creates name for offset of resource descriptor
+        )  // VendorData
+        GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0,"\\_SB.GPO0") {20} //  AUD_INT
+      })
+
+      Method (_CRS, 0x0, NotSerialized) {
+        Return (SBUF)
+      }
+
+      Method (_STA, 0x0, NotSerialized) {
+        If (LEqual (ADOS, 1)) {  // 1-WM8281
+          Return (0x0F)
+        }
+        Return (0x0)
+      }
+
+      Method (_DIS, 0x0, NotSerialized) {
+      }
+
+      Method (DEVS) {
+        Return (88)
+      }
+
+      Method (DEVC) {
+        Return (Buffer () {
+            0x54, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x10, 0xFF, 0xFF, 0xFF,
+            0x32, 0xFF, 0xFF, 0xFF,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x37, 0x03, 0xD0, 0x83,
+            0x00, 0x00, 0x70, 0xC0,
+            0x00, 0x00, 0x00, 0x00,
+            0x04, 0x00, 0x01, 0x02,
+            0x0F, 0x00, 0x00, 0x00,
+            0x0F, 0x00, 0x00, 0x00,
+            0x02, 0x40, 0x00, 0x00,
+            0x04, 0x00, 0x00, 0x00,
+            0x00, 0x0F, 0x07, 0x07,
+            0x20, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00
+        })
+      }
+    } // Device (ACD0)
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34E0.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34E0.asl
new file mode 100644
index 0000000..3314799
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Audio_codec_INT34E0.asl
@@ -0,0 +1,81 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+    Device (ACD1) {
+        Name (_ADR, 0x1A)  // _ADR: Address
+        Name (_HID, "INT34E0")  // _HID: Hardware ID
+        Name (_CID, "INT34E0")  // _CID: Compatible ID
+        Name (_DDN, "Intel(R) Smart Sound Technology Audio Codec")  // _DDN: DOS Device Name
+        Name (_UID, One)  // _UID: Unique ID
+
+        Name (SBUF, ResourceTemplate () {
+          I2CSerialBus (
+            0x1A,               // SlaveAddress: bus address
+            ,                   // SlaveMode: default to ControllerInitiated
+            400000,             // ConnectionSpeed: in Hz
+            ,                   // Addressing Mode: default to 7 bit
+            "\\_SB.PCI0.I2C1",  // ResourceSource: I2C bus controller name
+            ,                   // Descriptor Name: creates name for offset of resource descriptor
+          )  // VendorData
+          GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0,"\\_SB.GPO0") {64} //  AUD_INT
+        })
+
+        Method (_CRS, 0, Serialized) { // _CRS: Current Resource Settings
+          Return (SBUF)
+        }
+
+        Method (_STA, 0, NotSerialized) { // _STA: Status
+            If (LEqual (ADOS, 0x02)) {
+                Return (0x0F)
+            }
+            Return (Zero)
+        }
+
+        Method (_DIS, 0, NotSerialized) { // _DIS: Disable Device
+        }
+
+        Method (DEVS) {
+            Return (88)
+        }
+
+        Method (DEVC) {
+            Return (Buffer () {
+            0x54, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x10, 0xFF, 0xFF, 0xFF,
+            0x32, 0xFF, 0xFF, 0xFF,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x37, 0x03, 0xD0, 0x83,
+            0x00, 0x00, 0x70, 0xC0,
+            0x00, 0x00, 0x00, 0x00,
+            0x04, 0x00, 0x01, 0x02,
+            0x0F, 0x00, 0x00, 0x00,
+            0x0F, 0x00, 0x00, 0x00,
+            0x02, 0x40, 0x00, 0x00,
+            0x04, 0x00, 0x00, 0x00,
+            0x00, 0x0F, 0x07, 0x07,
+            0x20, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00
+            })
+        }
+    }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Vibra_INT34E1.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Vibra_INT34E1.asl
new file mode 100644
index 0000000..978b5c8
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Audio/Vibra_INT34E1.asl
@@ -0,0 +1,45 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB) {
+  Device (VIBR) {
+    Name (_ADR, Zero)                               // _ADR: Address
+    Name (_HID, "INT34E1")                          // _HID: Hardware ID
+    Name (_CID, "INT34E1")                          // _CID: Compatible ID
+    Name (_DDN, "Intel(R) Vibra Driver - VIB8601")  // _DDN: DOS Device Name
+    Name (_UID, One)                                // _UID: Unique ID
+    Name (RBUF, ResourceTemplate () {
+      // SOC GPIO_35
+      GpioIo (Exclusive, PullDefault, , , IoRestrictionOutputOnly,
+             "\\_SB.GPO0", , ResourceConsumer, ,
+             )
+          { // Pin list
+            0x0023
+          }
+    })
+
+    Method (_CRS, 0, NotSerialized) {                // _CRS: Current Resource Settings
+      Return (RBUF)
+    }
+
+    Method (_STA, 0x0, NotSerialized) {
+      //If (LNotEqual (OSSL, 1)) {                      // Android only
+      //    Return (0xF)
+      //}
+      Return (0xF)
+    }
+
+  } // Device (VIBR)
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Charger/Charger_BQ258900.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Charger/Charger_BQ258900.asl
new file mode 100644
index 0000000..f1314d2
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Charger/Charger_BQ258900.asl
@@ -0,0 +1,46 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+  Device (ANCH) {
+    Name (_ADR, 0x6B)
+    Name (_HID, "BQ258900")           // _HID: Hardware ID
+    Name (_CID, "BQ258900")           // _CID: Compatible ID
+    Name (_DDN, "Charger Controller") // _DDN: DOS Device Name
+    Name (RBUF, ResourceTemplate () {
+      I2CSerialBus(
+        0x6B,               // SlaveAddress: bus address
+        ,                   // SlaveMode: default to ControllerInitiated
+        400000,             // ConnectionSpeed: in Hz
+        ,                   // Addressing Mode: default to 7 bit
+        "\\_SB.PCI0.I2C1",  // ResourceSource: I2C bus controller name
+        ,                   // Descriptor Name: creates name for offset of resource descriptor
+      )  // VendorData
+      GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0, "\\_SB.GPO0") {19} //  CHARGER_INT
+      GpioIo (Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly, "\\_SB.GPO0", 0x00, ResourceConsumer, ,) {15}
+    })
+
+    Method (_CRS, 0, NotSerialized) { // _CRS: Current Resource Settings
+      Return (RBUF) /* \_SB_.PCI0.I2C1.ANCH.RBUF */
+    }
+
+    Method (_STA, 0, NotSerialized) { // _STA: Status
+      If (LEqual(OSSL, One))          // Linux
+        {Return (0x0F)}
+      Else
+        {Return (Zero)}
+    }
+  }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/EepromSsdt0.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/EepromSsdt0.asl
new file mode 100644
index 0000000..e21f7a6
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/EepromSsdt0.asl
@@ -0,0 +1,65 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+DefinitionBlock (
+    "EepromSsdt1.aml",
+    "SSDT",
+    1,
+    "INTEL",
+    "EprmSdt0",
+    0x1000
+    )
+{
+  External (ADOS, IntObj)
+  External (OSSL, IntObj)
+  External (VTKB, IntObj)
+  External (\_SB.GPO0, DeviceObj)
+  External (\_SB.GPO2, DeviceObj)
+  External (\_SB.IPC1, DeviceObj)
+  External (\_SB.IPC1.PMIC, DeviceObj)
+  External (\_SB.IPC1.PMIC.AVBG, IntObj)
+  External (\_SB.IPC1.PMIC.AVBL, IntObj)
+  External (\_SB.IPC1.PMIC.GP3B, IntObj)
+  External (\_SB.IPC1.PMIC.GP6B, IntObj)
+  External (\_SB.IPC1.PMIC.VP3B, IntObj)
+  External (\_SB.IPC1.PMIC.VP6B, IntObj)
+  External (\_SB.PCI0, DeviceObj)
+  External (\_SB.PCI0.I2C1, DeviceObj)
+  External (\_SB.PCI0.I2C2, DeviceObj)
+  External (\_SB.PCI0.I2C3, DeviceObj)
+  External (\_SB.PCI0.SPI1, DeviceObj)
+  External (\_SB.PCI0.SPI2, DeviceObj)
+
+  // include ("Charger/Charger_BQ258900.asl")
+  include ("I2C/Eeprom_M24M02.asl")
+
+  // These are 6 examples of audio codecs
+  // include ("Audio/Audio_codec_10EC5645.asl")
+  // include ("Audio/Audio_codec_10EC5651.asl")
+  // include ("Audio/Audio_codec_1AEC8731.asl")
+  // include ("Audio/Audio_codec_INT34C1.asl")
+  // include ("Audio/Audio_codec_INT34E0.asl")
+  // include ("Audio/Audio_codec_DLGS7212.asl")
+
+  // This is an example of how to add an I2C device and set the speed
+  // include ("I2C/I2C_Bus2_TestDevice.asl")
+
+  // This is an example of how to add a SPI device
+  // include ("SPI/SPI1_CS0_TestDevice.asl")
+  // include ("SPI/SPI2_CS0_TestDevice.asl")
+
+  // This is an example of how to add a touch panel
+  // include ("Touch/Touch_ATML1000.asl")
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/Eeprom_M24M02.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/Eeprom_M24M02.asl
new file mode 100644
index 0000000..c6c8658
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/Eeprom_M24M02.asl
@@ -0,0 +1,41 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C1) {
+  Device (EEP0) {
+    Name (_ADR, 0x50)      // _ADR: Address
+    Name (_HID, "INT3500") // _HID: Hardware ID
+    Name (_CID, "24m02")   // _CID: Compatible ID
+    Name (_DDN, "EEPROM")  // _DDN: DOS Device Name
+    Name (RBUF, ResourceTemplate () {
+       I2cSerialBus (
+           0x0050,                // SlaveAddress: bus address
+       ControllerInitiated,   // SlaveMode: default to ControllerInitiated
+       400000,                // ConnectionSpeed: in Hz
+       AddressingMode7Bit,    // Addressing Mode: default to 7 bit
+       "\\_SB.PCI0.I2C1",     // ResourceSource: I2C bus controller name
+       0x00                   // Descriptor Name: creates name for offset of resource descriptor
+   ) // Vendor Data
+    })
+
+    Method (_CRS, 0, NotSerialized) { // _CRS: Current Resource Settings
+      Return (RBUF) /* \_SB_.PCI0.I2C1.EEP0.RBUF */
+    }
+
+    Method (_STA, 0, NotSerialized) { // _STA: Status
+      Return (0x0F)
+    }
+  }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/I2C_Bus2_TestDevice.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/I2C_Bus2_TestDevice.asl
new file mode 100644
index 0000000..7f30ac2
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/I2C/I2C_Bus2_TestDevice.asl
@@ -0,0 +1,62 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C2)
+{
+    Name (_DSD, Package () {
+        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+        Package () {
+            Package () {"clock-frequency", 100000},
+        }
+    })
+}
+
+Scope (\_SB.PCI0.I2C2)
+{
+    Device (ACCL) {
+        Name (_HID, "PRP0001")
+        Name (_DDN, "ADXL345 Three-Axis Digital Accelerometer")
+        Name (_CRS, ResourceTemplate () {
+            I2cSerialBus (
+                0x53,                   // Bus address
+                ControllerInitiated,    // Don't care
+                400000,                 // Max speed of the chip
+                AddressingMode7Bit,     // 7-bit addressing
+                "\\_SB.PCI0.I2C2",      // I2C host controller
+                0                       // Must be 0
+            )
+                GpioInt (
+                    Edge,
+                    ActiveHigh,
+                    ExclusiveAndWake,
+                    PullNone,
+                    0x0000,
+                    "\\_SB.GPO2",
+                    0x00,
+                    ResourceConsumer, ,
+                )
+                {   // Pin list
+                    28                  // ISH_GPIO_6_LS
+                }
+        })
+
+        Name (_DSD, Package () {
+            ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+            Package () {
+                Package () {"compatible", Package () {"adi,adxl34x"}},
+            }
+        })
+    }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI1_CS0_TestDevice.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI1_CS0_TestDevice.asl
new file mode 100644
index 0000000..9037abd
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI1_CS0_TestDevice.asl
@@ -0,0 +1,35 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.SPI1) {
+  Device (TP0) {
+    Name (_HID, "SPT0001")
+    Name (_DDN, "SPI test device connected to CS0")
+    Name (_CRS, ResourceTemplate () {
+      SpiSerialBus (
+        0,                      // Chip select (0, 1, 2)
+        PolarityLow,            // Chip select is active low
+        FourWireMode,           // Full duplex
+        8,                      // Bits per word is 8 (byte)
+        ControllerInitiated,    // Don't care
+        1000000,                // 1 MHz
+        ClockPolarityLow,       // SPI mode 0
+        ClockPhaseFirst,        // SPI mode 0
+        "\\_SB.PCI0.SPI1",      // SPI host controller
+        0                       // Must be 0
+      )
+    })
+  }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI2_CS0_TestDevice.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI2_CS0_TestDevice.asl
new file mode 100644
index 0000000..b1c3b62
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/SPI/SPI2_CS0_TestDevice.asl
@@ -0,0 +1,35 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.SPI2) {
+  Device (TP0) {
+    Name (_HID, "SPT0001")
+    Name (_DDN, "SPI test device connected to CS0")
+    Name (_CRS, ResourceTemplate () {
+      SpiSerialBus (
+        0,                      // Chip select (0, 1, 2)
+        PolarityLow,            // Chip select is active low
+        FourWireMode,           // Full duplex
+        8,                      // Bits per word is 8 (byte)
+        ControllerInitiated,    // Don't care
+        1000000,                // 1 MHz
+        ClockPolarityLow,       // SPI mode 0
+        ClockPhaseFirst,        // SPI mode 0
+        "\\_SB.PCI0.SPI2",      // SPI host controller
+        0                       // Must be 0
+      )
+    })
+  }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Touch/Touch_ATML1000.asl b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Touch/Touch_ATML1000.asl
new file mode 100644
index 0000000..14f1811
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromAsl/Touch/Touch_ATML1000.asl
@@ -0,0 +1,124 @@
+/** @file
+
+Copyright (c) 2017 - 2018 Intel Corporation.
+
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution.  The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+Scope (\_SB.PCI0.I2C3)
+{
+  Device (TCS0)
+  {
+    Name (_ADR, 0x0)
+    Name (_HID, "ATML0001")
+    Name (_CID, "PNP0C50")
+    Name (_S0W, 0)
+
+    Method (_PS3, 0, Serialized) {
+      If(LEqual (\_SB.IPC1.PMIC.AVBL, 1)){
+//        Store(0x00, \_SB.IPC1.PMIC.VP6B)  // Tianma - 0 put the device to power saving state
+        Store(0x00, \_SB.IPC1.PMIC.VP3B)  // Truly  - 0 put the device to power saving state
+
+        If(LEqual (\_SB.IPC1.PMIC.AVBG, 1)){
+//           Store(0x01, \_SB.IPC1.PMIC.GP6B)  // Tianma
+           Store(0x01, \_SB.IPC1.PMIC.GP3B)  // Truly
+        }
+        Sleep(120)
+      }
+    }
+
+    Method (_PS0, 0, Serialized) {
+      If(LEqual (\_SB.IPC1.PMIC.AVBL, 1)){
+//        Store(0x01, \_SB.IPC1.PMIC.VP6B) // Tianma
+        Store(0x01, \_SB.IPC1.PMIC.VP3B) // Truly
+
+        If(LEqual (\_SB.IPC1.PMIC.AVBG, 1)){
+//          Store(0x01, \_SB.IPC1.PMIC.GP6B)   // Tianma - 1 put the device to normal state
+          Store(0x01, \_SB.IPC1.PMIC.GP3B)   // Truly  - 1 put the device to normal state
+        }
+        Sleep(120)
+      }
+    }
+
+    Name (XBUF, ResourceTemplate (){ // resource fot HR16 truly panel Windows
+      I2CSerialBus(0x4A, //SlaveAddress: bus address 1386->1664
+                       , //SlaveMode: default to ControllerInitiated
+                 400000, //400000 ConnectionSpeed: in Hz
+                       , //Addressing Mode: default to 7 bit
+      "\\_SB.PCI0.I2C3", //ResourceSource: I2C bus controller name
+                       , //Descriptor Name: creates name for offset of resource descriptor
+                     ) //VendorData
+      GpioInt(Edge,  ActiveLow, ExclusiveAndWake, PullUp, 0, "\\_SB.GPO0", ) {22}  // GPIO_22 TOUCH_INT
+      GpioIo(Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly, "\\_SB.GPO2", ) {28} // GPIO_152 RESET
+    })
+
+    Method(_CRS, 0x0, NotSerialized){
+      Return (XBUF)
+    }
+
+    Method(_DSM, 0x4, Serialized){
+      // BreakPoint
+      Store ("Method _DSM begin", Debug)
+
+      If(LEqual(Arg0, ToUUID("3CDFF6F7-4267-4555-AD05-B30A3D8938DE")))
+      {
+        // DSM Function
+        switch(ToInteger(Arg2))
+        {
+          // Function 0: Query function, return based on revision
+          case(0)
+          {
+            // DSM Revision
+            switch(ToInteger(Arg1))
+            {
+              // Revision 1: Function 1 supported
+              case(1)
+              {
+                Store ("Method _DSM Function Query", Debug)
+                Return(Buffer(One) { 0x03 })
+              }
+
+              default
+              {
+                // Revision 2+: no functions supported
+                Return(Buffer(One) { 0x00 })
+              }
+            }
+          }
+
+          // Function 1 : HID Function
+          case(1)
+          {
+            Store ("Method _DSM Function HID", Debug)
+
+            // HID Descriptor Address
+            Return(0x0000)
+          }
+
+          default
+          {
+            // Functions 2+: not supported
+            Return(0x0000)
+          }
+        }
+      }else{
+        // No other GUIDs supported
+        Return(Buffer(One) { 0x00 })
+      }
+    }
+    Method(_STA, 0x0, NotSerialized){
+    If (LEqual(VTKB,2)){ // hide discrete touch when integrated touch is enabled
+       Return(0x0)
+    }
+      Return(0xF)
+    }
+  }
+}
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromStruct.h b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromStruct.h
new file mode 100644
index 0000000..316f5b2
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/EepromStruct.h
@@ -0,0 +1,169 @@
+#ifndef _EEPROM_LAYOUT_H_
+#define _EEPROM_LAYOUT_H_
+
+#pragma pack(1)
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    UINT32  structlength;
+    UINT32  crc32;
+    UINT32  crclength;
+    UINT32  version;
+    CHAR8   reserved[16];
+}EEPROM_HEADER;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   reserved[16];
+//  UINT8   acpitbl[0];
+}ACPI_TABLE;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   manuname[16];
+    CHAR8   brdname[16];
+    CHAR8   brdserial[16];
+    UINT32  boardid;
+    UINT32  fabid;
+    UINT32  ecid;
+    UINT8   boardtype;
+    CHAR8   reserved[19];
+}BOARD_INFO_TABLE;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   partlabel[16];
+    UINT32  blklength;
+    UINT16  pagesize;
+    UINT32  partsize;
+    UINT8   busnumber;
+    UINT8   master;
+    UINT8   speed;
+    CHAR8   reserved[3];
+//  UINT8   mapdata[0];
+}EEPROM_MAP;
+
+
+typedef struct {
+    CHAR8   maplabel[16];
+    UINT32  length;
+    UINT32  offset;
+    UINT8   address;
+    CHAR8   reserved[7];
+}EEPROM_MAP_RECORD;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   reserved[16];
+//  UINT8   gpiodata[0];
+}GPIO_DATA_HEADER;
+
+
+typedef struct {
+    CHAR8   gpiolabel[16];
+    UINT32  length;
+    UINT32  offset;
+    UINT32  anddata;
+    UINT32  ordata;
+    UINT8   datasize;
+    UINT8   datatype;
+    CHAR8   reserved[14];
+}GPIO_DATA_RECORD;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   reserved[16];
+//  UINT8   hdacodec[0];
+}HDA_CODEC;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    UINT16  spdslot;
+    CHAR8   reserved[14];
+//  UINT8   spddata[0];
+}MEMORY_DATA;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   nicid[8];
+    CHAR8   macaddr[6];
+    UINT16  nicnum;
+    CHAR8   reserved[16];
+//  UINT8   nicdata[0];
+}NIC_INFO;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    UINT16  hashtype;
+    CHAR8   reserved[14];
+//  UINT8   eepromsig[0];
+}SIGNATURE_DATA;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   reserved[16];
+//  UINT8   ucodedata[0];
+}MICROCODE;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   reserved[16];
+//  UINT8   videodata[0];
+}VIDEO_DATA;
+
+
+typedef struct {
+    CHAR8   signature[8];
+    UINT16  vermajor;
+    UINT16  verminor;
+    UINT32  length;
+    CHAR8   reserved[16];
+//  UINT8   logodata[0];
+}LOGO_DATA;
+
+#pragma pack()
+#endif
+
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/GenerateBinary.py b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/GenerateBinary.py
new file mode 100644
index 0000000..92b0cc9
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/GenerateBinary.py
@@ -0,0 +1,94 @@
+#  @file
+#  Script file to generate the EEPROM binary
+#
+#  Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>
+#
+#  This program and the accompanying materials
+#  are licensed and made available under the terms and conditions of the BSD License
+#  which accompanies this distribution.  The full text of the license may be found at
+#  http://opensource.org/licenses/bsd-license.php.
+#
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+
+import glob
+import os
+import subprocess
+import sys
+
+# Version defines
+__version__   = '0.1.0.2'
+VerString     = 'EEPROM binary generation tool, Version #{0}'.format(__version__)
+PythonVersion = 'Python version = {0:X}'.format(sys.hexversion)
+
+def Main():
+  # Set return code to error
+  ReturnCode = 1
+
+  try:
+    # Get paths
+    ThisUtilityPath   = os.path.dirname(os.path.abspath(sys.argv[0]))
+    ParentUtilityPath = os.path.dirname(ThisUtilityPath)
+    UtilityPath       = ParentUtilityPath + '\\Utilities'
+    ProjectName       = 'MB3'
+
+    # MinnowBoard 3 specific defines
+    EepromBinaryUtility  = UtilityPath     + '\\eeprom.py'
+    EepromHashUtility    = UtilityPath     + '\\HashBinary.py'
+    EepromDefinitionFile = ThisUtilityPath + '\\' + ProjectName + '-Defs.cfg'
+    EepromProjectFile    = ThisUtilityPath + '\\' + ProjectName + '-Prj.cfg'
+    EepromBinaryFile     = ThisUtilityPath + '\\' + ProjectName + '-Eeprom.bin'
+    EepromHeaderFile     = ThisUtilityPath + '\\EepromStruct.h'
+    EepromPrivatePemFile = ThisUtilityPath + '\\RSA-keys\\' + ProjectName + '-private.pem'
+    OpenSslPath          = UtilityPath     + '\\OpenSsl\\openssl.exe'
+
+    # Debug prints
+    if False:
+      print('sys.argv[0]          = {0}'.format(sys.argv[0]))
+      print('ThisUtilityPath      = {0}'.format(ThisUtilityPath))
+      print('ParentUtilityPath    = {0}'.format(ParentUtilityPath))
+      print('UtilityPath          = {0}'.format(UtilityPath))
+      print('EepromBinaryFile     = {0}'.format(EepromBinaryFile))
+      print('EepromBinaryUtility  = {0}'.format(EepromBinaryUtility))
+      print('EepromDefinitionFile = {0}'.format(EepromDefinitionFile))
+      print('EepromHashUtility    = {0}'.format(EepromHashUtility))
+      print('EepromHeaderFile     = {0}'.format(EepromHeaderFile))
+      print('EepromPrivatePemFile = {0}'.format(EepromPrivatePemFile))
+      print('EepromProjectFile    = {0}'.format(EepromProjectFile))
+      print('OpenSslPath          = {0}'.format(OpenSslPath))
+
+    # Delete any previous files
+    RemoveFile(EepromBinaryFile)
+    RemoveFile(EepromHeaderFile)
+    for file in glob.glob(ThisUtilityPath + '\\*.aml'):
+      RemoveFile(file)
+
+    # Generate unhashed binary
+    #   eeprom.py -d EepromDefinitionFile -p EepromProjectFile -b EepromBinaryFile --header EepromHeaderFile
+    subprocess.call(['python.exe', EepromBinaryUtility, '-d', EepromDefinitionFile, '-p', EepromProjectFile, '-b', EepromBinaryFile, '--header', EepromHeaderFile])
+
+    # Add hashing/signature
+    #   HashBinary.py OpenSSL EepromBinaryFile [PrivateKey]
+    subprocess.call(['python.exe', EepromHashUtility, OpenSslPath, EepromBinaryFile, EepromPrivatePemFile])
+
+    # Delete temporary files
+    for file in glob.glob(ThisUtilityPath + '\\*.aml'):
+      RemoveFile(file)
+
+    # Clear error code
+    ReturnCode = 0
+
+  finally:
+    return ReturnCode
+
+def RemoveFile(FileName):
+  if os.path.exists(FileName):
+    os.remove(FileName)
+  return
+
+if __name__ == "__main__":
+  print('')
+  print(VerString)
+  print(PythonVersion)
+  sys.exit(Main())
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/Intel.bmp b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/Intel.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..4bbd88512488238d5cd81dbd8e5a856ee784ce2e
GIT binary patch
literal 16126
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
SFx`JF#Yul_zP#?)yZ#T1f9$*f

literal 0
HcmV?d00001

diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/blank.bmp b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/Logo/blank.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..2f6df34d17a94cf815dc7f01520aec5a6a357c96
GIT binary patch
literal 1198
zcmc)Iv5^!p5QX8U3WEZZ1llA5?5^|4p~Jv@p|n9^62r4EhBG>Z^UqlR8C{VAqxtl-
z+O3_D)K5SDe2n}0PJUzb`Q3;3bkF~!|N7;)C;oMc;11~oJ;SgaesR1$|BlE)gD-Mm
zY(xbT45}dvjE(3(qQHk12FAWWH_1Xn7#JJDFeXuG2m@nz$v~pe5C+CZaK|PJ4Pjtx
zRPdUSxLQLP7<-nMNfsKyz}U0wO0v)p2F9K(=_CscVPNdpE+tuL2m@o!R!)+IhA=Sp
zY_pRrG=zb%_Yu@4S!f6YV?(T8k+@dgxZ1$jPzDl(hA=Sp99tz>Xb1yi&yjYLg@!ON
z_8d14kqQlAVC*S{NwUxo2F9K;agv3GFfjHmA#IX{hA=QT%=#UPLPHo_ZBJ=sl7)sa
zF!q#PC0S?)17lA~c9MmLFfjI%tCB1<gn_ZAlqbnTLl_u)%G^m78p6cu+arGQJMn)J
SkNb|t;~If>O<mo8y8Z&MfJZ_A

literal 0
HcmV?d00001

diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Defs.cfg b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Defs.cfg
new file mode 100644
index 0000000..621b7d3
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Defs.cfg
@@ -0,0 +1,200 @@
+; @file
+;  EEPROM structure definitions for Intel Test Platform
+;
+;  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
+;
+;  This program and the accompanying materials
+;  are licensed and made available under the terms and conditions of the BSD License
+;  which accompanies this distribution.  The full text of the license may be found at
+;  http://opensource.org/licenses/bsd-license.php.
+;
+;  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+;  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+;
+
+;
+; Defines:
+; Tool         = Tool name that should process this file
+; Version      = Minimum required version of the tool
+; Type         = Definitions -> Defines structures, Project -> Defines values for a platform
+; Platform     = A nice human readable name describing the platform that the file is intended to be used with.
+; ReqAlignment = The alignment required for each structure
+;
+[Defines]
+Tool             = EEPROM
+Version          = 0.6.0.1
+Type             = Definitions
+Platform         = Minnow Board 3
+ReqAlignment     = 0x10
+RequiredStructs  = EepromHeader|EepromMap|BoardInfoTable
+MaxReqStructSize = 0x1000
+RequiredIndex    = EepromHeader:0|EepromMap:1|BoardInfoTable:2
+
+;
+; Defines that if a structure contains a field with a specific name the filed must be updated with the
+; associated data.  Multiple fields can be specified using the pipe (|) character.
+;
+; StructSize = FieldName = Update the field with the length of the current structure.
+; BinSize    = FieldName = Update the filed with the length of the entire file.
+; Crc32      = FieldName = Update the field with the CRC32 value of the entire file.
+;
+[Patch]
+StructSize = Length
+BinSize    = StructLength
+Crc32      = Crc32
+
+;
+; Structure definitions:
+; FieldName = Offset|Width|Default
+;
+; Optional Values:
+; (Optional) RequiredFirst = 0/1 (Not required first/Required first) (Only one per active config)
+;
+[EepromHeader]
+Signature       = 0x00|0x08|"$Eeprom$"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000020
+StructLength    = 0x10|0x04|0x00000000      ; This field is filled in by the tool
+Crc32           = 0x14|0x04|0x00000000      ; This field is filled in by the tool
+CrcLength       = 0x18|0x04|0x00000000      ; This field is filled in by the tool
+Version         = 0x1C|0x04|0x00000000      ; Version of the EEPROM binary
+Reserved        = 0x20|0x10|0x00
+
+[AcpiTable]
+Signature       = 0x00|0x08|"$AcpiTbl"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+Reserved        = 0x10|0x10|0x00
+AcpiTbl         = 0x20|0x00|0x00            ; Load data using from_file
+
+[BoardInfoTable]
+Signature       = 0x00|0x08|"$BrdInfo"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+ManuName        = 0x10|0x10|""
+BrdName         = 0x20|0x10|""
+BrdSerial       = 0x30|0x10|""
+BoardId         = 0x40|0x04|0x00000000
+FabId           = 0x44|0x04|0x00000000
+EcId            = 0x48|0x04|0x00000000
+BoardType       = 0x4C|0x01|0x00
+Reserved        = 0x4D|0x13|0x00
+
+[EepromMap]
+Signature       = 0x00|0x08|"$EeprMap"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+PartLabel       = 0x10|0x10|""              ; Part label
+BlkLength       = 0x20|0x04|0x00010000      ; size of each map record
+PageSize        = 0x24|0x02|0x0100
+PartSize        = 0x26|0x04|0x00040000      ; total size of EEPROM
+BusNumber       = 0x2A|0x01|0x00            ; I2C bus number for this EEPROM
+Master          = 0x2B|0x01|0x01            ; 1 indicates this is the master EEPROM map structure
+Speed           = 0x2C|0x01|0x01            ; Speed EEPROM should run at
+                                            ;   1 - 100KHz (Standard speed)
+                                            ;   2 - 400KHz (Fast speed)
+                                            ;   3 - 3.4MHz (High speed)
+Reserved        = 0x2D|0x03|0x00
+MapData         = 0x30|0x00|0x00
+
+[EepromMapRecord]
+MapLabel        = 0x00|0x10|""
+Length          = 0x10|0x04|0x00000000
+Offset          = 0x14|0x04|0x00000000      ; offset in EEPROM binary
+Address         = 0x18|0x01|0x0000          ; EEPROM I2C address for this block, 7-bit
+Reserved        = 0x19|0x07|0x00
+
+[GpioDataHeader]
+Signature       = 0x00|0x08|"$GpioDat"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+Reserved        = 0x10|0x10|0x00
+GpioData        = 0x20|0x00|0x00
+
+[GpioDataRecord]
+GpioLabel       = 0x00|0x10|""
+Length          = 0x10|0x04|0x00000030
+Offset          = 0x14|0x04|0x00000000
+AndData         = 0x18|0x04|0xFFFFFFFF
+OrData          = 0x1C|0x04|0x00000000
+DataSize        = 0x20|0x01|0x00
+DataType        = 0x21|0x01|0x00
+Reserved        = 0x22|0x0E|0x00
+
+[HdaCodec]
+Signature       = 0x00|0x08|"$HdCodec"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+Reserved        = 0x10|0x10|0x00
+HdaCodec        = 0x20|0x00|0x00            ; Load data using from_file
+
+[MemoryData]
+Signature       = 0x00|0x08|"$MemCnfg"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+SpdSlot         = 0x10|0x02|0x0000
+Reserved        = 0x12|0x0E|0x00
+SpdData         = 0x20|0x00|0x00            ; Load data using from_file
+
+[NicInfo]
+Signature       = 0x00|0x08|"$MacInfo"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+NicId           = 0x10|0x08|""
+MacAddr         = 0x18|0x06|0x000000000000
+NicNum          = 0x1E|0x02|0x0000
+Reserved        = 0x20|0x10|0x00
+NicData         = 0x30|0x00|0x00            ; Load data using from_file
+
+[SignatureData]
+Signature       = 0x00|0x08|"$PromSig"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0a|0x02|0x0000
+Length          = 0x0c|0x04|0x00000000
+HashType        = 0x10|0x02|0x0000
+Reserved        = 0x12|0x0E|0x00
+EepromSig       = 0x20|0x00|0x00
+   ; - 0x0000 = None    - 0x00 byte hash
+   ; - 0x0001 = MD5     - 0x10 byte hash [signable]
+   ; - 0x0002 = SHA-1   - 0x14 byte hash [signable]
+   ; - 0x0003 = SHA-256 - 0x20 byte hash [signable]
+   ; - 0x0004 = SHA-384 - 0x30 byte hash
+   ; - 0x0005 = SHA-512 - 0x40 byte hash
+   ; - 0x8000 = Flag    - This hash is signed
+   ;                      Currently, UEFI OpenSSL only supports signed MD5,
+   ;                      SHA1, & SHA256 hashes. Since we store both the hash
+   ;                      and signed hash, it is possible to hash with one and
+   ;                      sign with another. Currently the code forces
+   ;                      compliance to the UEFI OpenSSL signable hashes.
+
+[Microcode]
+Signature       = 0x00|0x08|"$uCode$"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0A|0x02|0x0000
+Length          = 0x0C|0x04|0x00000000
+Reserved        = 0x10|0x10|0x00
+UcodeData       = 0x20|0x00|0x00            ; Load data using from_file
+
+[VideoData]
+Signature       = 0x00|0x08|"$Video$"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0a|0x02|0x0000
+Length          = 0x0c|0x04|0x00000000
+Reserved        = 0x10|0x10|0x00
+VideoData       = 0x20|0x00|0x00            ; Load data using from_file
+
+[LogoData]
+Signature       = 0x00|0x08|"$Logo$"
+VerMajor        = 0x08|0x02|0x0001
+VerMinor        = 0x0a|0x02|0x0000
+Length          = 0x0c|0x04|0x00000000
+Reserved        = 0x10|0x10|0x00
+LogoData        = 0x20|0x00|0x00            ; Load data using from_file
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Eeprom.bin b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Eeprom.bin
new file mode 100644
index 0000000000000000000000000000000000000000..752b62d19be3e5dce7cd5aae13083b024d44e09d
GIT binary patch
literal 32688
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

literal 0
HcmV?d00001

diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Prj.cfg b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Prj.cfg
new file mode 100644
index 0000000..4712e2e
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/MB3-Prj.cfg
@@ -0,0 +1,2252 @@
+; @file
+;  EEPROM project for Testing
+;
+;  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
+;
+;  This program and the accompanying materials
+;  are licensed and made available under the terms and conditions of the BSD License
+;  which accompanies this distribution.  The full text of the license may be found at
+;  http://opensource.org/licenses/bsd-license.php.
+;
+;  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+;  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+;
+
+;
+; Defines:
+; Tool           = Tool name that should process this file
+; Version        = Minimum required version of the tool
+; Type           = Definitions -> Defines structures, Project -> Defines values for a platform
+; Platform       = A nice human readable name describing the platform that the file is intended to be used with.
+; OutputFileName = The default file name to be generated for the project.
+;
+[Defines]
+Tool           = EEPROM
+Version        = 0.6.0.1
+Type           = Project
+Platform       = Minnow Board 3 Module
+OutputFileName = MB3-Eeprom.bin
+
+;
+; An ordered list of the structure names (section names) to be included.
+; Struct_n = Section
+;
+[Structures]
+Struct_01 = Header            ; $Eeprom$ structure
+Struct_02 = M24M02EepromMap   ; $EeprMap structure
+Struct_03 = MyBoardInfo       ; $BrdInfo structure
+Struct_04 = GpioData          ; $GpioDat structure
+Struct_05 = DsdtInfo          ; $AcpiTbl structure
+Struct_06 = VideoInfo         ; $Video$  structure
+Struct_07 = LogoInfo          ; $Logo$   structure
+;
+; The SignatureInfo structure needs to be the last structure.
+;
+Struct_99 = SignatureInfo
+
+;
+; Platform Specific Structures:
+; StructType = Structure_Name
+; FieldName  = Value -> Overrides default value
+; FieldName  = from_file(File) -> Loads the data from the specified file
+; FieldName  = from_struct(Section) -> Generates the data using the provided structure reference
+; FieldName  = from_struct_list(Section) -> Generates multiple structures based on a struct list section section reference
+;
+; If a field is not specified the default value is used from the MB3-Defs.cfg file
+;
+[Header]
+StructureType   = EepromHeader
+Version         = 0x00000000         ; Version of the EEPROM binary
+
+[MyBoardInfo]
+StructureType   = BoardInfoTable
+ManuName        = "MSC$"
+BrdName         = "Minnow Board 3$"
+BrdSerial       = ""
+BoardId         = 0x00000000
+FabId           = 0x00000000         ; Test board
+EcId            = 0x00000000
+BoardType       = 0x01
+
+;
+; Describes an StMicro M24M02
+; - Address = 1010xxx
+;                 ||+- A16 offset bit
+;                 |+-- A17 offset bit
+;                 +--- E2 address pin (internal pull-down)
+;
+[M24M02EepromMap]
+StructureType   = EepromMap
+PartLabel       = "StMicro M24M02"   ; Part label
+BlkLength       = 0x00010000         ; size of each map record
+PageSize        = 0x0100             ; part page size
+PartSize        = 0x00040000         ; total size of EEPROM
+BusNumber       = 0x07               ; I2C bus number for this EEPROM
+Speed           = 0x02               ; Fast speed - 400KHz
+MapData         = from_struct_list (M24M02MapDataList)
+
+[M24M02MapData001]
+MapLabel        = "M24M02 Blk #1$"
+StructureType   = EepromMapRecord
+Offset          = 0x00000000
+Address         = 0x54               ; 7-bit address
+
+[M24M02MapData002]
+MapLabel        = "M24M02 Blk #2$"
+StructureType   = EepromMapRecord
+Offset          = 0x00010000
+Address         = 0x55               ; 7-bit address
+
+[M24M02MapData003]
+MapLabel        = "M24M02 Blk #3$"
+StructureType   = EepromMapRecord
+Offset          = 0x00020000
+Address         = 0x56               ; 7-bit address
+
+[M24M02MapData004]
+MapLabel        = "M24M02 Blk #4$"
+StructureType   = EepromMapRecord
+Offset          = 0x00030000
+Address         = 0x57               ; 7-bit address
+
+[DsdtInfo]
+StructureType   = AcpiTable
+AcpiTbl         = from_asl (../Utilities/IASL,EepromAsl/EepromSsdt0.asl)
+;
+; Relative or absolute path to the ASL compiler is the first parameter
+; Relative or absolute path to the ASL file to compile and include
+;
+
+; You need to also uncomment Struct_06 = VideoInfo above
+[VideoInfo]
+StructureType   = VideoData
+VideoData       = from_file (VBT/Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin)
+;
+; 1 | HDMI & Tianma | Vbt_bxt_t_TianmaMipi.bin
+; 2 | HDMI only     | Vbt_bxt_t_fab_b.bin
+; 3 | HDMI & Truly  | Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin
+;
+
+; You need to also uncomment Struct_07 = LogoInfo above
+[LogoInfo]
+StructureType   = LogoData
+LogoData        = from_file (Logo/Intel.bmp)
+;
+; BMP file is the only supported format.
+; Recommend that the BMP file be less than 64KB in size.
+; Use blank.bmp to remove the logo completely.
+
+; You need to also uncomment Struct_99 = SignatureInfo above
+[SignatureInfo]
+StructureType   = SignatureData
+HashType        = 0x8003
+EepromSig       = NULL   ; This will get filled in by a separate utility
+   ; - 0x0000 = None    - 0x00 byte hash
+   ; - 0x0001 = MD5     - 0x10 byte hash [signable]
+   ; - 0x0002 = SHA-1   - 0x14 byte hash [signable]
+   ; - 0x0003 = SHA-256 - 0x20 byte hash [signable]
+   ; - 0x0004 = SHA-384 - 0x30 byte hash
+   ; - 0x0005 = SHA-512 - 0x40 byte hash
+   ; - 0x8000 = Flag    - This hash is signed
+   ;                      Currently, UEFI OpenSSL only supports signed MD5,
+   ;                      SHA1, & SHA256 hashes. Since we store both the hash
+   ;                      and signed hash, it is possible to hash with one and
+   ;                      sign with another. Currently the code forces the
+   ;                      hash and signed hash to be the same hash type.
+
+[GpioData]
+StructureType   = GpioDataHeader
+GpioData        = from_struct_list (GpioDataList)
+
+[GpioData001]
+; SMB_ALERT_1V8 <--> SW_SMB_ALERTB
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P1 PAD0$"
+Offset          = 0x00C005F8
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData002]
+; SMB_ALERT_1V8 <--> SW_SMB_ALERTB
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P1 PAD1$"
+Offset          = 0x00C005FC
+AndData         = 0x00000000
+OrData          = 0x0003F000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData003]
+; SPI0_CS1 <--> NW_GPIO_98
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P31 PAD0$"
+Offset          = 0x00C406B0
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData004]
+; SPI0_CS1 <--> NW_GPIO_98
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P31 PAD1$"
+Offset          = 0x00C406B4
+AndData         = 0x00000000
+OrData          = 0x0003FC4A
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData005]
+; SDIO_WP <--> SW_GPIO_186
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P33 PAD0$"
+Offset          = 0x00C005E0
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData006]
+; SDIO_WP <--> SW_GPIO_186
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P33 PAD1$"
+Offset          = 0x00C005E4
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData007]
+; SDIO_CMD <--> SW_GPIO_171
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P34 PAD0$"
+Offset          = 0x00C00598
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData008]
+; SDIO_CMD <--> SW_GPIO_171
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P34 PAD1$"
+Offset          = 0x00C0059C
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData009]
+; SDIO_CMD <--> SW_GPIO_178
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P34 PAD0$"
+Offset          = 0x00C005D0
+AndData         = 0x00000000
+OrData          = 0x42000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData010]
+; SDIO_CMD <--> SW_GPIO_178
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P34 PAD1$"
+Offset          = 0x00C005D4
+AndData         = 0x00000000
+OrData          = 0x00027000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData011]
+; SDIO_CD <--> SW_GPIO_177
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P35 PAD0$"
+Offset          = 0x00C005C8
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData012]
+; SDIO_CD <--> SW_GPIO_177
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P35 PAD1$"
+Offset          = 0x00C005CC
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData013]
+; SDIO_CK <--> SW_GPIO_166
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P36 PAD0$"
+Offset          = 0x00C00570
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData014]
+; SDIO_CK <--> SW_GPIO_166
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P36 PAD1$"
+Offset          = 0x00C00574
+AndData         = 0x00000000
+OrData          = 0x00005000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData015]
+; SDIO_CK <--> SW_GPIO_172
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P36 PAD0$"
+Offset          = 0x00C005A0
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData016]
+; SDIO_CK <--> SW_GPIO_172
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P36 PAD1$"
+Offset          = 0x00C005A4
+AndData         = 0x00000000
+OrData          = 0x00021100
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData017]
+; SDIO_PWR_EN <--> SW_GPIO_183
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P37 PAD0$"
+Offset          = 0x00C005F0
+AndData         = 0x00000000
+OrData          = 0x44000201
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData018]
+; SDIO_PWR_EN <--> SW_GPIO_183
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P37 PAD1$"
+Offset          = 0x00C005F4
+AndData         = 0x00000000
+OrData          = 0x00001000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData019]
+; SDIO_D0 <--> SW_GPIO_167
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P39 PAD0$"
+Offset          = 0x00C00578
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData020]
+; SDIO_D0 <--> SW_GPIO_167
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P39 PAD1$"
+Offset          = 0x00C0057C
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData021]
+; SDIO_D0 <--> SW_GPIO_173
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P39 PAD0$"
+Offset          = 0x00C005A8
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData022]
+; SDIO_D0 <--> SW_GPIO_173
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P39 PAD1$"
+Offset          = 0x00C005AC
+AndData         = 0x00000000
+OrData          = 0x00001000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData023]
+; SDIO_D1 <--> SW_GPIO_168
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P40 PAD0$"
+Offset          = 0x00C00580
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData024]
+; SDIO_D1 <--> SW_GPIO_168
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P40 PAD1$"
+Offset          = 0x00C00584
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData025]
+; SDIO_D1 <--> SW_GPIO_174
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P40 PAD0$"
+Offset          = 0x00C005B0
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData026]
+; SDIO_D1 <--> SW_GPIO_174
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P40 PAD1$"
+Offset          = 0x00C005B4
+AndData         = 0x00000000
+OrData          = 0x00023100
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData027]
+; SDIO_D2 <--> SW_GPIO_169
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P41 PAD0$"
+Offset          = 0x00C00588
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData028]
+; SDIO_D2 <--> SW_GPIO_169
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P41 PAD1$"
+Offset          = 0x00C0058C
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData029]
+; SDIO_D2 <--> SW_GPIO_175
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P41 PAD0$"
+Offset          = 0x00C005B8
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData030]
+; SDIO_D2 <--> SW_GPIO_175
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P41 PAD1$"
+Offset          = 0x00C005BC
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData031]
+; SDIO_D3 <--> SW_GPIO_170
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P42 PAD0$"
+Offset          = 0x00C00590
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData032]
+; SDIO_D3 <--> SW_GPIO_170
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P42 PAD1$"
+Offset          = 0x00C00594
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData033]
+; SDIO_D3 <--> SW_GPIO_176
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P42 PAD0$"
+Offset          = 0x00C005C0
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData034]
+; SDIO_D3 <--> SW_GPIO_176
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P42 PAD1$"
+Offset          = 0x00C005C4
+AndData         = 0x00000000
+OrData          = 0x00023000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData035]
+; SPI0_CS0 <--> NW_GPIO_97
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P43 PAD0$"
+Offset          = 0x00C406A8
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData036]
+; SPI0_CS0 <--> NW_GPIO_97
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P43 PAD1$"
+Offset          = 0x00C406AC
+AndData         = 0x00000000
+OrData          = 0x0003FC49
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData037]
+; SPI0_CK <--> NW_GPIO_103
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P44 PAD0$"
+Offset          = 0x00C406D8
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData038]
+; SPI0_CK <--> NW_GPIO_103
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P44 PAD1$"
+Offset          = 0x00C406DC
+AndData         = 0x00000000
+OrData          = 0x0003FC4F
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData039]
+; SPI0_DIN <--> NW_GPIO_100
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P45 PAD0$"
+Offset          = 0x00C406C0
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData040]
+; SPI0_DIN <--> NW_GPIO_100
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P45 PAD1$"
+Offset          = 0x00C406C4
+AndData         = 0x00000000
+OrData          = 0x0003FC4C
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData041]
+; SPI0_DO <--> NW_GPIO_99
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P46 PAD0$"
+Offset          = 0x00C406B8
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData042]
+; SPI0_DO <--> NW_GPIO_99
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P46 PAD1$"
+Offset          = 0x00C406BC
+AndData         = 0x00000000
+OrData          = 0x0003FC4B
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData043]
+; ESPI_CS0 <--> NW_GPIO_105
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P54 PAD0$"
+Offset          = 0x00C406F0
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData044]
+; ESPI_CS0 <--> NW_GPIO_105
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P54 PAD1$"
+Offset          = 0x00C406F4
+AndData         = 0x00000000
+OrData          = 0x00001051
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData045]
+; ESPI_CS1 <--> NW_GPIO_106
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P55 PAD0$"
+Offset          = 0x00C406F8
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData046]
+; ESPI_CS1 <--> NW_GPIO_106
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P55 PAD1$"
+Offset          = 0x00C406FC
+AndData         = 0x00000000
+OrData          = 0x00001052
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData047]
+; ESPI_CK <--> NW_GPIO_104
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P56 PAD0$"
+Offset          = 0x00C406E8
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData048]
+; ESPI_CK <--> NW_GPIO_104
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P56 PAD1$"
+Offset          = 0x00C406EC
+AndData         = 0x00000000
+OrData          = 0x00001050
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData049]
+; ESPI_IO_0 <--> NW_GPIO_109
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P57 PAD0$"
+Offset          = 0x00C40700
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData050]
+; ESPI_IO_0 <--> NW_GPIO_109
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P57 PAD1$"
+Offset          = 0x00C40704
+AndData         = 0x00000000
+OrData          = 0x0001D054
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData051]
+; ESPI_IO_1 <--> NW_GPIO_110
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P58 PAD0$"
+Offset          = 0x00C40708
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData052]
+; ESPI_IO_1 <--> NW_GPIO_110
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P58 PAD1$"
+Offset          = 0x00C4070C
+AndData         = 0x00000000
+OrData          = 0x00001055
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData053]
+; USB0_EN_OC <--> NW_GPIO_203
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P62 PAD0$"
+Offset          = 0x00C40580
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData054]
+; USB0_EN_OC <--> NW_GPIO_203
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P62 PAD1$"
+Offset          = 0x00C40584
+AndData         = 0x00000000
+OrData          = 0x0003F000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData055]
+; USB1_EN_OC <--> NW_GPIO_204
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P67 PAD0$"
+Offset          = 0x00C40588
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData056]
+; USB1_EN_OC <--> NW_GPIO_204
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P67 PAD1$"
+Offset          = 0x00C4058C
+AndData         = 0x00000000
+OrData          = 0x0003F000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData057]
+; PCIE_A_RST <--> W_PMU_PLTRST_B
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P75 PAD0$"
+Offset          = 0x00C70628
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData058]
+; PCIE_A_RST <--> W_PMU_PLTRST_B
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P75 PAD1$"
+Offset          = 0x00C7062C
+AndData         = 0x00000000
+OrData          = 0x0003C000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData059]
+; HDMI_HPD/DP1_HPD <--> NW_GPIO_199
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P104 PAD0$"
+Offset          = 0x00C40560
+AndData         = 0x00000000
+OrData          = 0x44000800
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData060]
+; HDMI_HPD/DP1_HPD <--> NW_GPIO_199
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P104 PAD1$"
+Offset          = 0x00C40564
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData061]
+; GPIO0/CAM0_PWR <--> N_GPIO_66
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P108 PAD0$"
+Offset          = 0x00C506B0
+AndData         = 0x00000000
+OrData          = 0x44000200
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData062]
+; GPIO0/CAM0_PWR <--> N_GPIO_66
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P108 PAD1$"
+Offset          = 0x00C506B4
+AndData         = 0x00000000
+OrData          = 0x0001D05F
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData063]
+; GPIO1/CAM1_PWR <--> N_GPIO_67
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P109 PAD0$"
+Offset          = 0x00C506B8
+AndData         = 0x00000000
+OrData          = 0x44000200
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData064]
+; GPIO1/CAM1_PWR <--> N_GPIO_67
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P109 PAD1$"
+Offset          = 0x00C506BC
+AndData         = 0x00000000
+OrData          = 0x0001D060
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData065]
+; GPIO2/CAM0_RST <--> N_GPIO_64
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P110 PAD0$"
+Offset          = 0x00C506A0
+AndData         = 0x00000000
+OrData          = 0x44000200
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData066]
+; GPIO2/CAM0_RST <--> N_GPIO_64
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P110 PAD1$"
+Offset          = 0x00C506A4
+AndData         = 0x00000000
+OrData          = 0x0001D05D
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData067]
+; GPIO3/CAM1_RST <--> N_GPIO_65
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P111 PAD0$"
+Offset          = 0x00C506A8
+AndData         = 0x00000000
+OrData          = 0x44000200
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData068]
+; GPIO3/CAM1_RST <--> N_GPIO_65
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P111 PAD1$"
+Offset          = 0x00C506AC
+AndData         = 0x00000000
+OrData          = 0x0001D05E
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData069]
+; GPIO4/HDA_RST <--> NW_GPIO_84
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P112 PAD0$"
+Offset          = 0x00C40660
+AndData         = 0x00000000
+OrData          = 0x44000800
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData070]
+; GPIO4/HDA_RST <--> NW_GPIO_84
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P112 PAD1$"
+Offset          = 0x00C40664
+AndData         = 0x00000000
+OrData          = 0x0000103D
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData071]
+; GPIO7 <--> N_GPIO_13
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P115 PAD0$"
+Offset          = 0x00C50568
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData072]
+; GPIO7 <--> N_GPIO_13
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P115 PAD1$"
+Offset          = 0x00C5056C
+AndData         = 0x00000000
+OrData          = 0x0001F070
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData073]
+; GPIO8 <--> N_GPIO_14
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P116 PAD0$"
+Offset          = 0x00C50570
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData074]
+; GPIO8 <--> N_GPIO_14
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P116 PAD1$"
+Offset          = 0x00C50574
+AndData         = 0x00000000
+OrData          = 0x0001F071
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData075]
+; GPIO9 <--> N_GPIO_2
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P117 PAD0$"
+Offset          = 0x00C50510
+AndData         = 0x00000000
+OrData          = 0x04000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData076]
+; GPIO9 <--> N_GPIO_2
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P117 PAD1$"
+Offset          = 0x00C50514
+AndData         = 0x00000000
+OrData          = 0x0001F065
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData077]
+; GPIO10 <--> N_GPIO_3
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P118 PAD0$"
+Offset          = 0x00C50518
+AndData         = 0x00000000
+OrData          = 0x04000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData078]
+; GPIO10 <--> N_GPIO_3
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P118 PAD1$"
+Offset          = 0x00C5051C
+AndData         = 0x00000000
+OrData          = 0x0001F066
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData079]
+; GPIO11 <--> N_GPIO_4
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P119 PAD0$"
+Offset          = 0x00C50520
+AndData         = 0x00000000
+OrData          = 0x04000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData080]
+; GPIO11 <--> N_GPIO_4
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P119 PAD1$"
+Offset          = 0x00C50524
+AndData         = 0x00000000
+OrData          = 0x0001F067
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData081]
+; I2C_PM_CK <--> W_GPIO_139
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P121 PAD0$"
+Offset          = 0x00C70578
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData082]
+; I2C_PM_CK <--> W_GPIO_139
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P121 PAD1$"
+Offset          = 0x00C7057C
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData083]
+; I2C_PM_DAT <--> W_GPIO_138
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P122 PAD0$"
+Offset          = 0x00C70570
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData084]
+; I2C_PM_DAT <--> W_GPIO_138
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P122 PAD1$"
+Offset          = 0x00C70574
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData085]
+; BOOT_SEL0 <--> N_GPIO_24
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P123 PAD0$"
+Offset          = 0x00C505C0
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData086]
+; BOOT_SEL0 <--> N_GPIO_24
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P123 PAD1$"
+Offset          = 0x00C505C4
+AndData         = 0x00000000
+OrData          = 0x0001F035
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData087]
+; BOOT_SEL1 <--> N_GPIO_23
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P124 PAD0$"
+Offset          = 0x00C505B8
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData088]
+; BOOT_SEL1 <--> N_GPIO_23
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P124 PAD1$"
+Offset          = 0x00C505BC
+AndData         = 0x00000000
+OrData          = 0x0001F034
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData089]
+; BOOT_SEL2 <--> N_GPIO_22
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P125 PAD0$"
+Offset          = 0x00C505B0
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData090]
+; BOOT_SEL2 <--> N_GPIO_22
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P125 PAD1$"
+Offset          = 0x00C505B4
+AndData         = 0x00000000
+OrData          = 0x0001F033
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData091]
+; SER0_TX <--> N_GPIO_39
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P129 PAD0$"
+Offset          = 0x00C50638
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData092]
+; SER0_TX <--> N_GPIO_39
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P129 PAD1$"
+Offset          = 0x00C5063C
+AndData         = 0x00000000
+OrData          = 0x00003044
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData093]
+; SER0_RX <--> N_GPIO_38
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P130 PAD0$"
+Offset          = 0x00C50630
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData094]
+; SER0_RX <--> N_GPIO_38
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P130 PAD1$"
+Offset          = 0x00C50634
+AndData         = 0x00000000
+OrData          = 0x00003043
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData095]
+; SER0_RTS <--> N_GPIO_40
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P131 PAD0$"
+Offset          = 0x00C50640
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData096]
+; SER0_RTS <--> N_GPIO_40
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P131 PAD1$"
+Offset          = 0x00C50644
+AndData         = 0x00000000
+OrData          = 0x00003145
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData097]
+; SER0_CTS <--> N_GPIO_41
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P132 PAD0$"
+Offset          = 0x00C50648
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData098]
+; SER0_CTS <--> N_GPIO_41
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P132 PAD1$"
+Offset          = 0x00C5064C
+AndData         = 0x00000000
+OrData          = 0x00023146
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData099]
+; SER1_TX <--> N_GPIO_43
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P134 PAD0$"
+Offset          = 0x00C50658
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData100]
+; SER1_TX <--> N_GPIO_43
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P134 PAD1$"
+Offset          = 0x00C5065C
+AndData         = 0x00000000
+OrData          = 0x00003048
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData101]
+; SER1_RX <--> N_GPIO_42
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P135 PAD0$"
+Offset          = 0x00C50650
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData102]
+; SER1_RX <--> N_GPIO_42
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P135 PAD1$"
+Offset          = 0x00C50654
+AndData         = 0x00000000
+OrData          = 0x00003047
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData103]
+; SER2_TX <--> N_GPIO_47
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P136 PAD0$"
+Offset          = 0x00C50678
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData104]
+; SER2_TX <--> N_GPIO_47
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P136 PAD1$"
+Offset          = 0x00C5067C
+AndData         = 0x00000000
+OrData          = 0x0000304C
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData105]
+; SER2_RX <--> N_GPIO_46
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P137 PAD0$"
+Offset          = 0x00C50670
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData106]
+; SER2_RX <--> N_GPIO_46
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P137 PAD1$"
+Offset          = 0x00C50674
+AndData         = 0x00000000
+OrData          = 0x0000304B
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData107]
+; SER2_RTS <--> N_GPIO_48
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P138 PAD0$"
+Offset          = 0x00C50680
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData108]
+; SER2_RTS <--> N_GPIO_48
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P138 PAD1$"
+Offset          = 0x00C50684
+AndData         = 0x00000000
+OrData          = 0x0000304D
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData109]
+; SER2_CTS <--> N_GPIO_49
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P139 PAD0$"
+Offset          = 0x00C50688
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData110]
+; SER2_CTS <--> N_GPIO_49
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P139 PAD1$"
+Offset          = 0x00C5068C
+AndData         = 0x00000000
+OrData          = 0x0000304E
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData111]
+; SER3_TX <--> NW_GPIO_113
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P140 PAD0$"
+Offset          = 0x00C40720
+AndData         = 0x00000000
+OrData          = 0x44000800
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData112]
+; SER3_TX <--> NW_GPIO_113
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P140 PAD1$"
+Offset          = 0x00C40724
+AndData         = 0x00000000
+OrData          = 0x00003058
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData113]
+; SER3_RX <--> NW_GPIO_112
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P141 PAD0$"
+Offset          = 0x00C40718
+AndData         = 0x00000000
+OrData          = 0x44000800
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData114]
+; SER3_RX <--> NW_GPIO_112
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC P141 PAD1$"
+Offset          = 0x00C4071C
+AndData         = 0x00000000
+OrData          = 0x00003057
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData115]
+; CSI1_TX+/I2C_CAM1_CK <--> W_GPIO_135
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S1 PAD0$"
+Offset          = 0x00C70558
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData116]
+; CSI1_TX+/I2C_CAM1_CK <--> W_GPIO_135
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S1 PAD1$"
+Offset          = 0x00C7055C
+AndData         = 0x00000000
+OrData          = 0x00006700
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData117]
+; CSI1_TX-/I2C_CAM1_DAT <--> W_GPIO_134
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S2 PAD0$"
+Offset          = 0x00C70550
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData118]
+; CSI1_TX-/I2C_CAM1_DAT <--> W_GPIO_134
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S2 PAD1$"
+Offset          = 0x00C70554
+AndData         = 0x00000000
+OrData          = 0x00006700
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData119]
+; CSI0_TX+/I2C_CAM0_CK <--> W_GPIO_133
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S5 PAD0$"
+Offset          = 0x00C70548
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData120]
+; CSI0_TX+/I2C_CAM0_CK <--> W_GPIO_133
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S5 PAD1$"
+Offset          = 0x00C7054C
+AndData         = 0x00000000
+OrData          = 0x00012700
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData121]
+; CAM_MCK <--> W_OSC_CLK_OUT_0
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S6 PAD0$"
+Offset          = 0x00C705F0
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData122]
+; CAM_MCK <--> W_OSC_CLK_OUT_0
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S6 PAD1$"
+Offset          = 0x00C705F4
+AndData         = 0x00000000
+OrData          = 0x00001000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData123]
+; CSI0_TX-/I2C_CAM0_DAT <--> W_GPIO_132
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S7 PAD0$"
+Offset          = 0x00C70540
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData124]
+; CSI0_TX-/I2C_CAM0_DAT <--> W_GPIO_132
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S7 PAD1$"
+Offset          = 0x00C70544
+AndData         = 0x00000000
+OrData          = 0x00012700
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData125]
+; AUDIO_MCK <--> NW_GPIO_84
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S38 PAD0$"
+Offset          = 0x00C40660
+AndData         = 0x00000000
+OrData          = 0x44000800
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData126]
+; AUDIO_MCK <--> NW_GPIO_84
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S38 PAD1$"
+Offset          = 0x00C40664
+AndData         = 0x00000000
+OrData          = 0x0000103D
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData127]
+; I2S0_LRCK <--> NW_GPIO_86
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S39 PAD0$"
+Offset          = 0x00C40670
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData128]
+; I2S0_LRCK <--> NW_GPIO_86
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S39 PAD1$"
+Offset          = 0x00C40674
+AndData         = 0x00000000
+OrData          = 0x0003D03F
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData129]
+; I2S0_SDOUT <--> NW_GPIO_88
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S40 PAD0$"
+Offset          = 0x00C40680
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData130]
+; I2S0_SDOUT <--> NW_GPIO_88
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S40 PAD1$"
+Offset          = 0x00C40684
+AndData         = 0x00000000
+OrData          = 0x0003D041
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData131]
+; I2S0_SDIN <--> NW_GPIO_87
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S41 PAD0$"
+Offset          = 0x00C40678
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData132]
+; I2S0_SDIN <--> NW_GPIO_87
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S41 PAD1$"
+Offset          = 0x00C4067C
+AndData         = 0x00000000
+OrData          = 0x00025240
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData133]
+; I2S0_CK <--> NW_GPIO_85
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S42 PAD0$"
+Offset          = 0x00C40668
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData134]
+; I2S0_CK <--> NW_GPIO_85
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S42 PAD1$"
+Offset          = 0x00C4066C
+AndData         = 0x00000000
+OrData          = 0x0003D03E
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData135]
+; I2C_GP_CK <--> W_GPIO_137
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S48 PAD0$"
+Offset          = 0x00C70568
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData136]
+; I2C_GP_CK <--> W_GPIO_137
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S48 PAD1$"
+Offset          = 0x00C7056C
+AndData         = 0x00000000
+OrData          = 0x00013300
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData137]
+; I2C_GP_DAT <--> W_GPIO_136
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S49 PAD0$"
+Offset          = 0x00C70560
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData138]
+; I2C_GP_DAT <--> W_GPIO_136
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S49 PAD1$"
+Offset          = 0x00C70564
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData139]
+; HDA_SYNC/I2S2_LRCK <--> W_GPIO_147
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S50 PAD0$"
+Offset          = 0x00C70588
+AndData         = 0x00000000
+OrData          = 0x44000C00
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData140]
+; HDA_SYNC/I2S2_LRCK <--> W_GPIO_147
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S50 PAD1$"
+Offset          = 0x00C7058C
+AndData         = 0x00000000
+OrData          = 0x0003D000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData141]
+; HDA_SDO/I2S2_SDOUT <--> W_GPIO_149
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S51 PAD0$"
+Offset          = 0x00C70598
+AndData         = 0x00000000
+OrData          = 0x44000C00
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData142]
+; HDA_SDO/I2S2_SDOUT <--> W_GPIO_149
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S51 PAD1$"
+Offset          = 0x00C7059C
+AndData         = 0x00000000
+OrData          = 0x0003D000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData143]
+; HDA_SDI/I2S2_SDIN <--> W_GPIO_148
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S52 PAD0$"
+Offset          = 0x00C70590
+AndData         = 0x00000000
+OrData          = 0x44000C00
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData144]
+; HDA_SDI/I2S2_SDIN <--> W_GPIO_148
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S52 PAD1$"
+Offset          = 0x00C70594
+AndData         = 0x00000000
+OrData          = 0x0003C000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData145]
+; HDA_CK/I2S2_CK <--> W_GPIO_146
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S53 PAD0$"
+Offset          = 0x00C70580
+AndData         = 0x00000000
+OrData          = 0x44000C00
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData146]
+; HDA_CK/I2S2_CK <--> W_GPIO_146
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S53 PAD1$"
+Offset          = 0x00C70584
+AndData         = 0x00000000
+OrData          = 0x0003D000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData147]
+; SATA_ACT <--> N_GPIO_26
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S54 PAD0$"
+Offset          = 0x00C505D0
+AndData         = 0x00000000
+OrData          = 0x44001400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData148]
+; SATA_ACT <--> N_GPIO_26
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S54 PAD1$"
+Offset          = 0x00C505D4
+AndData         = 0x00000000
+OrData          = 0x00001037
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData149]
+; DP0_HPD <--> NW_GPIO_200
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S98 PAD0$"
+Offset          = 0x00C40568
+AndData         = 0x00000000
+OrData          = 0x44000802
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData150]
+; DP0_HPD <--> NW_GPIO_200
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S98 PAD1$"
+Offset          = 0x00C4056C
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData151]
+; LCD1_BKLT_EN <--> NW_GPIO_197
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S107 PAD0$"
+Offset          = 0x00C40550
+AndData         = 0x00000000
+OrData          = 0x44000200
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData152]
+; LCD1_BKLT_EN <--> NW_GPIO_197
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S107 PAD1$"
+Offset          = 0x00C40554
+AndData         = 0x00000000
+OrData          = 0x00001000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData153]
+; LCD1_VDD_EN <--> NW_GPIO_196
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S116 PAD0$"
+Offset          = 0x00C40548
+AndData         = 0x00000000
+OrData          = 0x44000200
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData154]
+; LCD1_VDD_EN <--> NW_GPIO_196
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S116 PAD1$"
+Offset          = 0x00C4054C
+AndData         = 0x00000000
+OrData          = 0x00001000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData155]
+; LCD1_BKLT_PWM <--> NW_GPIO_198
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S122 PAD0$"
+Offset          = 0x00C40558
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData156]
+; LCD1_BKLT_PWM <--> NW_GPIO_198
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S122 PAD1$"
+Offset          = 0x00C4055C
+AndData         = 0x00000000
+OrData          = 0x00001000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData157]
+; LCD0_VDD_EN <--> NW_GPIO_193
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S133 PAD0$"
+Offset          = 0x00C40530
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData158]
+; LCD0_VDD_EN <--> NW_GPIO_193
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S133 PAD1$"
+Offset          = 0x00C40534
+AndData         = 0x00000000
+OrData          = 0x00005000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData159]
+; I2C_LCD_CK <--> W_GPIO_127
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S139 PAD0$"
+Offset          = 0x00C70518
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData160]
+; I2C_LCD_CK <--> W_GPIO_127
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S139 PAD1$"
+Offset          = 0x00C7051C
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData161]
+; I2C_LCD_DAT <--> W_GPIO_126
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S140 PAD0$"
+Offset          = 0x00C70510
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData162]
+; I2C_LCD_DAT <--> W_GPIO_126
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S140 PAD1$"
+Offset          = 0x00C70514
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData163]
+; eDP0_HPD <--> NW_PMC_SPI_FS1
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S144 PAD0$"
+Offset          = 0x00C40598
+AndData         = 0x00000000
+OrData          = 0x44000800
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData164]
+; eDP0_HPD <--> NW_PMC_SPI_FS1
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S144 PAD1$"
+Offset          = 0x00C4059C
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData165]
+; PCIE_WAKE <--> SW_GPIO_206
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S146 PAD0$"
+Offset          = 0x00C00508
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData166]
+; PCIE_WAKE <--> SW_GPIO_206
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S146 PAD1$"
+Offset          = 0x00C0050C
+AndData         = 0x00000000
+OrData          = 0x0003F000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData167]
+; LID <--> N_GPIO_6
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S148 PAD0$"
+Offset          = 0x00C50530
+AndData         = 0x00000000
+OrData          = 0x46080102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData168]
+; LID <--> N_GPIO_6
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S148 PAD1$"
+Offset          = 0x00C50534
+AndData         = 0x00000000
+OrData          = 0x00003069
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData169]
+; SLEEP <--> N_GPIO_7
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S149 PAD0$"
+Offset          = 0x00C50538
+AndData         = 0x00000000
+OrData          = 0x42880102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData170]
+; SLEEP <--> N_GPIO_7
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S149 PAD1$"
+Offset          = 0x00C5053C
+AndData         = 0x00000000
+OrData          = 0x0000306A
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData171]
+; CHARGER_PRSNT <--> W_PMU_AC_PRESENT
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S152 PAD0$"
+Offset          = 0x00C70618
+AndData         = 0x00000000
+OrData          = 0x44000201
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData172]
+; CHARGER_PRSNT <--> W_PMU_AC_PRESENT
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S152 PAD1$"
+Offset          = 0x00C7061C
+AndData         = 0x00000000
+OrData          = 0x00003000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData173]
+; CARRIER_STBY <--> W_PMU_SLP_S3_B
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S153 PAD0$"
+Offset          = 0x00C70648
+AndData         = 0x00000000
+OrData          = 0x44000400
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData174]
+; CARRIER_STBY <--> W_PMU_SLP_S3_B
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S153 PAD1$"
+Offset          = 0x00C7064C
+AndData         = 0x00000000
+OrData          = 0x0003C000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData175]
+; FORCE_RECOV <--> N_GPIO_21
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S155 PAD0$"
+Offset          = 0x00C505A8
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData176]
+; FORCE_RECOV <--> N_GPIO_21
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S155 PAD1$"
+Offset          = 0x00C505AC
+AndData         = 0x00000000
+OrData          = 0x00003032
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData177]
+; BATLOW <--> W_PMU_BATLOW_B
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S156 PAD0$"
+Offset          = 0x00C70620
+AndData         = 0x00000000
+OrData          = 0x44000402
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData178]
+; BATLOW <--> W_PMU_BATLOW_B
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S156 PAD1$"
+Offset          = 0x00C70624
+AndData         = 0x00000000
+OrData          = 0x0003F000
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData179]
+; TEST <--> N_GPIO_25
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S157 PAD0$"
+Offset          = 0x00C505C8
+AndData         = 0x00000000
+OrData          = 0x44000102
+DataSize        = 0x04
+DataType        = 0x04
+
+[GpioData180]
+; TEST <--> N_GPIO_25
+StructureType   = GpioDataRecord
+GpioLabel       = "SMARC S157 PAD1$"
+Offset          = 0x00C505CC
+AndData         = 0x00000000
+OrData          = 0x0001F036
+DataSize        = 0x04
+DataType        = 0x04
+
+;
+; SMARC module pinout GPIO list
+;
+;===========+=======================+================================+============+===========+========================
+; SMARC pin | SMARC label           | GPIO label                     | SoC Pin    | Interrupt | GPIO Offset
+;-----------+-----------------------+--------------------------------+------------+-----------+------------------------
+; P1        | SMB_ALERT_1V8         | SW_SMB_ALERTB                  | R63        | -C-----   | 0x00C005F8
+; P31       | SPI0_CS1              | NW_GPIO_98                     | C57        | IC---4A   | 0x00C406B0
+; P33       | SDIO_WP               | SW_GPIO_186                    | AB55       | -C-----   | 0x00C005E0
+; P34       | SDIO_CMD              | SW_GPIO_171 & SW_GPIO_178      | T57 & AC52 | -C-----   | 0x00C00598 & 0x00C005D0
+; P35       | SDIO_CD               | SW_GPIO_177                    | AB54       | -C-----   | 0x00C005C8
+; P36       | SDIO_CK               | SW_GPIO_166 & SW_GPIO_172      | P58 & AB58 | -C-----   | 0x00C00570 & 0x00C005A0
+; P37       | SDIO_PWR_EN           | SW_GPIO_183                    | P51        | -CM----   | 0x00C005F0
+; P39       | SDIO_D0               | SW_GPIO_167 & SW_GPIO_173      | T52 & AC49 | -C-----   | 0x00C00578 & 0x00C005A8
+; P40       | SDIO_D1               | SW_GPIO_168 & SW_GPIO_174      | P57 & AC48 | -C-----   | 0x00C00580 & 0x00C005B0
+; P41       | SDIO_D2               | SW_GPIO_169 & SW_GPIO_175      | T54 & AC51 | -C-----   | 0x00C00588 & 0x00C005B8
+; P42       | SDIO_D3               | SW_GPIO_170 & SW_GPIO_176      | T55 & AB51 | -C-----   | 0x00C00590 & 0x00C005C0
+; P43       | SPI0_CS0              | NW_GPIO_97                     | B57        | IC---49   | 0x00C406A8
+; P44       | SPI0_CK               | NW_GPIO_103                    | C56        | IC---4F   | 0x00C406D8
+; P45       | SPI0_DIN              | NW_GPIO_100                    | B58        | IC---4C   | 0x00C406C0
+; P46       | SPI0_DO               | NW_GPIO_99                     | A58        | IC---4B   | 0x00C406B8
+; P54       | ESPI_CS0              | NW_GPIO_105                    | F52        | IC---51   | 0x00C406F0
+; P55       | ESPI_CS1              | NW_GPIO_106                    | H52        | IC---52   | 0x00C406F8
+; P56       | ESPI_CK               | NW_GPIO_104                    | F54        | IC---50   | 0x00C406E8
+; P57       | ESPI_IO_0             | NW_GPIO_109                    | H54        | IC---54   | 0x00C40700
+; P58       | ESPI_IO_1             | NW_GPIO_110                    | J52        | IC---55   | 0x00C40708
+; P62       | USB0_EN_OC            | NW_GPIO_203                    | B55        | -C-----   | 0x00C40580
+; P67       | USB1_EN_OC            | NW_GPIO_204                    | C55        | -C-----   | 0x00C40588
+; P71       | USB2_EN_OC            | NW_GPIO_204                    | C55        | -C-----   | 0x00C40588
+; P74       | USB3_EN_OC            | NW_GPIO_204                    | C55        | -C-----   | 0x00C40588
+; P75       | PCIE_A_RST            | W_PMU_PLTRST_B                 | AG57       | -------   | 0x00C70628
+; P76       | USB4_EN_OC            | NW_GPIO_204                    | C55        | -C-----   | 0x00C40588
+; P104      | HDMI_HPD/DP1_HPD      | NW_GPIO_199                    | A50        | -C-----   | 0x00C40560
+; P108      | GPIO0/CAM0_PWR        | N_GPIO_66                      | M37        | ICM--5F   | 0x00C506B0
+; P109      | GPIO1/CAM1_PWR        | N_GPIO_67                      | F30        | ICM--60   | 0x00C506B8
+; P110      | GPIO2/CAM0_RST        | N_GPIO_64                      | J34        | ICM--5D   | 0x00C506A0
+; P111      | GPIO3/CAM1_RST        | N_GPIO_65                      | H30        | ICM--5E   | 0x00C506A8
+; P112      | GPIO4/HDA_RST         | NW_GPIO_84                     | K58        | IC---3D   | 0x00C40660
+; P115      | GPIO7                 | N_GPIO_13                      | C30        | ICM--70   | 0x00C50568
+; P116      | GPIO8                 | N_GPIO_14                      | C38        | ICM--71   | 0x00C50570
+; P117      | GPIO9                 | N_GPIO_2                       | C39        | ICM--65   | 0x00C50510
+; P118      | GPIO10                | N_GPIO_3                       | B39        | ICM--66   | 0x00C50518
+; P119      | GPIO11                | N_GPIO_4                       | B35        | ICM--67   | 0x00C50520
+; P121      | I2C_PM_CK             | W_GPIO_139                     | T62        | -CM----   | 0x00C70578
+; P122      | I2C_PM_DAT            | W_GPIO_138                     | T61        | -CM----   | 0x00C70570
+; P123      | BOOT_SEL0             | N_GPIO_24                      | C25        | ICM--35   | 0x00C505C0
+; P124      | BOOT_SEL1             | N_GPIO_23                      | B25        | ICM--34   | 0x00C505B8
+; P125      | BOOT_SEL2             | N_GPIO_22                      | A26        | ICM--33   | 0x00C505B0
+; P126      | RESET_OUT             | W_PMU_PLTRST_B                 | AG57       | -------   | 0x00C70628
+; P129      | SER0_TX               | N_GPIO_39                      | B45        | ICM--44   | 0x00C50638
+; P130      | SER0_RX               | N_GPIO_38                      | C45        | ICM--43   | 0x00C50630
+; P131      | SER0_RTS              | N_GPIO_40                      | A46        | ICM--45   | 0x00C50640
+; P132      | SER0_CTS              | N_GPIO_41                      | C44        | ICM--46   | 0x00C50648
+; P134      | SER1_TX               | N_GPIO_43                      | B43        | ICM--48   | 0x00C50658
+; P135      | SER1_RX               | N_GPIO_42                      | C43        | ICM--47   | 0x00C50650
+; P136      | SER2_TX               | N_GPIO_47                      | H41        | ICM--4C   | 0x00C50678
+; P137      | SER2_RX               | N_GPIO_46                      | J41        | ICM--4B   | 0x00C50670
+; P138      | SER2_RTS              | N_GPIO_48                      | L41        | ICM--4D   | 0x00C50680
+; P139      | SER2_CTS              | N_GPIO_49                      | M41        | ICM--4E   | 0x00C50688
+; P140      | SER3_TX               | NW_GPIO_113                    | F61        | IC---58   | 0x00C40720
+; P141      | SER3_RX               | NW_GPIO_112                    | K55        | IC---57   | 0x00C40718
+;-----------+-----------------------+--------------------------------+------------+-----------+------------------------
+; S1        | CSI1_TX+/I2C_CAM1_CK  | W_GPIO_135                     | AP51       | -CM----   | 0x00C70558
+; S2        | CSI1_TX-/I2C_CAM1_DAT | W_GPIO_134                     | AP49       | -CM----   | 0x00C70550
+; S5        | CSI0_TX+/I2C_CAM0_CK  | W_GPIO_133                     | AP54       | -CM----   | 0x00C70548
+; S6        | CAM_MCK               | W_OSC_CLK_OUT_0                | AG62       | -------   | 0x00C705F0
+; S7        | CSI0_TX-/I2C_CAM0_DAT | W_GPIO_132                     | AP52       | -CM----   | 0x00C70540
+; S38       | AUDIO_MCK             | NW_GPIO_84                     | K58        | IC---3D   | 0x00C40660
+; S39       | I2S0_LRCK             | NW_GPIO_86                     | M57        | IC---3F   | 0x00C40670
+; S40       | I2S0_SDOUT            | NW_GPIO_88                     | M58        | IC---41   | 0x00C40680
+; S41       | I2S0_SDIN             | NW_GPIO_87                     | K59        | IC---40   | 0x00C40678
+; S42       | I2S0_CK               | NW_GPIO_85                     | H59        | IC---3E   | 0x00C40668
+; S48       | I2C_GP_CK             | W_GPIO_137                     | AK61       | -CM----   | 0x00C70568
+; S49       | I2C_GP_DAT            | W_GPIO_136                     | AL63       | -CM----   | 0x00C70560
+; S50       | HDA_SYNC/I2S2_LRCK    | W_GPIO_147                     | AK58       | -CM----   | 0x00C70588
+; S51       | HDA_SDO/I2S2_SDOUT    | W_GPIO_149                     | AM54       | -CM----   | 0x00C70598
+; S52       | HDA_SDI/I2S2_SDIN     | W_GPIO_148                     | AK51       | -CM----   | 0x00C70590
+; S53       | HDA_CK/I2S2_CK        | W_GPIO_146                     | AM48       | -CM----   | 0x00C70580
+; S54       | SATA_ACT              | N_GPIO_26                      | C31        | ICM--37   | 0x00C505D0
+; S55       | USB5_EN_OC            | NW_GPIO_204                    | C55        | -C-----   | 0x00C40588
+; S76       | PCIE_B_RST            | W_PMU_PLTRST_B                 | AG57       | -------   | 0x00C70628
+; S77       | PCIE_C_RST            | W_PMU_PLTRST_B                 | AG57       | -------   | 0x00C70628
+; S98       | DP0_HPD               | NW_GPIO_200                    | C50        | -C-----   | 0x00C40568
+; S107      | LCD1_BKLT_EN          | NW_GPIO_197                    | B53        | -C-----   | 0x00C40550
+; S116      | LCD1_VDD_EN           | NW_GPIO_196                    | C52        | -C-----   | 0x00C40548
+; S122      | LCD1_BKLT_PWM         | NW_GPIO_198                    | C53        | -C-----   | 0x00C40558
+; S133      | LCD0_VDD_EN           | NW_GPIO_193                    | C47        | -C-----   | 0x00C40530
+; S139      | I2C_LCD_CK            | W_GPIO_127                     | AM61       | -CM----   | 0x00C70518
+; S140      | I2C_LCD_DAT           | W_GPIO_126                     | AN62       | -CM----   | 0x00C70510
+; S144      | eDP0_HPD              | NW_PMC_SPI_FS1                 | P48        | -------   | 0x00C40598
+; S146      | PCIE_WAKE             | SW_GPIO_206                    | P62        | -CM----   | 0x00C00508
+; S148      | LID                   | N_GPIO_6                       | B31        | ICM--69   | 0x00C50530
+; S149      | SLEEP                 | N_GPIO_7                       | H39        | ICM--6A   | 0x00C50538
+; S152      | CHARGER_PRSNT         | W_PMU_AC_PRESENT               | AK49       | -------   | 0x00C70618
+; S153      | CARRIER_STBY          | W_PMU_SLP_S3_B                 | AC62       | -------   | 0x00C70648
+; S155      | FORCE_RECOV           | N_GPIO_21                      | C26        | ICM--32   | 0x00C505A8
+; S156      | BATLOW                | W_PMU_BATLOW_B                 | AH51       | -------   | 0x00C70620
+; S157      | TEST                  | N_GPIO_25                      | C27        | ICM--36   | 0x00C505C8
+;===========+=======================+================================+============+===========+========================
+
+;
+; Structure lists uses the same format as the Structures section to define a single data
+; blob.  This is then added to the existing structure that referenced it.
+;
+; Struct_n = Section
+[M24M02MapDataList]
+Struct_001 = M24M02MapData001
+Struct_002 = M24M02MapData002
+Struct_003 = M24M02MapData003
+Struct_004 = M24M02MapData004
+
+[GpioDataList]
+Struct_001 = GpioData001
+Struct_002 = GpioData002
+Struct_003 = GpioData003
+Struct_004 = GpioData004
+Struct_005 = GpioData005
+Struct_006 = GpioData006
+Struct_007 = GpioData007
+Struct_008 = GpioData008
+Struct_009 = GpioData009
+Struct_010 = GpioData010
+Struct_011 = GpioData011
+Struct_012 = GpioData012
+Struct_013 = GpioData013
+Struct_014 = GpioData014
+Struct_015 = GpioData015
+Struct_016 = GpioData016
+Struct_017 = GpioData017
+Struct_018 = GpioData018
+Struct_019 = GpioData019
+Struct_020 = GpioData020
+Struct_021 = GpioData021
+Struct_022 = GpioData022
+Struct_023 = GpioData023
+Struct_024 = GpioData024
+Struct_025 = GpioData025
+Struct_026 = GpioData026
+Struct_027 = GpioData027
+Struct_028 = GpioData028
+Struct_029 = GpioData029
+Struct_030 = GpioData030
+Struct_031 = GpioData031
+Struct_032 = GpioData032
+Struct_033 = GpioData033
+Struct_034 = GpioData034
+Struct_035 = GpioData035
+Struct_036 = GpioData036
+Struct_037 = GpioData037
+Struct_038 = GpioData038
+Struct_039 = GpioData039
+Struct_040 = GpioData040
+Struct_041 = GpioData041
+Struct_042 = GpioData042
+Struct_043 = GpioData043
+Struct_044 = GpioData044
+Struct_045 = GpioData045
+Struct_046 = GpioData046
+Struct_047 = GpioData047
+Struct_048 = GpioData048
+Struct_049 = GpioData049
+Struct_050 = GpioData050
+Struct_051 = GpioData051
+Struct_052 = GpioData052
+Struct_053 = GpioData053
+Struct_054 = GpioData054
+Struct_055 = GpioData055
+Struct_056 = GpioData056
+Struct_057 = GpioData057
+Struct_058 = GpioData058
+Struct_059 = GpioData059
+Struct_060 = GpioData060
+Struct_061 = GpioData061
+Struct_062 = GpioData062
+Struct_063 = GpioData063
+Struct_064 = GpioData064
+Struct_065 = GpioData065
+Struct_066 = GpioData066
+Struct_067 = GpioData067
+Struct_068 = GpioData068
+Struct_069 = GpioData069
+Struct_070 = GpioData070
+Struct_071 = GpioData071
+Struct_072 = GpioData072
+Struct_073 = GpioData073
+Struct_074 = GpioData074
+Struct_075 = GpioData075
+Struct_076 = GpioData076
+Struct_077 = GpioData077
+Struct_078 = GpioData078
+Struct_079 = GpioData079
+Struct_080 = GpioData080
+Struct_081 = GpioData081
+Struct_082 = GpioData082
+Struct_083 = GpioData083
+Struct_084 = GpioData084
+Struct_085 = GpioData085
+Struct_086 = GpioData086
+Struct_087 = GpioData087
+Struct_088 = GpioData088
+Struct_089 = GpioData089
+Struct_090 = GpioData090
+Struct_091 = GpioData091
+Struct_092 = GpioData092
+Struct_093 = GpioData093
+Struct_094 = GpioData094
+Struct_095 = GpioData095
+Struct_096 = GpioData096
+Struct_097 = GpioData097
+Struct_098 = GpioData098
+Struct_099 = GpioData099
+Struct_100 = GpioData100
+Struct_101 = GpioData101
+Struct_102 = GpioData102
+Struct_103 = GpioData103
+Struct_104 = GpioData104
+Struct_105 = GpioData105
+Struct_106 = GpioData106
+Struct_107 = GpioData107
+Struct_108 = GpioData108
+Struct_109 = GpioData109
+Struct_110 = GpioData110
+Struct_111 = GpioData111
+Struct_112 = GpioData112
+Struct_113 = GpioData113
+Struct_114 = GpioData114
+Struct_115 = GpioData115
+Struct_116 = GpioData116
+Struct_117 = GpioData117
+Struct_118 = GpioData118
+Struct_119 = GpioData119
+Struct_120 = GpioData120
+Struct_121 = GpioData121
+Struct_122 = GpioData122
+Struct_123 = GpioData123
+Struct_124 = GpioData124
+Struct_125 = GpioData125
+Struct_126 = GpioData126
+Struct_127 = GpioData127
+Struct_128 = GpioData128
+Struct_129 = GpioData129
+Struct_130 = GpioData130
+Struct_131 = GpioData131
+Struct_132 = GpioData132
+Struct_133 = GpioData133
+Struct_134 = GpioData134
+Struct_135 = GpioData135
+Struct_136 = GpioData136
+Struct_137 = GpioData137
+Struct_138 = GpioData138
+Struct_139 = GpioData139
+Struct_140 = GpioData140
+Struct_141 = GpioData141
+Struct_142 = GpioData142
+Struct_143 = GpioData143
+Struct_144 = GpioData144
+Struct_145 = GpioData145
+Struct_146 = GpioData146
+Struct_147 = GpioData147
+Struct_148 = GpioData148
+Struct_149 = GpioData149
+Struct_150 = GpioData150
+Struct_151 = GpioData151
+Struct_152 = GpioData152
+Struct_153 = GpioData153
+Struct_154 = GpioData154
+Struct_155 = GpioData155
+Struct_156 = GpioData156
+Struct_157 = GpioData157
+Struct_158 = GpioData158
+Struct_159 = GpioData159
+Struct_160 = GpioData160
+Struct_161 = GpioData161
+Struct_162 = GpioData162
+Struct_163 = GpioData163
+Struct_164 = GpioData164
+Struct_165 = GpioData165
+Struct_166 = GpioData166
+Struct_167 = GpioData167
+Struct_168 = GpioData168
+Struct_169 = GpioData169
+Struct_170 = GpioData170
+Struct_171 = GpioData171
+Struct_172 = GpioData172
+Struct_173 = GpioData173
+Struct_174 = GpioData174
+Struct_175 = GpioData175
+Struct_176 = GpioData176
+Struct_177 = GpioData177
+Struct_178 = GpioData178
+Struct_179 = GpioData179
+Struct_180 = GpioData180
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-private.pem b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-private.pem
new file mode 100644
index 0000000..b2c42f3
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-private.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEA0j0qx88wAYmL61So6UERMLyu2IjuTqvzIE0MPRiuYDFGZvZ5
+13xUcnIcGtc4yCo3SLPqV8kswAMNeTW51x1Sg5k2P9VdBjtHLkp3MBlPTUDh7lKx
+TRk9q1LYBHoXH7dgSAu9CxuKVQo9I/DCUtt6OeX3aFmPZQ9U/01d+fmdU3aggiEW
+dSa5o4P0PkpCRCHFIdSADzutLptNP571/QD0/iEfAb2ipD9bOKhPo0+pbxu49+SW
+1dE3n5txs+k/oq4iZ97Q/aqXuRVeALbT2aDqz1V2oJGxan/xgVpzB7tOzuYpiv9U
+4Jx/sBzlnTw7pgwF9x34CZxY1xumzBIY3ZF9DQIDAQABAoIBAGr5qsH+v5uYpHR7
+IHOHozqcV49gpXmsbsqZycdwvpG9oOgVNEwcPE/7lidmKcNYD8dTnMNMXxPYucta
+NhSqG+lQVVVHuMzJ7t80Ds+PoVVa1VtSAluLo2CAh+BHS2rdAQXHy0pSmiHJUvDt
+ucM1YE0Doc8b+yXeFk7NzCq9A3uKreUmvVkyxrYNrjUtlKdFcI1UlpTHXegdLkwZ
+oyWLuDRwmINFM3Qcbzmjimhje3rq6lMIUxkPLsH00ETwd89NRK5GaDxmXHLoSj5p
+0g3oUHU8B0/xY43QB3NprAzNz8RuPFKW+jh5vkkpGCZLzPQG4VTlWGNkvVRkqBrT
+eyoPx3UCgYEA62XY/wDha6UnXamHSR8bzU7SMLVfl//JrGjyJXiauzQeOdrmXd+g
+FQ4Oq62DBldig1vRQJ4xUAlQIMpf4ix+tQlHfOABEVY8XbDhQ/ZJDeIV+/zc9zST
+yLK4XIugvwBCAp3hzfUpMit0kbnrqNoeLhp908WARBsburQTc7AL8TsCgYEA5KOg
+mB5jiWviYtUgP47PQ6CUJdbmkl2Z1mHpHzn/DP5SqmjTXPxy9+hzVSZu3Yaa2nCU
+yGpKKcyC7OpcKmuHeSJJ7TeBbg5dq+JUw5AjfxKxIXM0tklFeEo21LqYKoBoCVlB
+wWvqRdeSgfgWtBHERTKAVZOUWUO97Z4ish/fZlcCgYB1NlSTvWOBj04HxFd54ISe
+eYYN/PIppJNORz9zyxb46l22nzogOi7i7Qn/EDny2WZTVE/gpiSV3t1IRpzx6Qf6
+qzEui/fcIx2R5XZ1udfskswxmlqIuWRxBhTo+BnFoaI83VLHlDC8K4ky2unuPRXU
+DRrkbS6OOxVWpT4eV+XKawKBgFfCIosg5u3BViS/T2B17UI06YhYoym8+aZa8IMG
+3Mnc+FfmYnKHh412UIZ3eQhYeSmtGr6OZacDk6FiFzxFB7vMGHoP2wMmSngGKKjj
+s2w7/XcsZCgvmZWhTsh6UpvFq6ki9GVMiaCDLP3r/rLhOuegibfPLJrSsJz7HLAo
+IbSDAoGBAJSqWee/gUdW5QYFALyIYI+NJCy4VPRzqP2vL+iHukwZbIIyLo2aM63t
+30C3alFwd6dlVfz7LHdz9bRDDP8pQOpSaiWC0mpPqhKA18BlVAV5F4Bb3BG8LN8m
+C/axAlBtfdpVMywGgy3tnAbaJ+zGx+HTCA81/Hu97VRCUicLahTs
+-----END RSA PRIVATE KEY-----
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.bin b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.bin
new file mode 100644
index 0000000000000000000000000000000000000000..b808e5f072590ef822d91da3363dad35ee18336c
GIT binary patch
literal 256
zcmV+b0ssEeJu1h~Fae2+>r|-eK@l*#uGom~POI}EO$<F4u3#}nX7+j4d{lCB92(a+
z$SOBTv+7sLEWiT|c{RD$9a4jtHb2!}20KSCN_Q|BPfbAK?ozQ$89l2~*aUhPAGcsg
z3%v^)id70dBk;mf+j=?W_h?y<We-&UO<no<ol|z8f*}@lCb^@7^gc>LL?Oi?)PN5=
ztuC8QKc4md0QCML9|66hq(56Ys86F$sc##&_vDt<(Knx)akJ?^qOKxm-q8K3m$?;Q
z0JhWFpz6<6cA$~5YJc&8T5|`xPR`~jivLvLoPV$!<()h`rVIu59ry{HSl1h-%n}&g
Gk$nx9T6tjr

literal 0
HcmV?d00001

diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.pem b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.pem
new file mode 100644
index 0000000..83ded0d
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/RSA-keys/MB3-public.pem
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0j0qx88wAYmL61So6UER
+MLyu2IjuTqvzIE0MPRiuYDFGZvZ513xUcnIcGtc4yCo3SLPqV8kswAMNeTW51x1S
+g5k2P9VdBjtHLkp3MBlPTUDh7lKxTRk9q1LYBHoXH7dgSAu9CxuKVQo9I/DCUtt6
+OeX3aFmPZQ9U/01d+fmdU3aggiEWdSa5o4P0PkpCRCHFIdSADzutLptNP571/QD0
+/iEfAb2ipD9bOKhPo0+pbxu49+SW1dE3n5txs+k/oq4iZ97Q/aqXuRVeALbT2aDq
+z1V2oJGxan/xgVpzB7tOzuYpiv9U4Jx/sBzlnTw7pgwF9x34CZxY1xumzBIY3ZF9
+DQIDAQAB
+-----END PUBLIC KEY-----
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_TianmaMipi.bin b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_TianmaMipi.bin
new file mode 100644
index 0000000000000000000000000000000000000000..32c872a7e321d5ddc2c419734b410f2ba165090d
GIT binary patch
literal 6656
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
O0X}}SD3p=Eits15^=K{t

literal 0
HcmV?d00001

diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b.bin b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b.bin
new file mode 100644
index 0000000000000000000000000000000000000000..a29afe5f1abcf394a0d0ffed3b0338f0f2ef3fd7
GIT binary patch
literal 7168
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
Hr_p}^eIdXu

literal 0
HcmV?d00001

diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3Module/Eeprom/VBT/Vbt_bxt_t_fab_b_TrulyMipi_Cmd.bin
new file mode 100644
index 0000000000000000000000000000000000000000..26f691d4f55b0ed791ac0d2b8ab0d68747e4405a
GIT binary patch
literal 6656
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
baot!IJb!ot>%Dxa1P@*-?Loo9t<b*#IE9xk

literal 0
HcmV?d00001

-- 
2.10.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel