sdm845Pkg: Library: SimpleInit: add fdt parser
authorBigfootACA <bigfoot@classfun.cn>
星期三, 9 Feb 2022 18:16:07 +0000 (02:16 +0800)
committerBigfootACA <bigfoot@classfun.cn>
星期四, 10 Feb 2022 08:44:59 +0000 (16:44 +0800)
15 files changed:
.gitmodules
build.sh
sdm845Pkg/CommonDsc.dsc.inc
sdm845Pkg/Devices/beryllium.dsc
sdm845Pkg/Devices/dipper.dsc
sdm845Pkg/Devices/enchilada.dsc
sdm845Pkg/Devices/fajita.dsc
sdm845Pkg/Devices/odin-base.dsc
sdm845Pkg/Devices/perseus.dsc
sdm845Pkg/Devices/polaris.dsc
sdm845Pkg/Include/Library/FdtParserLib.h [new file with mode: 0644]
sdm845Pkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
sdm845Pkg/Library/SimpleInit
sdm845Pkg/Library/StdLib [deleted submodule]
sdm845Pkg/sdm845Pkg.dec

index 85cbb5b54989b07b20276431b085157bd2a56686..bd78f7c8991be88ff0ca75274a4f818dad0b3e5f 100644 (file)
@@ -10,9 +10,6 @@
 [submodule "sdm845Pkg/AcpiTables"]
        path = sdm845Pkg/AcpiTables
        url = https://git.renegade-project.org/edk2-sdm845-acpi.git
-[submodule "sdm845Pkg/Library/StdLib"]
-       path = sdm845Pkg/Library/StdLib
-       url = https://github.com/edk2-porting/edk2-libc.git
 [submodule "sdm845Pkg/Library/SimpleInit"]
        path = sdm845Pkg/Library/SimpleInit
        url = https://github.com/BigfootACA/simple-init.git
index e9fa6104f8096f3cef93a91bde37fcad40390952..06d20a32ac640de23b1cc4e00b78cb6a94da8b3b 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -141,7 +141,6 @@ then        set -e
        then    git submodule set-url edk2                         https://github.com.cnpmjs.org/tianocore/edk2.git
                git submodule set-url edk2-platforms               https://github.com.cnpmjs.org/tianocore/edk2-platforms.git
                git submodule set-url sdm845Pkg/Binary             https://github.com.cnpmjs.org/edk2-porting/edk2-sdm845-binary.git
-               git submodule set-url sdm845Pkg/Library/StdLib     https://github.com.cnpmjs.org/edk2-porting/edk2-libc.git
                git submodule set-url sdm845Pkg/Library/SimpleInit https://github.com.cnpmjs.org/BigfootACA/simple-init.git
                git submodule init;git submodule update --depth 1
                pushd edk2
@@ -181,12 +180,6 @@ do if [ -n "${i}" ]&&[ -f "${i}/edksetup.sh" ]
                break
        fi
 done
-for i in "${EDK2_LIBC}" sdm845Pkg/Library/StdLib ./edk2-libc ../edk2-libc
-do     if [ -n "${i}" ]&&[ -d "${i}/StdLib" ]
-       then    _EDK2_LIBC="$(realpath "${i}")"
-               break
-       fi
-done
 for i in "${EDK2_PLATFORMS}" ./edk2-platforms ../edk2-platforms
 do     if [ -n "${i}" ]&&[ -d "${i}/Platform" ]
        then    _EDK2_PLATFORMS="$(realpath "${i}")"
@@ -200,7 +193,6 @@ do  if [ -n "${i}" ]&&[ -f "${i}/SimpleInit.inc" ]
        fi
 done
 [ -n "${_EDK2}" ]||_error "EDK2 not found, please see README.md"
-[ -n "${_EDK2_LIBC}" ]||_error "EDK2-LibC not found, please see README.md"
 [ -n "${_EDK2_PLATFORMS}" ]||_error "EDK2 Platforms not found, please see README.md"
 [ -n "${_SIMPLE_INIT}" ]||_error "SimpleInit not found, please see README.md"
 echo "EDK2 Path: ${_EDK2}"
