Add initial support for Snapdragon 720G (sm7125)
authorXilin Wu <strongtz@yeah.net>
星期三, 21 Sep 2022 15:06:44 +0000 (23:06 +0800)
committerXilin Wu <strongtz@yeah.net>
星期三, 21 Sep 2022 15:06:44 +0000 (23:06 +0800)
This commit adds preliminary support for Snapdragon 720G QRD device.

It's worth noting that only UFS works now. Basically nothing else works.
We're adding sm7125 support to this repo, because it's quite similar with
sdm845, and it makes no sense to create another repo for this uncommon SoC.

Signed-off-by: Xilin Wu <strongtz@yeah.net>
12 files changed:
.github/workflows/main.yml
.github/workflows/release.yml
build.sh
device_specific/atoll.dtb [new file with mode: 0755]
sdm845Pkg/Binary
sdm845Pkg/Devices/atoll.dsc [new file with mode: 0644]
sdm845Pkg/Devices/atoll.fdf [new file with mode: 0644]
sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.c
sdm845Pkg/Include/Configuration/DeviceMemoryMap7125.h [new file with mode: 0644]
sdm845Pkg/Library/MemoryInitPeiLib/MemoryInitPeiLib.c
sdm845Pkg/Library/QcomGeniSerialPortLib/GeniSerial.h
sdm845Pkg/sm7125Pkg.dsc [new file with mode: 0644]

index 9df6f5bd6f11f338025feb1b10b3676c9d7a7e70..ab7540862acc8f348ea8c0174650cbf6210e3983 100644 (file)
@@ -45,6 +45,7 @@ jobs:
           - ayn-odin
           - akershus
           - equuleus
+          - atoll
 
     # Steps represent a sequence of tasks that will be executed as part of the job
     steps:
index f14583fa53b4fd222799bd47d674ebd0c649606d..a12826db6463ea89ac9e02c0c1437e1a6c0e616a 100644 (file)
@@ -37,6 +37,7 @@ jobs:
           - skr-a0
           - star2qltechn
           - trident
+          - atoll
 
     steps:
       - name: Checkout repository
index e3371b3c8ca57c19284a07ba8c0a286e688a55cf..7f691fe35257ee751a58ac8ed8412d2a042ff9a6 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -27,6 +27,7 @@ DEVICES=(
        akershus
        equuleus
        zs600kl
+       atoll
 )
 #####################################
 
diff --git a/device_specific/atoll.dtb b/device_specific/atoll.dtb
new file mode 100755 (executable)
index 0000000..741bd1a
Binary files /dev/null and b/device_specific/atoll.dtb differ
index f80b7c467c7454e7e0eabff77adb8ffddaa9ef7a..30a2de8c7c8d0ff9cde65db046f28d7cabe6c480 160000 (submodule)
@@ -1 +1 @@
-Subproject commit f80b7c467c7454e7e0eabff77adb8ffddaa9ef7a
+Subproject commit 30a2de8c7c8d0ff9cde65db046f28d7cabe6c480
diff --git a/sdm845Pkg/Devices/atoll.dsc b/sdm845Pkg/Devices/atoll.dsc
new file mode 100644 (file)
index 0000000..614203e
--- /dev/null
@@ -0,0 +1,27 @@
+[Defines]
+  PLATFORM_NAME                  = sdm845Pkg
+  PLATFORM_GUID                  = 28f1a3bf-193a-47e3-a7b9-5a435eaab2ee
+  PLATFORM_VERSION               = 0.1
+  DSC_SPECIFICATION              = 0x00010019
+  OUTPUT_DIRECTORY               = Build/$(PLATFORM_NAME)
+  SUPPORTED_ARCHITECTURES        = AARCH64
+  BUILD_TARGETS                  = DEBUG|RELEASE
+  SKUID_IDENTIFIER               = DEFAULT
+  FLASH_DEFINITION               = sdm845Pkg/Devices/atoll.fdf
+
+!include sdm845Pkg/sm7125Pkg.dsc
+
+[BuildOptions.common]
+  GCC:*_*_AARCH64_CC_FLAGS = -DSM7125_TEST=1 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
+
+[PcdsFixedAtBuild.common]
+
+  gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferWidth|1080
+  gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferHeight|2248
+
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|440
+
+  gsdm845PkgTokenSpaceGuid.PcdDeviceVendor|"Qualcomm"
+  gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"QRD 720"
+  gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"atoll"
diff --git a/sdm845Pkg/Devices/atoll.fdf b/sdm845Pkg/Devices/atoll.fdf
new file mode 100644 (file)
index 0000000..0c3965c
--- /dev/null
@@ -0,0 +1,626 @@
+#\r
+#  Copyright (c) 2018, Linaro Limited. All rights reserved.\r
+#\r
+#  This program and the accompanying materials\r
+#  are licensed and made available under the terms and conditions of the BSD License\r
+#  which accompanies this distribution.  The full text of the license may be found at\r
+#  http://opensource.org/licenses/bsd-license.php\r
+#\r
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+\r
+################################################################################\r
+#\r
+# FD Section\r
+# The [FD] Section is made up of the definition statements and a\r
+# description of what goes into  the Flash Device Image.  Each FD section\r
+# defines one flash "device" image.  A flash device image may be one of\r
+# the following: Removable media bootable image (like a boot floppy\r
+# image,) an Option ROM image (that would be "flashed" into an add-in\r
+# card,) a System "Flash"  image (that would be burned into a system's\r
+# flash) or an Update ("Capsule") image that will be used to update and\r
+# existing system flash.\r
+#\r
+################################################################################\r
+\r
+[FD.sdm845Pkg_UEFI]\r
+BaseAddress   = 0xd0000000|gArmTokenSpaceGuid.PcdFdBaseAddress  # The base address of the Firmware in NOR Flash.\r
+Size          = 0x00600000|gArmTokenSpaceGuid.PcdFdSize         # The size in bytes of the FLASH Device\r
+ErasePolarity = 1\r
+\r
+# This one is tricky, it must be: BlockSize * NumBlocks = Size\r
+BlockSize     = 0x00001000\r
+NumBlocks     = 0x600\r
+\r
+################################################################################\r
+#\r
+# Following are lists of FD Region layout which correspond to the locations of different\r
+# images within the flash device.\r
+#\r
+# Regions must be defined in ascending order and may not overlap.\r
+#\r
+# A Layout Region start with a eight digit hex offset (leading "0x" required) followed by\r
+# the pipe "|" character, followed by the size of the region, also in hex with the leading\r
+# "0x" characters. Like:\r
+# Offset|Size\r
+# PcdOffsetCName|PcdSizeCName\r
+# RegionType <FV, DATA, or FILE>\r
+#\r
+################################################################################\r
+\r
+# from ArmVirtPkg/ArmVirtQemuKernel.fdf\r
+#\r
+# Implement the Linux kernel header layout so that the loader will identify\r
+# it as something bootable, and execute it with a FDT pointer in x0 or r2.\r
+0x00000000|0x00008000\r
+DATA = {\r
+  0x01, 0x00, 0x00, 0x10,                         # code0: adr x1, .\r
+  0xff, 0x1f, 0x00, 0x14,                         # code1: b 0x8000\r
+  0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB\r
+  0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res2\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res3\r
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # res4\r
+  0x41, 0x52, 0x4d, 0x64,                         # magic: "ARM\x64"\r
+  0x00, 0x00, 0x00, 0x00                          # res5\r
+}\r
+\r
+0x00008000|0x005f8000\r
+gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize\r
+FV = FVMAIN_COMPACT\r
+\r
+\r
+################################################################################\r
+#\r
+# FV Section\r
+#\r
+# [FV] section is used to define what components or modules are placed within a flash\r
+# device file.  This section also defines order the components and modules are positioned\r
+# within the image.  The [FV] section consists of define statements, set statements and\r
+# module statements.\r
+#\r
+################################################################################\r
+\r
+[FV.FvMain]\r
+BlockSize          = 0x40\r
+NumBlocks          = 0         # This FV gets compressed so make it just big enough\r
+FvAlignment        = 8         # FV alignment and FV attributes setting.\r
+ERASE_POLARITY     = 1\r
+MEMORY_MAPPED      = TRUE\r
+STICKY_WRITE       = TRUE\r
+LOCK_CAP           = TRUE\r
+LOCK_STATUS        = TRUE\r
+WRITE_DISABLED_CAP = TRUE\r
+WRITE_ENABLED_CAP  = TRUE\r
+WRITE_STATUS       = TRUE\r
+WRITE_LOCK_CAP     = TRUE\r
+WRITE_LOCK_STATUS  = TRUE\r
+READ_DISABLED_CAP  = TRUE\r
+READ_ENABLED_CAP   = TRUE\r
+READ_STATUS        = TRUE\r
+READ_LOCK_CAP      = TRUE\r
+READ_LOCK_STATUS   = TRUE\r
+\r
+APRIORI DXE {\r
+\r
+  #\r
+  # PI DXE Drivers producing Architectural Protocols (EFI Services)\r
+  #\r
+  INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
+  INF MdeModulePkg/Core/Dxe/DxeMain.inf\r
+  INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf\r
+  INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf\r
+  INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf\r
+  INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf\r
+  INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf\r
+  INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
+\r
+  INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
+  INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf\r
+\r
+  FILE DRIVER = f541d663-4a48-40aa-aabf-ff158ccae34c {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/SmemDxe/SmemDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/SmemDxe/SmemDxe.efi\r
+    SECTION UI = "SmemDxe"\r
+  }  \r
+\r
+  FILE DRIVER = 8E9BD160-B184-11DF-94E2-0800200C9A66 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/DALSys/DALSys.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/DALSys/DALSys.efi\r
+    SECTION UI = "DALSys"\r
+  }\r
+\r
+// fucked\r
+  # FILE DRIVER = 8681CC5A-0DF6-441E-B4B8-E915C538F067 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/HWIODxeDriver/HWIODxeDriver.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/HWIODxeDriver/HWIODxeDriver.efi\r
+  #   SECTION UI = "HWIODxeDriver"\r
+  # }\r
+//\r
+\r
+  FILE DRIVER = 10e193df-9966-44e7-b17c-59dd831e20fc {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ChipInfo/ChipInfo.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/ChipInfo/ChipInfo.efi\r
+    SECTION UI = "ChipInfo"\r
+  }\r
+\r
+  FILE DRIVER = B105211B-BBBD-4ADD-A3B0-D1CF4A52154C {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/PlatformInfoDxeDriver/PlatformInfoDxeDriver.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/PlatformInfoDxeDriver/PlatformInfoDxeDriver.efi\r
+    SECTION UI = "PlatformInfoDxeDriver"\r
+  }\r
+\r
+// fucked\r
+  # FILE DRIVER = 9A00771F-36D4-4DD5-8916-C48ED9B16B86 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/HALIOMMU/HALIOMMU.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/HALIOMMU/HALIOMMU.efi\r
+  #   SECTION UI = "HALIOMMU"\r
+  # }\r
+\r
+  INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf\r
+\r
+  FILE DRIVER = E43128A8-8692-42B6-8AFA-676158578D18 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ULogDxe/ULogDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/ULogDxe/ULogDxe.efi\r
+    SECTION UI = "ULogDxe"\r
+  }\r
+\r
+  FILE DRIVER = ABA01FF8-2CCB-4E12-8B2E-CD3F4A742993 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/CmdDbDxe/CmdDbDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/CmdDbDxe/CmdDbDxe.efi\r
+    SECTION UI = "CmdDbDxe"\r
+  }\r
+\r
+  FILE DRIVER = CB29F4D1-7F37-4692-A416-93E82E219711 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/NpaDxe/NpaDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/NpaDxe/NpaDxe.efi\r
+    SECTION UI = "NpaDxe"\r
+  }\r
+\r
+  FILE DRIVER = CB29F4D1-7F37-4692-A416-93E82E219766 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/RpmhDxe/RpmhDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/RpmhDxe/RpmhDxe.efi\r
+    SECTION UI = "RpmhDxe"\r
+  }\r
+\r
+  FILE DRIVER = B43C22DB-6333-490C-872D-0A73439059FD {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/PdcDxe/PdcDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/PdcDxe/PdcDxe.efi\r
+    SECTION UI = "PdcDxe"\r
+  }\r
+\r
+// fucked\r
+  # FILE DRIVER = 4DB5DEA6-5302-4D1A-8A82-677A683B0D29 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ClockDxe/ClockDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/ClockDxe/ClockDxe.efi\r
+  #   SECTION UI = "ClockDxe"\r
+  # }\r
+\r
+  INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf\r
+  INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf\r
+\r
+  FILE DRIVER = 0d35cd8e-97ea-4f9a-96af-0f0d89f76567 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UFSDxe/UFSDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/UFSDxe/UFSDxe.efi\r
+    SECTION UI = "UFSDxe"\r
+  }\r
+\r
+  INF FatPkg/EnhancedFatDxe/Fat.inf\r
+  INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf\r
+  INF MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf\r
+\r
+  FILE DRIVER = 2a7b4bef-80cd-49e1-b473-374ba4d673fc {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/SPMI/SPMI.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/SPMI/SPMI.efi\r
+    SECTION UI = "SPMI"\r
+  }\r
+\r
+  INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+  INF EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf\r
+  INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf\r
+  INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf\r
+  INF MdeModulePkg/Universal/PrintDxe/PrintDxe.inf\r
+  INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
+  INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf\r
+  INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf\r
+  INF SecurityPkg/VariableAuthenticated/SecureBootDefaultKeysDxe/SecureBootDefaultKeysDxe.inf\r
+\r
+  INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf  \r
+\r
+  INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf\r
+\r
+  FILE DRIVER = AF9763A2-033B-4109-8E17-56A98D380C92 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/DALTLMM/DALTLMM.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/DALTLMM/DALTLMM.efi\r
+    SECTION UI = "DALTLMM"\r
+  }\r
+\r
+  # FILE DRIVER = 04DE8591-D2B3-4077-BBBE-B12070094EB6 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/I2C/I2C.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/I2C/I2C.efi\r
+  #   SECTION UI = "I2C"\r
+  # }\r
+\r
+// fucked\r
+  # FILE DRIVER = 5776232e-082d-4b75-9a0e-fe1d13f7a5d9 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/PmicDxe/PmicDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/PmicDxe/PmicDxe.efi\r
+  #   SECTION UI = "PmicDxe"\r
+  # }\r
+\r
+  INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf\r
+  INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf\r
+  INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf\r
+\r
+  FILE DRIVER = 5bd181db-0487-4f1a-ae73-820e165611b3 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ButtonsDxe/ButtonsDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/ButtonsDxe/ButtonsDxe.efi\r
+    SECTION UI = "ButtonsDxe"\r
+  }\r
+\r
+  # FILE DRIVER = 11faed4c-b21f-4d88-8e48-c4c28a1e50df {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbPwrCtrlDxe/UsbPwrCtrlDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbPwrCtrlDxe/UsbPwrCtrlDxe.efi\r
+  #   SECTION UI = "UsbPwrCtrlDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 94f8a6a7-dc34-4101-88c1-99179cceae83 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbfnDwc3Dxe/UsbfnDwc3Dxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbfnDwc3Dxe/UsbfnDwc3Dxe.efi\r
+  #   SECTION UI = "UsbfnDwc3Dxe"\r
+  # }\r
+\r
+  # FILE DRIVER = beb12bee-f6e1-11e1-9fb8-6c626de4aeb1 {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/XhciPciEmulation/XhciPciEmulation.efi\r
+  #   SECTION UI = "XhciPciEmulation"\r
+  # }\r
+\r
+  # FILE DRIVER = b7f50e91-a759-412c-ade4-dcd03e7f7c28 {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/XhciDxe/XhciDxe.efi\r
+  #   SECTION UI = "XhciDxe"\r
+  # }\r
+  INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf\r
+  INF MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf\r
+  INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf\r
+\r
+  # FILE DRIVER = 2d2e62cf-9ecf-43b7-8219-94e7fc713dfe {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbKbDxe/UsbKbDxe.efi\r
+  #   SECTION UI = "UsbKbDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = cd823a4d-7dec-4531-ae5d-4134fa4127b8 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbConfigDxe/UsbConfigDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbConfigDxe/UsbConfigDxe.efi\r
+  #   SECTION UI = "UsbConfigDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 0A134F0E-075E-40B3-9C63-3B3906804663 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbInitDxe/UsbInitDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbInitDxe/UsbInitDxe.efi\r
+  #   SECTION UI = "UsbInitDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 3299a266-15f0-4346-8318-716336736d3e {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbDeviceDxe/UsbDeviceDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbDeviceDxe/UsbDeviceDxe.efi\r
+  #   SECTION UI = "UsbDeviceDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 7DB0793A-4402-4BE1-906E-D0FABAD2707E {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/DDRInfoDxe/DDRInfoDxe.efi\r
+  #   SECTION UI = "DDRInfoDxe"\r
+  # }\r
+\r
+  INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf\r
+}\r
+\r
+  INF MdeModulePkg/Core/Dxe/DxeMain.inf\r
+\r
+  #\r
+  # PI DXE Drivers producing Architectural Protocols (EFI Services)\r
+  #\r
+  INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
+  INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf\r
+  INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf\r
+  INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
+!include ArmPlatformPkg/SecureBootDefaultKeys.fdf.inc\r
+  INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf\r
+  INF SecurityPkg/VariableAuthenticated/SecureBootDefaultKeysDxe/SecureBootDefaultKeysDxe.inf\r
+  INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
+  INF EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf\r
+  INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf\r
+  INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf\r
+  INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf\r
+\r
+  #\r
+  # Multiple Console IO support\r
+  #\r
+  INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf\r
+  INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf\r
+  INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf\r
+  INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf\r
+\r
+  INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf\r
+  INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf\r
+\r
+  INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf\r
+\r
+  FILE DRIVER = f541d663-4a48-40aa-aabf-ff158ccae34c {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/SmemDxe/SmemDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/SmemDxe/SmemDxe.efi\r
+    SECTION UI = "SmemDxe"\r
+  }  \r
+\r
+  FILE DRIVER = 8E9BD160-B184-11DF-94E2-0800200C9A66 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/DALSys/DALSys.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/DALSys/DALSys.efi\r
+    SECTION UI = "DALSys"\r
+  }\r
+\r
+  # FILE DRIVER = 8681CC5A-0DF6-441E-B4B8-E915C538F067 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/HWIODxeDriver/HWIODxeDriver.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/HWIODxeDriver/HWIODxeDriver.efi\r
+  #   SECTION UI = "HWIODxeDriver"\r
+  # }\r
+\r
+  FILE DRIVER = 10e193df-9966-44e7-b17c-59dd831e20fc {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ChipInfo/ChipInfo.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/ChipInfo/ChipInfo.efi\r
+    SECTION UI = "ChipInfo"\r
+  }\r
+\r
+  FILE DRIVER = B105211B-BBBD-4ADD-A3B0-D1CF4A52154C {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/PlatformInfoDxeDriver/PlatformInfoDxeDriver.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/PlatformInfoDxeDriver/PlatformInfoDxeDriver.efi\r
+    SECTION UI = "PlatformInfoDxeDriver"\r
+  }\r
+\r
+  # FILE DRIVER = 9A00771F-36D4-4DD5-8916-C48ED9B16B86 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/HALIOMMU/HALIOMMU.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/HALIOMMU/HALIOMMU.efi\r
+  #   SECTION UI = "HALIOMMU"\r
+  # }\r
+\r
+  FILE DRIVER = E43128A8-8692-42B6-8AFA-676158578D18 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ULogDxe/ULogDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/ULogDxe/ULogDxe.efi\r
+    SECTION UI = "ULogDxe"\r
+  }\r
+\r
+  FILE DRIVER = ABA01FF8-2CCB-4E12-8B2E-CD3F4A742993 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/CmdDbDxe/CmdDbDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/CmdDbDxe/CmdDbDxe.efi\r
+    SECTION UI = "CmdDbDxe"\r
+  }\r
+\r
+  FILE DRIVER = CB29F4D1-7F37-4692-A416-93E82E219711 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/NpaDxe/NpaDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/NpaDxe/NpaDxe.efi\r
+    SECTION UI = "NpaDxe"\r
+  }\r
+\r
+  FILE DRIVER = CB29F4D1-7F37-4692-A416-93E82E219766 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/RpmhDxe/RpmhDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/RpmhDxe/RpmhDxe.efi\r
+    SECTION UI = "RpmhDxe"\r
+  }\r
+\r
+  FILE DRIVER = B43C22DB-6333-490C-872D-0A73439059FD {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/PdcDxe/PdcDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/PdcDxe/PdcDxe.efi\r
+    SECTION UI = "PdcDxe"\r
+  }\r
+\r
+  # FILE DRIVER = 4DB5DEA6-5302-4D1A-8A82-677A683B0D29 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ClockDxe/ClockDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/ClockDxe/ClockDxe.efi\r
+  #   SECTION UI = "ClockDxe"\r
+  # }\r
+\r
+  FILE DRIVER = AF9763A2-033B-4109-8E17-56A98D380C92 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/DALTLMM/DALTLMM.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/DALTLMM/DALTLMM.efi\r
+    SECTION UI = "DALTLMM"\r
+  }\r
+\r
+  # FILE DRIVER = 04DE8591-D2B3-4077-BBBE-B12070094EB6 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/I2C/I2C.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/I2C/I2C.efi\r
+  #   SECTION UI = "I2C"\r
+  # }\r
+\r
+  FILE DRIVER = 2a7b4bef-80cd-49e1-b473-374ba4d673fc {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/SPMI/SPMI.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/SPMI/SPMI.efi\r
+    SECTION UI = "SPMI"\r
+  }\r
+\r
+  # FILE DRIVER = beb12bee-f6e1-11e1-9fb8-6c626de4aeb1 {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/XhciPciEmulation/XhciPciEmulation.efi\r
+  #   SECTION UI = "XhciPciEmulation"\r
+  # }\r
+\r
+  # FILE DRIVER = b7f50e91-a759-412c-ade4-dcd03e7f7c28 {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/XhciDxe/XhciDxe.efi\r
+  #   SECTION UI = "XhciDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 5776232e-082d-4b75-9a0e-fe1d13f7a5d9 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/PmicDxe/PmicDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/PmicDxe/PmicDxe.efi\r
+  #   SECTION UI = "PmicDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 11faed4c-b21f-4d88-8e48-c4c28a1e50df {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbPwrCtrlDxe/UsbPwrCtrlDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbPwrCtrlDxe/UsbPwrCtrlDxe.efi\r
+  #   SECTION UI = "UsbPwrCtrlDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 94f8a6a7-dc34-4101-88c1-99179cceae83 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbfnDwc3Dxe/UsbfnDwc3Dxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbfnDwc3Dxe/UsbfnDwc3Dxe.efi\r
+  #   SECTION UI = "UsbfnDwc3Dxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 2d2e62cf-9ecf-43b7-8219-94e7fc713dfe {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbKbDxe/UsbKbDxe.efi\r
+  #   SECTION UI = "UsbKbDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = cd823a4d-7dec-4531-ae5d-4134fa4127b8 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbConfigDxe/UsbConfigDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbConfigDxe/UsbConfigDxe.efi\r
+  #   SECTION UI = "UsbConfigDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 0A134F0E-075E-40B3-9C63-3B3906804663 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbInitDxe/UsbInitDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbInitDxe/UsbInitDxe.efi\r
+  #   SECTION UI = "UsbInitDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 3299a266-15f0-4346-8318-716336736d3e {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbDeviceDxe/UsbDeviceDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbDeviceDxe/UsbDeviceDxe.efi\r
+  #   SECTION UI = "UsbDeviceDxe"\r
+  # }\r
+\r
+  FILE DRIVER = 5bd181db-0487-4f1a-ae73-820e165611b3 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/ButtonsDxe/ButtonsDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/ButtonsDxe/ButtonsDxe.efi\r
+    SECTION UI = "ButtonsDxe"\r
+  }\r
+\r
+  FILE DRIVER = 0d35cd8e-97ea-4f9a-96af-0f0d89f76567 {\r
+    SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UFSDxe/UFSDxe.depex\r
+    SECTION PE32 = sdm845Pkg/Binary/7125/UFSDxe/UFSDxe.efi\r
+    SECTION UI = "UFSDxe"\r
+  }\r
+\r
+  #   FILE DRIVER = 5AF77F10-90DF-4E7E-8325-A17EC09D5443 {\r
+  #   SECTION DXE_DEPEX = sdm845Pkg/Binary/7125/UsbMsdDxe/UsbMsdDxe.depex\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/UsbMsdDxe/UsbMsdDxe.efi\r
+  #   SECTION UI = "UsbMsdDxe"\r
+  # }\r
+\r
+  # FILE DRIVER = 7DB0793A-4402-4BE1-906E-D0FABAD2707E {\r
+  #   SECTION PE32 = sdm845Pkg/Binary/7125/DDRInfoDxe/DDRInfoDxe.efi\r
+  #   SECTION UI = "DDRInfoDxe"\r
+  # }\r
+\r
+  INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf\r
+  INF sdm845Pkg/Drivers/SimpleFbDxe/SimpleFbDxe.inf\r
+\r
+  #\r
+  # USB Host Support\r
+  #\r
+  INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf\r
+  INF MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf\r
+  INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf\r
+\r
+\r
+  #\r
+  # FAT filesystem + GPT/MBR partitioning\r
+  #\r
+  INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf\r
+  INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf\r
+  INF FatPkg/EnhancedFatDxe/Fat.inf\r
+  INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf\r
+  INF MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf\r
+  INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+\r
+  INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf\r
+\r
+  #\r
+  # ACPI Support\r
+  #\r
+  INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf\r
+  INF MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf\r
+  INF MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf\r
+  # INF RuleOverride = ACPITABLE sdm845Pkg/AcpiTables/AcpiTables.inf\r
+\r
+  # FILE FREEFORM = 7E374E25-8E01-4FEE-87F2-390C23C606CD {   \r
+  #   SECTION RAW = sdm845Pkg/AcpiTables/Common/DBG2.aml\r
+  #   SECTION RAW = sdm845Pkg/AcpiTables/polaris/DSDT.AML\r
+  #   SECTION RAW = sdm845Pkg/AcpiTables/Common/MADT.aml\r
+  #   SECTION RAW = sdm845Pkg/AcpiTables/Common/FADT.aml\r
+  #   SECTION RAW = sdm845Pkg/AcpiTables/Common/GTDT.aml\r
+  #   SECTION RAW = sdm845Pkg/AcpiTables/Common/IORT.aml\r
+  #   SECTION RAW = sdm845Pkg/AcpiTables/Common/PPTT.aml\r
+  #   SECTION UI = "AcpiTables"\r
+  # }\r
+\r
+  #\r
+  # FDT support\r
+  #\r
+  INF EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf\r
+\r
+  # FILE FREEFORM = 25462CDA-221F-47DF-AC1D-259CFAA4E326 {\r
+  #   SECTION RAW = sdm845Pkg/FdtBlob/sdm845-xiaomi-polaris.dtb\r
+  # }\r
+\r
+  #\r
+  # SMBIOS Support\r
+  #\r
+  INF sdm845Pkg/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf\r
+  INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf\r
+\r
+  #\r
+  # UEFI applications\r
+  #\r
+  INF ShellPkg/Application/Shell/Shell.inf\r
+!ifdef $(INCLUDE_TFTP_COMMAND)\r
+  INF ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf\r
+!endif #$(INCLUDE_TFTP_COMMAND)\r
+\r
+  #\r
+  # Bds\r
+  #\r
+  INF MdeModulePkg/Universal/PrintDxe/PrintDxe.inf\r
+  INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
+  INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf\r
+  INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf\r
+  INF MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf\r
+  INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf\r
+  INF MdeModulePkg/Application/UiApp/UiApp.inf\r
+  INF sdm845Pkg/Drivers/LogoDxe/LogoDxe.inf\r
+\r
+  #\r
+  # Simple Init GUI\r
+  #\r
+  INF src/main/SimpleInitMain.inf\r
+\r
+  INF src/kernelfdt/KernelFdtDxe.inf\r
+\r
+[FV.FVMAIN_COMPACT]\r
+FvAlignment        = 8\r
+ERASE_POLARITY     = 1\r
+MEMORY_MAPPED      = TRUE\r
+STICKY_WRITE       = TRUE\r
+LOCK_CAP           = TRUE\r
+LOCK_STATUS        = TRUE\r
+WRITE_DISABLED_CAP = TRUE\r
+WRITE_ENABLED_CAP  = TRUE\r
+WRITE_STATUS       = TRUE\r
+WRITE_LOCK_CAP     = TRUE\r
+WRITE_LOCK_STATUS  = TRUE\r
+READ_DISABLED_CAP  = TRUE\r
+READ_ENABLED_CAP   = TRUE\r
+READ_STATUS        = TRUE\r
+READ_LOCK_CAP      = TRUE\r
+READ_LOCK_STATUS   = TRUE\r
+\r
+  INF ArmPlatformPkg/PrePi/PeiUniCore.inf\r
+\r
+  FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {\r
+    SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {\r
+      SECTION FV_IMAGE = FVMAIN\r
+    }\r
+  }\r
+\r
+!include sdm845Pkg/CommonFdf.fdf.inc\r
+\r
+\r
index 9d55a89587b1a8737927650f7e720146bae27dbb..873daa7b0f700525009b3659bbf221eadd85921a 100644 (file)
@@ -48,9 +48,14 @@ VOID InitPeripherals(IN VOID)
   UINTN                  *pAddr;
 
   // Lock the QcomWdogTimer in a cage on certain devices