@@ -208,7 +200,7 @@ echo "EDK2_PLATFORMS Path: ${_EDK2_PLATFORMS}"
 export CROSS_COMPILE="${CROSS_COMPILE:-aarch64-linux-gnu-}"
 export GCC5_AARCH64_PREFIX="${CROSS_COMPILE}"
 export CLANG38_AARCH64_PREFIX="${CROSS_COMPILE}"
-export PACKAGES_PATH="$_EDK2:$_EDK2_PLATFORMS:$_EDK2_LIBC:$_SIMPLE_INIT:$PWD"
+export PACKAGES_PATH="$_EDK2:$_EDK2_PLATFORMS:$_SIMPLE_INIT:$PWD"
 export WORKSPACE="${PWD}/workspace"
 GITCOMMIT="$(git describe --tags --always)"||GITCOMMIT="unknown"
 export GITCOMMIT
index 139cc9ddb5cc90234611131e077baf4f03544cc3..db0c56931617c573f04829c27e735b1270af3cde 100644 (file)
@@ -14,7 +14,7 @@
 #
 
 !include MdePkg/MdeLibs.dsc.inc
-!include sdm845Pkg/Library/SimpleInit/SimpleInit-EDK2.inc
+!include sdm845Pkg/Library/SimpleInit/SimpleInit.inc
 
 [LibraryClasses.common]
 !if $(TARGET) == RELEASE
index 61ad42c493f1a4f6823f5f70d4ac2e29fef9dd2a..78d8e132ba0eaf741f4b2aa9e9f4fe9e1bfeb255 100644 (file)
@@ -12,7 +12,7 @@
 !include sdm845Pkg/sdm845Pkg.dsc
 
 [BuildOptions.common]
-  GCC:*_*_AARCH64_CC_FLAGS = -DDISPLAY_DPI=440 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
+  GCC:*_*_AARCH64_CC_FLAGS = -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
 
 [PcdsFixedAtBuild.common]
 
@@ -24,6 +24,9 @@
   gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"Poco F1"
   gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"beryllium"
 
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|440
+
   #uncomment section underneath and comment out the above section to use full display, including the notch
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferPixelBpp|32|UINT32|0x0000a403
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferVisibleWidth|1080|UINT32|0x0000a404
index dfb4f00562342327eacb319fb1f58c522ff65f3c..91ebe5fa58bceaeb3a28a4e7434afbec97b9faea 100644 (file)
 !include sdm845Pkg/sdm845Pkg.dsc
 
 [BuildOptions.common]
-  GCC:*_*_AARCH64_CC_FLAGS = -DXIAOMI_PIL_FIXED=1 -DDISPLAY_DPI=410 -DENABLE_SIMPLE_INIT
+  GCC:*_*_AARCH64_CC_FLAGS = -DXIAOMI_PIL_FIXED=1 -DENABLE_SIMPLE_INIT
 
 [PcdsFixedAtBuild.common]
 
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferWidth|1080
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferHeight|2248
 
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|410
+
   gsdm845PkgTokenSpaceGuid.PcdDeviceVendor|"Xiaomi"
   gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"MI 8"
   gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"dipper"
index 4793db19ebbf732bade14b606392773ea4f4d0e1..767586e23aff1bcb68a1db40a9b0a6c2247f78c1 100644 (file)
@@ -15,7 +15,7 @@
 !include sdm845Pkg/sdm845Pkg.dsc
 
 [BuildOptions.common]
-  GCC:*_*_AARCH64_CC_FLAGS = -DAB_SLOTS_SUPPORT=1 -DDISPLAY_DPI=440 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
+  GCC:*_*_AARCH64_CC_FLAGS = -DAB_SLOTS_SUPPORT=1 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
 
 [PcdsFixedAtBuild.common]
 
@@ -25,3 +25,6 @@
   gsdm845PkgTokenSpaceGuid.PcdDeviceVendor|"Oneplus"
   gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"6"
   gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"enchilada"
+
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|440
index 8174f19e1d8ee9790277eb2574387553b1ea38ca..c12b818ea14e58d3274a0aa2251d27f56066bd57 100644 (file)
 !include sdm845Pkg/sdm845Pkg.dsc
 
 [BuildOptions.common]