+#ifdef SM7125_TEST
+  MmioWrite32(0x17c10008, 0x000000);
+#else
   MmioWrite32(0x17980008, 0x000000);
+#endif
   DEBUG((EFI_D_WARN, "\n \v The Dog has been locked in a cage :)\v"));
 
+#ifndef SM7125_TEST
   Status = gBS->LocateProtocol(
       &gQcomSMEMProtocolGuid, NULL, (VOID **)&pEfiSmemProtocol);
 
@@ -60,6 +65,7 @@ VOID InitPeripherals(IN VOID)
   }
 
   DEBUG((EFI_D_ERROR, "%a: SmemGetAddr result: 0x%p\n", __FUNCTION__, pAddr));
+#endif
   // gBS->Stall(5000000);
 }
 
diff --git a/sdm845Pkg/Include/Configuration/DeviceMemoryMap7125.h b/sdm845Pkg/Include/Configuration/DeviceMemoryMap7125.h
new file mode 100644 (file)
index 0000000..0641c7b
--- /dev/null
@@ -0,0 +1,325 @@
+#ifndef _DEVICE_MEMORY_MAP_H_\r
+#define _DEVICE_MEMORY_MAP_H_\r
+\r
+#include <Library/ArmLib.h>\r
+\r
+#define MAX_ARM_MEMORY_REGION_DESCRIPTOR_COUNT 95\r
+\r
+/* Below flag is used for system memory */\r
+#define SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES                               \\r
+  EFI_RESOURCE_ATTRIBUTE_PRESENT | EFI_RESOURCE_ATTRIBUTE_INITIALIZED |        \\r
+      EFI_RESOURCE_ATTRIBUTE_TESTED | EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |     \\r
+      EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |                               \\r
+      EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |                         \\r
+      EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE |                            \\r
+      EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE\r
+\r
+typedef enum { NoHob, AddMem, AddDev, Mem4G, Mem6G, Mem8G, Mem10G, MaxMem } DeviceMemoryAddHob;\r
+\r
+typedef struct {\r
+  EFI_PHYSICAL_ADDRESS         Address;\r
+  UINT64                       Length;\r
+  EFI_RESOURCE_TYPE            ResourceType;\r
+  EFI_RESOURCE_ATTRIBUTE_TYPE  ResourceAttribute;\r
+  ARM_MEMORY_REGION_ATTRIBUTES ArmAttributes;\r
+  DeviceMemoryAddHob           HobOption;\r
+  EFI_MEMORY_TYPE              MemoryType;\r
+} ARM_MEMORY_REGION_DESCRIPTOR_EX, *PARM_MEMORY_REGION_DESCRIPTOR_EX;\r
+\r
+static ARM_MEMORY_REGION_DESCRIPTOR_EX gDeviceMemoryDescriptorEx[] = {\r
+    /* Address,          Length,     ResourceType, Resource Attribute, ARM MMU\r
+       Attribute,                  HobOption, EFI Memory Type */\r
+\r
+    /* DDR */\r
+\r
+    /* HYP */\r
+    {0x80000000, 0x00600000, EFI_RESOURCE_MEMORY_RESERVED,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED, AddMem, \r
+     EfiReservedMemoryType},\r
+    /* AOP CMD DB */\r
+    {0x80700000, 0x00140000, EFI_RESOURCE_MEMORY_RESERVED,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED, AddMem, \r
+     EfiReservedMemoryType},\r
+    /* sec_apps_region */\r
+    {0x808ff000, 0x00001000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_DEVICE, NoHob, EfiReservedMemoryType},\r
+    /* SMEM */\r
+    {0x80900000, 0x00200000, EFI_RESOURCE_MEMORY_RESERVED,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED, AddMem,\r
+     EfiReservedMemoryType},\r
+    /* removed_region */\r
+    {0x80b00000, 0x03900000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_DEVICE, NoHob, EfiReservedMemoryType},\r
+    /* PIL_REGION */\r
+    {0x84400000, 0x0F800000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_DEVICE, AddMem, EfiReservedMemoryType},\r
+    /* DXE Heap */\r
+    {0x93C00000, 0x04500000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiConventionalMemory},\r
+    /* Sched Heap */\r
+    {0x9B800000, 0x00400000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiBootServicesData},\r
+\r
+    /* FrameBuffer */\r
+    {0x9C000000, 0x01800000, EFI_RESOURCE_MEMORY_RESERVED,\r
+     EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_THROUGH, AddMem, EfiReservedMemoryType},\r
+    /* FV Region */\r
+    {0x9F800000, 0x00200000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiBootServicesData},\r
+    /* ABOOT FV */\r
+    {0x9FA00000, 0x00200000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiReservedMemoryType},\r
+    /* UEFI FD */\r
+    {0x9FC00000, 0x00300000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiBootServicesData},\r
+    /* SEC Heap */\r
+    {0x9FF00000, 0x0008C000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiBootServicesData},\r
+    /* CPU Vectors */\r
+    {0x9FF8C000, 0x00001000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiBootServicesData},\r
+    /* MMU PageTables */\r
+    {0x9FF8D000, 0x00003000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiBootServicesData},\r
+    /* UEFI Stack */\r
+    {0x9FF90000, 0x00040000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, AddMem, EfiBootServicesData},\r
+\r
+    /* Runtime Services Data */\r
+    {0x9FFF7000, 0x00009000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED, AddMem,\r
+     EfiRuntimeServicesData},\r
+\r
+    /* 4GiB Memory */\r
+    // {0xA0000000, 0xDDFA0000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+    //  SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+    //  ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, Mem4G, EfiConventionalMemory},\r
+\r
+       /* DBI Dump */\r
+    {0xC0000000, 0x00F00000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_INITIALIZED, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     NoHob, EfiConventionalMemory},\r
+\r
+    /* 6GiB Memory */\r
+    {0xC0F00000, 0x3F100000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, Mem6G, EfiConventionalMemory},\r
+\r
+    {0x100000000, 0x100000000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+     SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+     ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, Mem6G, EfiConventionalMemory},\r
+\r
+    /* 8GiB Memory */\r
+    // {0xA0000000, 0xE0000000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+    //  SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+    //  ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, Mem8G, EfiConventionalMemory},\r
+    // {0x180000000, 0xFC8A0000, EFI_RESOURCE_SYSTEM_MEMORY,\r
+    //  SYSTEM_MEMORY_RESOURCE_ATTR_CAPABILITIES,\r
+    //  ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK, Mem8G, EfiConventionalMemory},\r
+\r
+    /* Other */\r
+\r
+    /* AOP_SS_MSG_RAM */\r
+    {0x0C300000, 0x00100000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_INITIALIZED, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     NoHob, EfiConventionalMemory},\r
+    /* IMEM Base */\r
+    {0x14680000, 0x0002B000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_INITIALIZED, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     NoHob, EfiConventionalMemory},\r
+    /* IMEM Cookie Base */\r
+    {0x146AA000, 0x00001000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_INITIALIZED, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiConventionalMemory},\r
+\r
+    /* Register */\r
+\r
+    /* GCC CLK CTL */\r
+    {0x00100000, 0x00200000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* SECURITY CONTROL */\r
+    {0x00780000, 0x00007000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* PRNG_CFG_PRNG */\r
+    {0x00790000, 0x00010000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* SDC1_REG */\r
+    {0x007C0000, 0x00020000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* QUPV3_0_GSI */\r
+    {0x00800000, 0x00100000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* QUPV3_1_GSI */\r
+    {0x00A00000, 0x00100000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* UFS UFS REGS */\r
+    {0x01D80000, 0x00020000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* CRYPTO0 CRYPTO */\r
+    {0x01DC0000, 0x00040000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* TCSR_TCSR_REGS */\r
+    {0x01FC0000, 0x00040000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* TLMM_WEST */\r
+    {0x03500000, 0x00300000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* TLMM_NORTH */\r
+    {0x03900000, 0x00300000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* TLMM_SOUTH */\r
+    {0x03D00000, 0x00300000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* GPU_CC */\r
+    {0x05090000, 0x00009000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* GPU_CPR */\r
+    {0x0509A000, 0x00004000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* RPMH_CPRF */\r
+    {0x0C200000, 0x00010000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* QUPV3_SSC_GSI */\r
+    {0x62B00000, 0x00060000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* PERIPH_SS */\r
+    {0x08800000, 0x00200000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* MCCC_MCCC_MSTR */\r
+    {0x090B0000, 0x00001000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* USB30_PRIM */\r
+    {0x0A600000, 0x0011B000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* USB_RUMI */\r
+    {0x0A720000, 0x00010000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* PDC_DISPLAY */\r
+    {0x0B2A0000, 0x00010000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* PDC_DISP_SEQ */\r
+    {0x0B4A0000, 0x00010000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* RPMH_BCM_BCM_TOP */\r
+    {0x0BA00000, 0x00200000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* SLP_CNTR_TSENS */\r
+    {0x0C221000, 0x00003000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* TSENS0_TM_PSHOLD */\r
+    {0x0C263000, 0x00003000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* PMIC_ARB_SPMI */\r
+    {0x0C400000, 0x02800000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* VIDEO_CC */\r
+    {0x0AB00000, 0x00020000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* NPU_CC */\r
+    {0x09980000, 0x00010000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* TITAN_CAM_CC */\r
+    {0x0AD00000, 0x00020000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* DISP_CC */\r
+    {0x0AF00000, 0x00020000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* SILVER_CLK_CTL */\r
+    {0x18280000, 0x00001000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* GOLD_CLK_CTL */\r
+    {0x18282000, 0x00001000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* L3_CLK_CTL */\r
+    {0x18284000, 0x00001000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* APSS_RSC_RSCCR */\r
+    {0x18200000, 0x00030000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* APSS_GIC500_GICD */\r
+    {0x17A00000, 0x00010000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* APSS_GIC500_GICR */\r
+    {0x17A60000, 0x00100000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* QTIMER */\r
+    {0x17C00000, 0x00110000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* APSS_ACTPM_WRAP */\r
+    {0x18300000, 0x000B0000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* MDSS */\r
+    {0x0AE00000, 0x00134000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+    /* SMMU */\r
+    {0x15000000, 0x000D0000, EFI_RESOURCE_MEMORY_MAPPED_IO,\r
+     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE, ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,\r
+     AddDev, EfiMemoryMappedIO},\r
+\r
+    /* Terminator */\r
+    {}};\r
+\r
+#endif\r
index 66b78f67a5cf8e0e0ed0ea0a8dfaa82ba3b1033e..94d294b5aab1ca6b66bd742b0916ab418bbcb345 100644 (file)
 #include <Library/FdtParserLib.h>
 
 // This varies by device
+#ifdef SM7125_TEST
+#include <Configuration/DeviceMemoryMap7125.h>
+#else
 #include <Configuration/DeviceMemoryMap.h>
+#endif
 
 #define SIZE_KB ((UINTN)(1024))
 #define SIZE_MB ((UINTN)(SIZE_KB * 1024))
index f92035ab8d2f4412c1c09629f01eff766482ab97..75a964fe79b9d4026e68b1a0c8db5f7742334869 100644 (file)
@@ -1,6 +1,12 @@
 #ifndef UARTQUPV3_H
 #define UARTQUPV3_H
+
+#ifdef SM7125_TEST
+#define UART_DEBUG_PORT_BASE                             0xA88000
+#else
 #define UART_DEBUG_PORT_BASE                             0xA84000
+#endif
+
 #define UART_BASE_ADDR                                   UART_DEBUG_PORT_BASE
 #define RING_SIZE                                        256
 #define MemWrite(off1,off2,val)                          (*((volatile UINT32*)(UINTN)(UART_BASE_ADDR+(off1)+(off2)))=((UINT32)(val)))
diff --git a/sdm845Pkg/sm7125Pkg.dsc b/sdm845Pkg/sm7125Pkg.dsc
new file mode 100644 (file)
index 0000000..b35ab14
--- /dev/null
@@ -0,0 +1,340 @@
+#
+#  Copyright (c) 2018, Linaro Limited. All rights reserved.
+#
+#  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 Section - statements that will be processed to create a Makefile.
+#
+################################################################################
+
+!include sdm845Pkg/CommonDsc.dsc.inc
+
+[LibraryClasses.common]
+  ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
+  ArmPlatformLib|sdm845Pkg/Library/sdm845Lib/sdm845Lib.inf
+  CompilerIntrinsicsLib|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
+  UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
+  PlatformBootManagerLib|ArmPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+  CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
+
+  # UiApp dependencies
+  ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+  FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
+  DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
+  BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
+
+!if $(USE_UART) == 1
+  SerialPortLib|sdm845Pkg/Library/QcomGeniSerialPortLib/QcomGeniSerialPortLib.inf
+!else
+  SerialPortLib|sdm845Pkg/Library/FrameBufferSerialPortLib/FrameBufferSerialPortLib.inf
+!endif
+
+  RealTimeClockLib|EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.inf
+  TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf
+
+  # USB Requirements
+  UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
+
+  # Network Libraries
+  UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
+  NetLib|NetworkPkg/Library/DxeNetLib/DxeNetLib.inf
+  DpcLib|NetworkPkg/Library/DxeDpcLib/DxeDpcLib.inf
+  IpIoLib|NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib.inf
+  UdpIoLib|NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
+
+  # VariableRuntimeDxe Requirements
+  SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
+  AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf
+  TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
+  VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
+
+  #
+  # Secure Boot dependencies
+  #
+
+  # Cryptographic libraries
+  RngLib|MdePkg/Library/DxeRngLib/DxeRngLib.inf
+  IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
+  BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
+  OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
+  TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
+
+  TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf
+  AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf
+  SecureBootVariableLib|SecurityPkg/Library/SecureBootVariableLib/SecureBootVariableLib.inf
+  SecureBootVariableProvisionLib|SecurityPkg/Library/SecureBootVariableProvisionLib/SecureBootVariableProvisionLib.inf
+  PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf
+
+  # SimpleFbDxe
+  FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf
+
+  PlatformBootManagerLib|sdm845Pkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+  MemoryInitPeiLib|sdm845Pkg/Library/MemoryInitPeiLib/PeiMemoryAllocationLib.inf
+  PlatformPeiLib|sdm845Pkg/Library/PlatformPeiLib/PlatformPeiLib.inf
+
+!ifdef $(AB_SLOTS_SUPPORT)
+  BootSlotLib|sdm845Pkg/Library/BootSlotLib/BootSlotLib.inf
+!endif #$(AB_SLOTS_SUPPORT)
+
+[LibraryClasses.common.SEC]
+  PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf
+  ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf
+  HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf
+  MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf
+  MemoryInitPeiLib|sdm845Pkg/Library/MemoryInitPeiLib/PeiMemoryAllocationLib.inf
+  PlatformPeiLib|sdm845Pkg/Library/PlatformPeiLib/PlatformPeiLib.inf
+  PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
+
+################################################################################
+#
+# Pcd Section - list of all EDK II PCD Entries defined by this Platform
+#
+################################################################################
+
+[PcdsFeatureFlag.common]
+  ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
+  #  It could be set FALSE to save size.
+  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
+  gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
+
+
+[PcdsFixedAtBuild.common]
+  gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|4
+
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"$(FIRMWARE_VER)"
+
+  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
+  gArmTokenSpaceGuid.PcdSystemMemorySize|0xC0000000
+
+  #
+  # SimpleInit
+  #
+  gSimpleInitTokenSpaceGuid.PcdDeviceTreeStore|0xa3000000
+  gSimpleInitTokenSpaceGuid.PcdLoggerdUseConsole|FALSE
+
+  gArmPlatformTokenSpaceGuid.PcdCoreCount|8
+  gArmPlatformTokenSpaceGuid.PcdClusterCount|2
+
+  #
+  # ARM General Interrupt Controller
+  #
+  gArmTokenSpaceGuid.PcdGicDistributorBase|0x17a00000
+  gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x17a60000
+
+  gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x12
+  gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x13
+
+  # GUID of the UI app
+  gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
+  gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0
+
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
+
+  gEmbeddedTokenSpaceGuid.PcdMetronomeTickPeriod|1000
+
+  #
+  # Fastboot
+  #
+  gEmbeddedTokenSpaceGuid.PcdAndroidFastbootUsbVendorId|0x18d1
+  gEmbeddedTokenSpaceGuid.PcdAndroidFastbootUsbProductId|0xd00d
+
+  #
+  # Make VariableRuntimeDxe work at emulated non-volatile variable mode.
+  #
+  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable|TRUE
+
+  gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferAddress|0x9c000000
+
+  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20
+
+################################################################################
+#
+# Components Section - list of all EDK II Modules needed by this Platform
+#
+################################################################################
+[Components.common]
+  #
+  # PEI Phase modules
+  #
+  ArmPlatformPkg/PrePi/PeiUniCore.inf
+
+  #
+  # DXE
+  #
+  MdeModulePkg/Core/Dxe/DxeMain.inf {
+    <LibraryClasses>
+      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+      NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
+  }
+
+  #
+  # Architectural Protocols
+  #
+  ArmPkg/Drivers/CpuDxe/CpuDxe.inf
+  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
+
+  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf {
+    <LibraryClasses>
+      NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf
+  }
+  SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
+  SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf
+  SecurityPkg/VariableAuthenticated/SecureBootDefaultKeysDxe/SecureBootDefaultKeysDxe.inf
+
+  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
+  EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf
+  MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
+  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
+  EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
+
+  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
+  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
+  MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
+  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+
+!if $(TARGET) != RELEASE
+  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
+!endif
+
+  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
+
+  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
+  ArmPkg/Drivers/TimerDxe/TimerDxe.inf
+
+  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
+
+  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
+
+  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf {
+    <LibraryClasses>
+         RealTimeClockLib|sdm845Pkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.inf
+  }
+
+  MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
+  MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
+
+  #
+  # Virtual Keyboard
+  #
+  EmbeddedPkg/Drivers/VirtualKeyboardDxe/VirtualKeyboardDxe.inf
+
+  sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+  sdm845Pkg/Drivers/SimpleFbDxe/SimpleFbDxe.inf
+
+  #
+  # USB Host Support
+  #
+  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
+  MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
+
+  #
+  # USB Mass Storage Support
+  #
+  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
+
+  #
+  # USB Peripheral Support
+  #
+  EmbeddedPkg/Drivers/AndroidFastbootTransportUsbDxe/FastbootTransportUsbDxe.inf
+
+  #
+  # Fastboot
+  #
+  EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.inf
+
+
+  #
+  # FAT filesystem + GPT/MBR partitioning
+  #
+  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
+  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
+  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
+  MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf
+  FatPkg/EnhancedFatDxe/Fat.inf
+
+  #
+  # ACPI Support
+  #
+  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
+  MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
+  MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
+  # sdm845Pkg/AcpiTables/AcpiTables.inf
+
+  #
+  # FDT support
+  #
+  EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf
+
+  #
+  # SMBIOS Support
+  #
+  sdm845Pkg/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
+  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
+
+  #
+  # OnePlus 6T A/B Slot Support
+  # Op6tSlotDxe and BootSlotDxe have the same goal, do not use them both at the same time in device fdf.
+  #
+  sdm845Pkg/Drivers/Op6tSlotDxe/Op6tSlotDxe.inf
+!ifdef $(AB_SLOTS_SUPPORT)
+  sdm845Pkg/Drivers/BootSlotDxe/BootSlotDxe.inf
+  sdm845Pkg/Application/SwitchSlotsApp/SwitchSlotsApp.inf
+!endif #$(AB_SLOTS_SUPPORT)
+
+  #
+  # Bds
+  #
+  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
+  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
+  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf {
+    <LibraryClasses>
+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+  }
+  MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
+  MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
+  MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
+  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
+  MdeModulePkg/Application/UiApp/UiApp.inf {
+    <LibraryClasses>
+      NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
+      NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
+      NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
+      PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+  }
+  sdm845Pkg/Drivers/LogoDxe/LogoDxe.inf
+
+  ShellPkg/Application/Shell/Shell.inf {
+    <LibraryClasses>
+      ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
+      NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf
+      NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf
+      NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf
+      NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf
+      NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf
+      NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf
+      NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf
+      NULL|ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf
+      HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
+      PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
+      BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
+    <PcdsFixedAtBuild>
+      gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
+      gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
+      gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
+  }
+!ifdef $(INCLUDE_TFTP_COMMAND)
+  ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf
+!endif #$(INCLUDE_TFTP_COMMAND)
+
+[BuildOptions.common]
+  GCC:*_*_AARCH64_CC_FLAGS = -Wno-unused-variable -march=armv8.2-a+crypto+rcpc -mtune=cortex-a75.cortex-a55