-  GCC:*_*_AARCH64_CC_FLAGS = -DAB_SLOTS_SUPPORT=1 -DDISPLAY_DPI=440 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
+  GCC:*_*_AARCH64_CC_FLAGS = -DAB_SLOTS_SUPPORT=1 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
 
 [PcdsFixedAtBuild.common]
 
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferWidth|1080
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferHeight|2340
 
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|440
+
   gsdm845PkgTokenSpaceGuid.PcdDeviceVendor|"Oneplus"
   gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"6T"
   gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"fajita"
index 682cb140cf5fbbbe9339578814c2a801551e258a..be96132104988e3a7f6062c3e8080ebd5bdc27f5 100644 (file)
 !include sdm845Pkg/sdm845Pkg.dsc
 
 [BuildOptions.common]
-  GCC:*_*_AARCH64_CC_FLAGS = -DAB_SLOTS_SUPPORT=1 -DDISPLAY_DPI=369 -DENABLE_SIMPLE_INIT
+  GCC:*_*_AARCH64_CC_FLAGS = -DAB_SLOTS_SUPPORT=1 -DENABLE_SIMPLE_INIT
 
 [PcdsFixedAtBuild.common]
 
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferWidth|1080
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferHeight|1920
 
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|369
+
   gsdm845PkgTokenSpaceGuid.PcdDeviceVendor|"AYN"
   gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"Odin"
   gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"ayn-odin"
index 7f84d73e3fee989551745c425b4627e5bdf7c9d1..337285ce397cbc1397064ae045238abf796ebe62 100644 (file)
 !include sdm845Pkg/sdm845Pkg.dsc
 
 [BuildOptions.common]
-  GCC:*_*_AARCH64_CC_FLAGS = -DXIAOMI_PIL_FIXED=1 -DDISPLAY_DPI=403 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
+  GCC:*_*_AARCH64_CC_FLAGS = -DXIAOMI_PIL_FIXED=1 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
 
 [PcdsFixedAtBuild.common]
 
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferWidth|1080
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferHeight|2340
 
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|403
+
   gsdm845PkgTokenSpaceGuid.PcdDeviceVendor|"Xiaomi"
   gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"MIX3"
   gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"perseus"
index 25255d6360cdce713c6b933375ee45d816fa4e45..8cab507625ea74f5dd10fe2bfd93311e06bc0dfe 100644 (file)
 !include sdm845Pkg/sdm845Pkg.dsc
 
 [BuildOptions.common]
-  GCC:*_*_AARCH64_CC_FLAGS = -DXIAOMI_PIL_FIXED=1 -DDISPLAY_DPI=440 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
+  GCC:*_*_AARCH64_CC_FLAGS = -DXIAOMI_PIL_FIXED=1 -DENABLE_SIMPLE_INIT -DENABLE_LINUX_SIMPLE_MASS_STORAGE
 
 [PcdsFixedAtBuild.common]
 
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferWidth|1080
   gsdm845PkgTokenSpaceGuid.PcdMipiFrameBufferHeight|2160
 
+  # Simple Init
+  gSimpleInitTokenSpaceGuid.PcdGuiDefaultDPI|440
+
   gsdm845PkgTokenSpaceGuid.PcdDeviceVendor|"Xiaomi"
   gsdm845PkgTokenSpaceGuid.PcdDeviceProduct|"MIX2S"
   gsdm845PkgTokenSpaceGuid.PcdDeviceCodeName|"polaris"
diff --git a/sdm845Pkg/Include/Library/FdtParserLib.h b/sdm845Pkg/Include/Library/FdtParserLib.h
new file mode 100644 (file)
index 0000000..0c8dd93
--- /dev/null
@@ -0,0 +1,71 @@
+/** @file
+ *
+ * Device Tree Parse Library
+ *
+ * Copyright (c) 2021, BigfootACA <bigfoot@classfun.cn>
+ *
+ **/
+
+#ifndef _FDT_PARSER_LIB
+#define _FDT_PARSER_LIB
+#include <Uefi.h>
+#include <Library/DebugLib.h>
+#include <Library/PrintLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <fdtparser.h>
+#include <param.h>
+#include <keyval.h>
+
+STATIC
+inline
+fdt*
+EFIAPI
+GetFdt(VOID)
+{
+  EFI_PHYSICAL_ADDRESS FdtStore = (EFI_PHYSICAL_ADDRESS)FixedPcdGet64(DeviceTreeStore);
+  EFI_PHYSICAL_ADDRESS FdtAddress = *(EFI_PHYSICAL_ADDRESS*)FdtStore;
+
+  DEBUG((EFI_D_INFO, "Device Tree Address: 0x%016lx\n",FdtAddress));
+
+  if (FdtAddress < PcdGet64(PcdSystemMemoryBase)){
+    DEBUG((EFI_D_INFO, "Invalid Device Tree Address\n"));
+    return NULL;
+  }
+
+  return get_fdt_from_pointer ((VOID*)FdtAddress);
+}
+
+STATIC
+inline
+VOID
+EFIAPI
+CmdlineDumpItemDebug(IN UINTN Level, IN CHAR8 *Prefix, IN keyval *Item)
+{
+       if (Item == NULL) return;
+       DEBUG((
+               Level,
+               "%aKey = \"%a\", Value = \"%a\"\n",
+               (Prefix != NULL ? Prefix : ""),
+               Item->key, Item->value
+       ));
+}
+
+STATIC
+inline
+VOID
+EFIAPI
+CmdlineDumpItemsDebug(IN UINTN Level, IN CHAR8 *Prefix, IN keyval **Items)
+{
+       CHAR8 String[256];
+       if (Items == NULL) return;
+       KVARR_FOREACH (Items, Item, Index) {
+               ZeroMem(String, sizeof (String));
+               AsciiSPrint(
+                       String, sizeof (String), "%aItem %d: ",
+                       (Prefix != NULL ? Prefix : ""), Index + 1
+               );
+               CmdlineDumpItemDebug(Level, String, Item);
+       }
+}
+
+#endif
index 1fc4584afa8a00858eb925f0a7f75c1e7dedd7e5..287e88d939a3c59ec8149735349674f1f4822063 100644 (file)
@@ -34,6 +34,7 @@
   MdePkg/MdePkg.dec
   ShellPkg/ShellPkg.dec
   sdm845Pkg/sdm845Pkg.dec
+  SimpleInit.dec
 
 [LibraryClasses]
   BaseLib
index d64d7db87aa2f7bc1d507ea8d722c7ebe98b3aa4..2752bcce5e89cd53e6f171e22b3b46bdf9d11fbc 160000 (submodule)
@@ -1 +1 @@
-Subproject commit d64d7db87aa2f7bc1d507ea8d722c7ebe98b3aa4
+Subproject commit 2752bcce5e89cd53e6f171e22b3b46bdf9d11fbc
diff --git a/sdm845Pkg/Library/StdLib b/sdm845Pkg/Library/StdLib
deleted file mode 160000 (submodule)
index 0bcd289..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0bcd2898750ba29e9faac10c17fc1f1c56070f16
index ca903a9828de33353a553e9ca8dab6d4cd513f59..be9076fc17bd4c04ec51f0b27e39830095d2556f 100644 (file)
@@ -46,8 +46,6 @@
 
 [Guids]
   gSwitchSlotsAppFileGuid             = { 0xD5BC0FB1, 0xA833, 0x4607, { 0xB7, 0xB6, 0x5E, 0xF9, 0xD1, 0x0B, 0xEE, 0xB7 } }
-  gSimpleInitFileGuid                 = { 0x6D77B2BB, 0x69EB, 0x42AB, { 0xBE, 0xCF, 0x4F, 0x40, 0xC8, 0x95, 0x68, 0xC3 } }
-  gLinuxSimpleMassStorageGuid         = { 0x2a24787e, 0xe09c, 0x43ce, { 0xb5, 0xcf, 0xd0, 0x30, 0x66, 0xf6, 0x09, 0x2f } }
 
 [PcdsFixedAtBuild.common]
   # Simple FrameBuffer