public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3
@ 2020-04-30 19:18 Andrei Warkentin
  2020-04-30 19:19 ` [edk2-platforms][PATCH 1/2] RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4 implementation Andrei Warkentin
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Andrei Warkentin @ 2020-04-30 19:18 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

Dear all,

This patch set finishes what I started with the Pi 4 fix for
the regression seen with newer VideoCore firmware, where a
device tree passed via config.txt would not be detected by UEFI.

This makes VPU-passed FDT work again on Pi 3 variants. This also
cleans up the docs around correctly using FDT, hopefully solving
some of the frustrations seem around using this correctly.

Andrei Warkentin (2):
  RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4
    implementation
  RPi: update Pi3 and Pi4 readmes with correct info on FDT handling

 .../Library/PlatformLib/RaspberryPiMem.c      | 45 +++++++++----------
 Platform/RaspberryPi/RPi3/RPi3.dsc            |  9 +++-
 Platform/RaspberryPi/RPi3/RPi3.fdf            | 36 ++++++++-------
 Platform/RaspberryPi/RPi3/Readme.md           | 38 ++++++++++------
 Platform/RaspberryPi/RPi4/RPi4.dsc            |  7 ++-
 Platform/RaspberryPi/RPi4/RPi4.fdf            |  8 ++++
 Platform/RaspberryPi/RPi4/Readme.md           | 24 +++++-----
 Platform/RaspberryPi/RaspberryPi.dec          |  6 ++-
 8 files changed, 103 insertions(+), 70 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [edk2-platforms][PATCH 1/2] RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4 implementation
  2020-04-30 19:18 [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3 Andrei Warkentin
@ 2020-04-30 19:19 ` Andrei Warkentin
  2020-05-01  9:35   ` Pete Batard
  2020-04-30 19:19 ` [edk2-platforms][PATCH 2/2] RPi: update Pi3 and Pi4 readmes with correct info on FDT handling Andrei Warkentin
  2020-05-01 10:30 ` [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3 Ard Biesheuvel
  2 siblings, 1 reply; 6+ messages in thread
From: Andrei Warkentin @ 2020-04-30 19:19 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

A rev-up of start.elf VPU firmware meant that the previous scheme of
loading the DTB over top of RPI_EFI.FD no longer works - the DT is now
loaded way before the armstub, so any overlap means the DT is overridden.

This change re-arranges a few items in the FD, allowing the DTB to loaded
directly after the FD in physical memory.

Unlike the Pi 4 implementation, we can't move the UEFI image down in memory,
as that needs a TF-A changem so it just reduces the size by 0x10000. The
same base address (0x1f0000) is used as on the Pi 4.

The Pi 3 FDF can be further unified with Pi 4 after work on TF-A to move
to a single BL32-based Pi 3 TF-A implementation.

Tested: Pi 3A+, Pi 2B v1.2, Pi 4B (4GB).

Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com>
---
 Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c | 44 ++++++++++----------
 Platform/RaspberryPi/RPi3/RPi3.dsc                        |  9 +++-
 Platform/RaspberryPi/RPi3/RPi3.fdf                        | 36 ++++++++--------
 Platform/RaspberryPi/RPi4/RPi4.dsc                        |  7 ++--
 Platform/RaspberryPi/RPi4/RPi4.fdf                        |  8 ++++
 Platform/RaspberryPi/RaspberryPi.dec                      |  6 ++-
 6 files changed, 63 insertions(+), 47 deletions(-)

diff --git a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
index dec8e09d..aae189ec 100644
--- a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
+++ b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
@@ -94,29 +94,27 @@ ArmPlatformGetVirtualMemoryMap (
   VirtualMemoryInfo[Index].Type             = RPI_MEM_RUNTIME_REGION;
   VirtualMemoryInfo[Index++].Name           = L"FD Variables";
 
-  if (BCM2711_SOC_REGISTERS != 0) {
-     //
-     // Only the Pi 4 firmware today expects the DTB to directly follow the
-     // FD instead of overlapping the FD.
-     //
-     VirtualMemoryTable[Index].PhysicalBase    = FixedPcdGet32 (PcdFdtBaseAddress);
-     VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
-     VirtualMemoryTable[Index].Length          = FixedPcdGet32 (PcdFdtSize);;
-     VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
-     VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
-     VirtualMemoryInfo[Index++].Name           = L"Flattened Device Tree";
-  } else {
-     //
-     // TF-A reserved RAM only exists for the Pi 3 TF-A.
-     //
-     // This is 2MB that directly follows the FD.
-     //
-     VirtualMemoryTable[Index].PhysicalBase    = (FixedPcdGet64(PcdFdBaseAddress) + FixedPcdGet32(PcdFdSize));
-     VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
-     VirtualMemoryTable[Index].Length          = FixedPcdGet64 (PcdSystemMemoryBase) - VirtualMemoryTable[Index].PhysicalBase;
-     VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
-     VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
-     VirtualMemoryInfo[Index++].Name           = L"TF-A RAM";
+  //
+  // Both the the Pi 4 and Pi 3 implementations expect the DTB to directly follow the FD.
+  //
+  VirtualMemoryTable[Index].PhysicalBase    = FixedPcdGet32 (PcdFdtBaseAddress);
+  VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
+  VirtualMemoryTable[Index].Length          = FixedPcdGet32 (PcdFdtSize);;
+  VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
+  VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
+  VirtualMemoryInfo[Index++].Name           = L"Flattened Device Tree";
+  if (BCM2711_SOC_REGISTERS == 0) {
+    //
+    // TF-A reserved RAM only exists for the Pi 3 TF-A.
+    //
+    // This is 2MB that directly follows the FD.
+    //
+    VirtualMemoryTable[Index].PhysicalBase    = (FixedPcdGet64(PcdFdBaseAddress) + FixedPcdGet32(PcdFdSize));
+    VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
+    VirtualMemoryTable[Index].Length          = FixedPcdGet64 (PcdSystemMemoryBase) - VirtualMemoryTable[Index].PhysicalBase;
+    VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
+    VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
+    VirtualMemoryInfo[Index++].Name           = L"TF-A RAM";
   }
 
   // Base System RAM
diff --git a/Platform/RaspberryPi/RPi3/RPi3.dsc b/Platform/RaspberryPi/RPi3/RPi3.dsc
index d4a3d49d..563fb891 100644
--- a/Platform/RaspberryPi/RPi3/RPi3.dsc
+++ b/Platform/RaspberryPi/RPi3/RPi3.dsc
@@ -387,8 +387,13 @@
   # Size of the region used by UEFI in permanent memory (Reserved 64MB)
   gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
   #
-  # This matches PcdFvBaseAddress, since everything less is ATF, and
-  # will be reserved away.
+  # 0x00000000 - 0x001F0000  FD (PcdFdBaseAddress, PcdFdSize)
+  # 0x001F0000 - 0x00200000 DTB (PcdFdtBaseAddress, PcdFdtSize)
+  # 0x00200000 - 0x00400000 TFA (BL2 / BL31 / BL32 "secure SRAM")
+  # 0x00400000 - ...        RAM (PcdSystemMemoryBase, PcdSystemMemorySize)
+  #
+  # This matches PcdFvBaseAddress, since everything less is FD + TF-A RAM,
+  # thus will be reserved away.
   #
   gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00400000
   gArmTokenSpaceGuid.PcdSystemMemorySize|0x3FC00000
diff --git a/Platform/RaspberryPi/RPi3/RPi3.fdf b/Platform/RaspberryPi/RPi3/RPi3.fdf
index d334d3be..daedc443 100644
--- a/Platform/RaspberryPi/RPi3/RPi3.fdf
+++ b/Platform/RaspberryPi/RPi3/RPi3.fdf
@@ -25,11 +25,11 @@
 
 [FD.RPI_EFI]
 BaseAddress   = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress
-Size          = 0x00200000|gArmTokenSpaceGuid.PcdFdSize
+Size          = 0x001f0000|gArmTokenSpaceGuid.PcdFdSize
 ErasePolarity = 1
 
 BlockSize     = 0x00001000|gRaspberryPiTokenSpaceGuid.PcdFirmwareBlockSize
-NumBlocks     = 0x200
+NumBlocks     = 0x1f0
 
 ################################################################################
 #
@@ -53,12 +53,6 @@ NumBlocks     = 0x200
 0x00000000|0x00010000
 FILE = $(TFA_BUILD_BL1)
 
-#
-# DTB.
-#
-0x00010000|0x00010000
-DATA = { 0x00 }
-
 #
 # ATF secondary boot image in FIP format (BL2 + BL31)
 #
@@ -68,21 +62,21 @@ FILE = $(TFA_BUILD_FIP)
 #
 # UEFI image
 #
-0x00030000|0x001b0000
+0x00030000|0x001a0000
 gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
 FV = FVMAIN_COMPACT
 
 #
 # Variables (0x20000 overall).
 #
-# 0x001e0000 - 0x001edfff EFI_FIRMWARE_VOLUME_HEADER
-# 0x001ee000 - 0x001eefff Event log
-# 0x001ef000 - 0x001effff EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER-
-# 0x001f0000 - 0x001fffff Data
+# 0x001d0000 - 0x001ddfff EFI_FIRMWARE_VOLUME_HEADER
+# 0x001de000 - 0x001defff Event log
+# 0x001df000 - 0x001dffff EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER-
+# 0x001e0000 - 0x001effff Data
 #
 
 # NV_VARIABLE_STORE
-0x001e0000|0x0000e000
+0x001d0000|0x0000e000
 gRaspberryPiTokenSpaceGuid.PcdNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
 
 DATA = {
@@ -125,11 +119,11 @@ DATA = {
 }
 
 # NV_EVENT_LOG
-0x001ee000|0x00001000
+0x001de000|0x00001000
 gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogBase|gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogSize
 
 # NV_FTW_WORKING header
-0x001ef000|0x00001000
+0x001df000|0x00001000
 gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
 
 DATA = {
@@ -144,9 +138,17 @@ DATA = {
 }
 
 # NV_FTW_WORKING data
-0x001f0000|0x00010000
+0x001e0000|0x00010000
 gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
 
+#
+# This is just for documentation purposes! The DTB reserved space is not part of the FD,
+# but this is exactly where it is expected to be.
+#
+# 0x001f0000|0x10000
+# gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|gRaspberryPiTokenSpaceGuid.PcdFdtSize
+#
+
 ################################################################################
 #
 # FV Section
diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc b/Platform/RaspberryPi/RPi4/RPi4.dsc
index c401533a..4deccd9d 100644
--- a/Platform/RaspberryPi/RPi4/RPi4.dsc
+++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
@@ -275,10 +275,6 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|1
   gEfiMdePkgTokenSpaceGuid.PcdPostCodePropertyMask|0
   gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|320
-  #
-  # Follows right after the FD image.
-  #
-  gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|0x001f0000
 
   # DEBUG_ASSERT_ENABLED       0x01
   # DEBUG_PRINT_ENABLED        0x02
@@ -398,6 +394,9 @@
   # 0x001F0000 - 0x00200000 DTB (PcdFdtBaseAddress, PcdFdtSize)
   # 0x00200000 - ...        RAM (PcdSystemMemoryBase, PcdSystemMemorySize)
   #
+  # This matches PcdFvBaseAddress, since everything less is the FD, and
+  # will be reserved away.
+  #
   gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00200000
   gArmTokenSpaceGuid.PcdSystemMemorySize|0x3fe00000
 
diff --git a/Platform/RaspberryPi/RPi4/RPi4.fdf b/Platform/RaspberryPi/RPi4/RPi4.fdf
index b2164363..c3e9cfc4 100644
--- a/Platform/RaspberryPi/RPi4/RPi4.fdf
+++ b/Platform/RaspberryPi/RPi4/RPi4.fdf
@@ -135,6 +135,14 @@ DATA = {
 0x001e0000|0x00010000
 gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
 
+#
+# This is just for documentation purposes! The DTB reserved space is not part of the FD,
+# but this is exactly where it is expected to be.
+#
+# 0x001f0000|0x10000
+# gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|gRaspberryPiTokenSpaceGuid.PcdFdtSize
+#
+
 ################################################################################
 #
 # FV Section
diff --git a/Platform/RaspberryPi/RaspberryPi.dec b/Platform/RaspberryPi/RaspberryPi.dec
index d59b5481..b66322be 100644
--- a/Platform/RaspberryPi/RaspberryPi.dec
+++ b/Platform/RaspberryPi/RaspberryPi.dec
@@ -35,7 +35,11 @@
   gRaspberryPiDefaultFdtGuid = {0xDF5DA223, 0x1D27, 0x47C3, { 0x8D, 0x1B, 0x9A, 0x41, 0xB5, 0x5A, 0x18, 0xBC}}
 
 [PcdsFixedAtBuild.common]
-  gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|0x10000|UINT32|0x00000001
+  #
+  # Space reserved for config.txt-specced DTB follows right after the FD image
+  # in both RPi3 and RP4 implementations.
+  #
+  gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|0x001f0000|UINT32|0x00000001
   gRaspberryPiTokenSpaceGuid.PcdFirmwareBlockSize|0x0|UINT32|0x00000002
   gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogBase|0x0|UINT32|0x00000003
   gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogSize|0x0|UINT32|0x00000004
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [edk2-platforms][PATCH 2/2] RPi: update Pi3 and Pi4 readmes with correct info on FDT handling
  2020-04-30 19:18 [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3 Andrei Warkentin
  2020-04-30 19:19 ` [edk2-platforms][PATCH 1/2] RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4 implementation Andrei Warkentin
@ 2020-04-30 19:19 ` Andrei Warkentin
  2020-05-01  9:43   ` Pete Batard
  2020-05-01 10:30 ` [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3 Ard Biesheuvel
  2 siblings, 1 reply; 6+ messages in thread
From: Andrei Warkentin @ 2020-04-30 19:19 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

Now that Pi 3 FDT handling is fixed, let's update the docs. Furthermore,
let's simplify - be proscriptive about the minimal supported
config.txt configuration. Also, fix some factual mistakes:
- device_tree= override is not mandatory when device_tree_address= is used.
  Not using it means start.elf can chose the right one for the variant.
- device_tree= override is not mandatory for dtoverlay use.

Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com>
---
 Platform/RaspberryPi/RPi3/Readme.md | 38 +++++++++++++-------
 Platform/RaspberryPi/RPi4/Readme.md | 24 +++++++------
 2 files changed, 39 insertions(+), 23 deletions(-)

diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
index f5d25b50..f19d59d8 100644
--- a/Platform/RaspberryPi/RPi3/Readme.md
+++ b/Platform/RaspberryPi/RPi3/Readme.md
@@ -56,23 +56,30 @@ Build instructions from the top level edk2-platforms Readme.md apply.
 1. Format a uSD card as FAT32
 2. Copy the generated `RPI_EFI.fd` firmware onto the partition
 3. Download and copy the following files from https://github.com/raspberrypi/firmware/tree/master/boot
+  - `bcm2710-rpi-3-b.dtb` (for Pi 3B)
+  - `bcm2710-rpi-3-b-plus.dtb (for Pi 3B+)
+  - `bcm2710-rpi-2-b.dtb` (for Pi 2B v1.2)
+  - `bcm2710-rpi-cm3.dtb` (for Pi CM3)
   - `bootcode.bin`
   - `fixup.dat`
   - `start.elf`
+  - `overlays/miniuart-bt.dtbo` or `overlays/disable-bt.dtbo` (Optional)
 4. Create a `config.txt` with the following content:
   ```
   arm_control=0x200
   enable_uart=1
   armstub=RPI_EFI.fd
-  disable_commandline_tags=1
+  disable_commandline_tags=2
+  device_tree_address=0x1f0000
+  device_tree_end=0x200000
   ```
-  Additionally, if you want to use PL011 instead of the miniUART, you can add the lines:
+  If you want to use PL011 instead of the miniUART on your Pi 3B/3B+, you can add the lines:
   ```
-  device_tree_address=0x10000
-  device_tree_end=0x20000
-  device_tree=bcm2710-rpi-3-b[-plus].dtb
   dtoverlay=miniuart-bt
   ```
+  Note: doing so requires `miniuart-bt.dbto` to have been copied into an `overlays/`
+  directory on the uSD card. Alternatively, you may use `disable-bt` instead of
+ `miniuart-bt` if you don't require Bluetooth.
 5. Insert the uSD card and power up the Pi.
 
 Note that if you have a model 3+ or a model 3 where you enabled USB boot through OTP
@@ -92,21 +99,26 @@ in the `TrustedFirmware/` directory from `edk2-non-osi`.
 
 ## Custom Device Tree
 
-The default Device Tree included in the firmware is the one for a Raspberry Pi 3 Model B (not B+).
-If you want to use a different Device Tree, to boot a Pi 3 Model B+ for instance (for which a
-DTB is also provided under `DeviceTree/`), you should copy the relevant `.dtb` into the root of
+By default, UEFI will use the device tree loaded by the VideoCore firmware. This
+depends on the model/variant, and relies on the presence on specific files on your boot media.
+E.g.:
+ - `bcm2710-rpi-3-b.dtb` (for Pi 3B)
+ - `bcm2710-rpi-3-b-plus.dtb (for Pi 3B+)
+ - `bcm2710-rpi-2-b.dtb` (for Pi 2B v1.2)
+ - `bcm2710-rpi-cm3.dtb` (for Pi CM3)
+
+You can override the DTB and provide a custom one. Copy the relevant `.dtb` into the root of
 the SD or USB, and then edit your `config.txt` so that it looks like:
 
 ```
 (...)
 disable_commandline_tags=2
-device_tree_address=0x10000
-device_tree_end=0x20000
-device_tree=bcm2710-rpi-3-b-plus.dtb
+device_tree_address=0x1f0000
+device_tree_end=0x200000
+device_tree=your_fdt_file.dtb
 ```
 
-Note: the address range **must** be `[0x10000:0x20000]`.
-`dtoverlay` and `dtparam` parameters are also supported **when** providing a Device Tree`.
+Note: the address range **must** be `[0x1f0000:0x200000]`. `dtoverlay` and `dtparam` parameters are also supported.
 
 ## Custom `bootargs`
 
diff --git a/Platform/RaspberryPi/RPi4/Readme.md b/Platform/RaspberryPi/RPi4/Readme.md
index 17d02e9e..62a63c4c 100644
--- a/Platform/RaspberryPi/RPi4/Readme.md
+++ b/Platform/RaspberryPi/RPi4/Readme.md
@@ -54,18 +54,17 @@ Build instructions from the top level edk2-platforms Readme.md apply.
     enable_uart=1
     enable_gic=1
     armstub=RPI_EFI.fd
-    disable_commandline_tags=1
+    disable_commandline_tags=2
+    device_tree_address=0x1f0000
+    device_tree_end=0x200000
     ```
     Additionally, if you want to use PL011 instead of the miniUART, you can add the lines:
     ```
-    device_tree_address=0x1f0000
-    device_tree_end=0x200000
-    device_tree=bcm2711-rpi-4-b.dtb
     dtoverlay=miniuart-bt
     ```
-    Note that doing so requires `miniuart-bt.dbto` to have been copied into an `overlays/`
+    Note: doing so requires `miniuart-bt.dbto` to have been copied into an `overlays/`
     directory on the uSD card. Alternatively, you may use `disable-bt` instead of
-    `miniuart-bt` if you don't require BlueTooth.
+    `miniuart-bt` if you don't require Bluetooth.
 5. Insert the uSD card and power up the Pi.
 
 # Notes
@@ -81,18 +80,23 @@ in the `TrustedFirmware/` directory from `edk2-non-osi`.
 
 ## Device Tree
 
-You can pass a custom Device Tree and overlays using the following:
+By default, UEFI will use the device tree loaded by the VideoCore firmware. This
+depends on the model/variant, and relies on the presence on specific files on your boot media.
+E.g.:
+ - `bcm2711-rpi-4-b.dtb` (for Pi 4B)
+
+You can override the DTB and provide a custom one. Copy the relevant `.dtb` into the root of
+the SD or USB, and then edit your `config.txt` so that it looks like:
 
 ```
 (...)
 disable_commandline_tags=2
 device_tree_address=0x1f0000
 device_tree_end=0x200000
-device_tree=bcm2711-rpi-4-b.dtb
+device_tree=your_fdt_file.dtb
 ```
 
-Note: the address range **must** be `[0x1f0000:0x200000]`.
-`dtoverlay` and `dtparam` parameters are also supported **when** providing a Device Tree`.
+Note: the address range **must** be `[0x1f0000:0x200000]`. `dtoverlay` and `dtparam` parameters are also supported.
 
 ## Custom `bootargs`
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [edk2-platforms][PATCH 1/2] RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4 implementation
  2020-04-30 19:19 ` [edk2-platforms][PATCH 1/2] RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4 implementation Andrei Warkentin
@ 2020-05-01  9:35   ` Pete Batard
  0 siblings, 0 replies; 6+ messages in thread
From: Pete Batard @ 2020-05-01  9:35 UTC (permalink / raw)
  To: Andrei Warkentin, devel; +Cc: ard.biesheuvel, leif, philmd

On 2020.04.30 20:19, Andrei Warkentin wrote:
> A rev-up of start.elf VPU firmware meant that the previous scheme of
> loading the DTB over top of RPI_EFI.FD no longer works - the DT is now
> loaded way before the armstub, so any overlap means the DT is overridden.
> 
> This change re-arranges a few items in the FD, allowing the DTB to loaded
> directly after the FD in physical memory.
> 
> Unlike the Pi 4 implementation, we can't move the UEFI image down in memory,
> as that needs a TF-A changem so it just reduces the size by 0x10000. The
> same base address (0x1f0000) is used as on the Pi 4.
> 
> The Pi 3 FDF can be further unified with Pi 4 after work on TF-A to move
> to a single BL32-based Pi 3 TF-A implementation.
> 
> Tested: Pi 3A+, Pi 2B v1.2, Pi 4B (4GB).
> 
> Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com>
> ---
>   Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c | 44 ++++++++++----------
>   Platform/RaspberryPi/RPi3/RPi3.dsc                        |  9 +++-
>   Platform/RaspberryPi/RPi3/RPi3.fdf                        | 36 ++++++++--------
>   Platform/RaspberryPi/RPi4/RPi4.dsc                        |  7 ++--
>   Platform/RaspberryPi/RPi4/RPi4.fdf                        |  8 ++++
>   Platform/RaspberryPi/RaspberryPi.dec                      |  6 ++-
>   6 files changed, 63 insertions(+), 47 deletions(-)
> 
> diff --git a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> index dec8e09d..aae189ec 100644
> --- a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> +++ b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> @@ -94,29 +94,27 @@ ArmPlatformGetVirtualMemoryMap (
>     VirtualMemoryInfo[Index].Type             = RPI_MEM_RUNTIME_REGION;
>     VirtualMemoryInfo[Index++].Name           = L"FD Variables";
>   
> -  if (BCM2711_SOC_REGISTERS != 0) {
> -     //
> -     // Only the Pi 4 firmware today expects the DTB to directly follow the
> -     // FD instead of overlapping the FD.
> -     //
> -     VirtualMemoryTable[Index].PhysicalBase    = FixedPcdGet32 (PcdFdtBaseAddress);
> -     VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
> -     VirtualMemoryTable[Index].Length          = FixedPcdGet32 (PcdFdtSize);;
> -     VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
> -     VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
> -     VirtualMemoryInfo[Index++].Name           = L"Flattened Device Tree";
> -  } else {
> -     //
> -     // TF-A reserved RAM only exists for the Pi 3 TF-A.
> -     //
> -     // This is 2MB that directly follows the FD.
> -     //
> -     VirtualMemoryTable[Index].PhysicalBase    = (FixedPcdGet64(PcdFdBaseAddress) + FixedPcdGet32(PcdFdSize));
> -     VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
> -     VirtualMemoryTable[Index].Length          = FixedPcdGet64 (PcdSystemMemoryBase) - VirtualMemoryTable[Index].PhysicalBase;
> -     VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
> -     VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
> -     VirtualMemoryInfo[Index++].Name           = L"TF-A RAM";
> +  //
> +  // Both the the Pi 4 and Pi 3 implementations expect the DTB to directly follow the FD.
> +  //
> +  VirtualMemoryTable[Index].PhysicalBase    = FixedPcdGet32 (PcdFdtBaseAddress);
> +  VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
> +  VirtualMemoryTable[Index].Length          = FixedPcdGet32 (PcdFdtSize);;
> +  VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
> +  VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
> +  VirtualMemoryInfo[Index++].Name           = L"Flattened Device Tree";
> +  if (BCM2711_SOC_REGISTERS == 0) {
> +    //
> +    // TF-A reserved RAM only exists for the Pi 3 TF-A.
> +    //
> +    // This is 2MB that directly follows the FD.
> +    //
> +    VirtualMemoryTable[Index].PhysicalBase    = (FixedPcdGet64(PcdFdBaseAddress) + FixedPcdGet32(PcdFdSize));
> +    VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
> +    VirtualMemoryTable[Index].Length          = FixedPcdGet64 (PcdSystemMemoryBase) - VirtualMemoryTable[Index].PhysicalBase;
> +    VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
> +    VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
> +    VirtualMemoryInfo[Index++].Name           = L"TF-A RAM";
>     }
>   
>     // Base System RAM
> diff --git a/Platform/RaspberryPi/RPi3/RPi3.dsc b/Platform/RaspberryPi/RPi3/RPi3.dsc
> index d4a3d49d..563fb891 100644
> --- a/Platform/RaspberryPi/RPi3/RPi3.dsc
> +++ b/Platform/RaspberryPi/RPi3/RPi3.dsc
> @@ -387,8 +387,13 @@
>     # Size of the region used by UEFI in permanent memory (Reserved 64MB)
>     gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
>     #
> -  # This matches PcdFvBaseAddress, since everything less is ATF, and
> -  # will be reserved away.
> +  # 0x00000000 - 0x001F0000  FD (PcdFdBaseAddress, PcdFdSize)
> +  # 0x001F0000 - 0x00200000 DTB (PcdFdtBaseAddress, PcdFdtSize)
> +  # 0x00200000 - 0x00400000 TFA (BL2 / BL31 / BL32 "secure SRAM")
> +  # 0x00400000 - ...        RAM (PcdSystemMemoryBase, PcdSystemMemorySize)
> +  #
> +  # This matches PcdFvBaseAddress, since everything less is FD + TF-A RAM,
> +  # thus will be reserved away.
>     #
>     gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00400000
>     gArmTokenSpaceGuid.PcdSystemMemorySize|0x3FC00000
> diff --git a/Platform/RaspberryPi/RPi3/RPi3.fdf b/Platform/RaspberryPi/RPi3/RPi3.fdf
> index d334d3be..daedc443 100644
> --- a/Platform/RaspberryPi/RPi3/RPi3.fdf
> +++ b/Platform/RaspberryPi/RPi3/RPi3.fdf
> @@ -25,11 +25,11 @@
>   
>   [FD.RPI_EFI]
>   BaseAddress   = 0x00000000|gArmTokenSpaceGuid.PcdFdBaseAddress
> -Size          = 0x00200000|gArmTokenSpaceGuid.PcdFdSize
> +Size          = 0x001f0000|gArmTokenSpaceGuid.PcdFdSize
>   ErasePolarity = 1
>   
>   BlockSize     = 0x00001000|gRaspberryPiTokenSpaceGuid.PcdFirmwareBlockSize
> -NumBlocks     = 0x200
> +NumBlocks     = 0x1f0
>   
>   ################################################################################
>   #
> @@ -53,12 +53,6 @@ NumBlocks     = 0x200
>   0x00000000|0x00010000
>   FILE = $(TFA_BUILD_BL1)
>   
> -#
> -# DTB.
> -#
> -0x00010000|0x00010000
> -DATA = { 0x00 }
> -
>   #
>   # ATF secondary boot image in FIP format (BL2 + BL31)
>   #
> @@ -68,21 +62,21 @@ FILE = $(TFA_BUILD_FIP)
>   #
>   # UEFI image
>   #
> -0x00030000|0x001b0000
> +0x00030000|0x001a0000
>   gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
>   FV = FVMAIN_COMPACT
>   
>   #
>   # Variables (0x20000 overall).
>   #
> -# 0x001e0000 - 0x001edfff EFI_FIRMWARE_VOLUME_HEADER
> -# 0x001ee000 - 0x001eefff Event log
> -# 0x001ef000 - 0x001effff EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER-
> -# 0x001f0000 - 0x001fffff Data
> +# 0x001d0000 - 0x001ddfff EFI_FIRMWARE_VOLUME_HEADER
> +# 0x001de000 - 0x001defff Event log
> +# 0x001df000 - 0x001dffff EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER-
> +# 0x001e0000 - 0x001effff Data
>   #
>   
>   # NV_VARIABLE_STORE
> -0x001e0000|0x0000e000
> +0x001d0000|0x0000e000
>   gRaspberryPiTokenSpaceGuid.PcdNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
>   
>   DATA = {
> @@ -125,11 +119,11 @@ DATA = {
>   }
>   
>   # NV_EVENT_LOG
> -0x001ee000|0x00001000
> +0x001de000|0x00001000
>   gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogBase|gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogSize
>   
>   # NV_FTW_WORKING header
> -0x001ef000|0x00001000
> +0x001df000|0x00001000
>   gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
>   
>   DATA = {
> @@ -144,9 +138,17 @@ DATA = {
>   }
>   
>   # NV_FTW_WORKING data
> -0x001f0000|0x00010000
> +0x001e0000|0x00010000
>   gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
>   
> +#
> +# This is just for documentation purposes! The DTB reserved space is not part of the FD,
> +# but this is exactly where it is expected to be.
> +#
> +# 0x001f0000|0x10000
> +# gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|gRaspberryPiTokenSpaceGuid.PcdFdtSize
> +#
> +
>   ################################################################################
>   #
>   # FV Section
> diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc b/Platform/RaspberryPi/RPi4/RPi4.dsc
> index c401533a..4deccd9d 100644
> --- a/Platform/RaspberryPi/RPi4/RPi4.dsc
> +++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
> @@ -275,10 +275,6 @@
>     gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|1
>     gEfiMdePkgTokenSpaceGuid.PcdPostCodePropertyMask|0
>     gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|320
> -  #
> -  # Follows right after the FD image.
> -  #
> -  gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|0x001f0000
>   
>     # DEBUG_ASSERT_ENABLED       0x01
>     # DEBUG_PRINT_ENABLED        0x02
> @@ -398,6 +394,9 @@
>     # 0x001F0000 - 0x00200000 DTB (PcdFdtBaseAddress, PcdFdtSize)
>     # 0x00200000 - ...        RAM (PcdSystemMemoryBase, PcdSystemMemorySize)
>     #
> +  # This matches PcdFvBaseAddress, since everything less is the FD, and
> +  # will be reserved away.
> +  #
>     gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00200000
>     gArmTokenSpaceGuid.PcdSystemMemorySize|0x3fe00000
>   
> diff --git a/Platform/RaspberryPi/RPi4/RPi4.fdf b/Platform/RaspberryPi/RPi4/RPi4.fdf
> index b2164363..c3e9cfc4 100644
> --- a/Platform/RaspberryPi/RPi4/RPi4.fdf
> +++ b/Platform/RaspberryPi/RPi4/RPi4.fdf
> @@ -135,6 +135,14 @@ DATA = {
>   0x001e0000|0x00010000
>   gRaspberryPiTokenSpaceGuid.PcdNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
>   
> +#
> +# This is just for documentation purposes! The DTB reserved space is not part of the FD,
> +# but this is exactly where it is expected to be.
> +#
> +# 0x001f0000|0x10000
> +# gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|gRaspberryPiTokenSpaceGuid.PcdFdtSize
> +#
> +
>   ################################################################################
>   #
>   # FV Section
> diff --git a/Platform/RaspberryPi/RaspberryPi.dec b/Platform/RaspberryPi/RaspberryPi.dec
> index d59b5481..b66322be 100644
> --- a/Platform/RaspberryPi/RaspberryPi.dec
> +++ b/Platform/RaspberryPi/RaspberryPi.dec
> @@ -35,7 +35,11 @@
>     gRaspberryPiDefaultFdtGuid = {0xDF5DA223, 0x1D27, 0x47C3, { 0x8D, 0x1B, 0x9A, 0x41, 0xB5, 0x5A, 0x18, 0xBC}}
>   
>   [PcdsFixedAtBuild.common]
> -  gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|0x10000|UINT32|0x00000001
> +  #
> +  # Space reserved for config.txt-specced DTB follows right after the FD image
> +  # in both RPi3 and RP4 implementations.
> +  #
> +  gRaspberryPiTokenSpaceGuid.PcdFdtBaseAddress|0x001f0000|UINT32|0x00000001
>     gRaspberryPiTokenSpaceGuid.PcdFirmwareBlockSize|0x0|UINT32|0x00000002
>     gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogBase|0x0|UINT32|0x00000003
>     gRaspberryPiTokenSpaceGuid.PcdNvStorageEventLogSize|0x0|UINT32|0x00000004
> 

Reviewed-by: Pete Batard <pete@akeo.ie>
Tested-on: Pi 3B, Pi 3B+

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-platforms][PATCH 2/2] RPi: update Pi3 and Pi4 readmes with correct info on FDT handling
  2020-04-30 19:19 ` [edk2-platforms][PATCH 2/2] RPi: update Pi3 and Pi4 readmes with correct info on FDT handling Andrei Warkentin
@ 2020-05-01  9:43   ` Pete Batard
  0 siblings, 0 replies; 6+ messages in thread
From: Pete Batard @ 2020-05-01  9:43 UTC (permalink / raw)
  To: Andrei Warkentin, devel; +Cc: ard.biesheuvel, leif, philmd

On 2020.04.30 20:19, Andrei Warkentin wrote:
> Now that Pi 3 FDT handling is fixed, let's update the docs. Furthermore,
> let's simplify - be proscriptive about the minimal supported
> config.txt configuration. Also, fix some factual mistakes:
> - device_tree= override is not mandatory when device_tree_address= is used.
>    Not using it means start.elf can chose the right one for the variant.
> - device_tree= override is not mandatory for dtoverlay use.
> 
> Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com>
> ---
>   Platform/RaspberryPi/RPi3/Readme.md | 38 +++++++++++++-------
>   Platform/RaspberryPi/RPi4/Readme.md | 24 +++++++------
>   2 files changed, 39 insertions(+), 23 deletions(-)
> 
> diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
> index f5d25b50..f19d59d8 100644
> --- a/Platform/RaspberryPi/RPi3/Readme.md
> +++ b/Platform/RaspberryPi/RPi3/Readme.md
> @@ -56,23 +56,30 @@ Build instructions from the top level edk2-platforms Readme.md apply.
>   1. Format a uSD card as FAT32
>   2. Copy the generated `RPI_EFI.fd` firmware onto the partition
>   3. Download and copy the following files from https://github.com/raspberrypi/firmware/tree/master/boot
> +  - `bcm2710-rpi-3-b.dtb` (for Pi 3B)
> +  - `bcm2710-rpi-3-b-plus.dtb (for Pi 3B+)

Missing closing ` after .dtb.

Rather than re-send a new patch, could the maintainer please add it when 
committing?

> +  - `bcm2710-rpi-2-b.dtb` (for Pi 2B v1.2)
> +  - `bcm2710-rpi-cm3.dtb` (for Pi CM3)
>     - `bootcode.bin`
>     - `fixup.dat`
>     - `start.elf`
> +  - `overlays/miniuart-bt.dtbo` or `overlays/disable-bt.dtbo` (Optional)
>   4. Create a `config.txt` with the following content:
>     ```
>     arm_control=0x200
>     enable_uart=1
>     armstub=RPI_EFI.fd
> -  disable_commandline_tags=1
> +  disable_commandline_tags=2
> +  device_tree_address=0x1f0000
> +  device_tree_end=0x200000
>     ```
> -  Additionally, if you want to use PL011 instead of the miniUART, you can add the lines:
> +  If you want to use PL011 instead of the miniUART on your Pi 3B/3B+, you can add the lines:
>     ```
> -  device_tree_address=0x10000
> -  device_tree_end=0x20000
> -  device_tree=bcm2710-rpi-3-b[-plus].dtb
>     dtoverlay=miniuart-bt
>     ```
> +  Note: doing so requires `miniuart-bt.dbto` to have been copied into an `overlays/`
> +  directory on the uSD card. Alternatively, you may use `disable-bt` instead of
> + `miniuart-bt` if you don't require Bluetooth.
>   5. Insert the uSD card and power up the Pi.
>   
>   Note that if you have a model 3+ or a model 3 where you enabled USB boot through OTP
> @@ -92,21 +99,26 @@ in the `TrustedFirmware/` directory from `edk2-non-osi`.
>   
>   ## Custom Device Tree
>   
> -The default Device Tree included in the firmware is the one for a Raspberry Pi 3 Model B (not B+).
> -If you want to use a different Device Tree, to boot a Pi 3 Model B+ for instance (for which a
> -DTB is also provided under `DeviceTree/`), you should copy the relevant `.dtb` into the root of
> +By default, UEFI will use the device tree loaded by the VideoCore firmware. This
> +depends on the model/variant, and relies on the presence on specific files on your boot media.
> +E.g.:
> + - `bcm2710-rpi-3-b.dtb` (for Pi 3B)
> + - `bcm2710-rpi-3-b-plus.dtb (for Pi 3B+)

Same as above (Missing closing ` after .dtb).

> + - `bcm2710-rpi-2-b.dtb` (for Pi 2B v1.2)
> + - `bcm2710-rpi-cm3.dtb` (for Pi CM3)
> +
> +You can override the DTB and provide a custom one. Copy the relevant `.dtb` into the root of
>   the SD or USB, and then edit your `config.txt` so that it looks like:
>   
>   ```
>   (...)
>   disable_commandline_tags=2
> -device_tree_address=0x10000
> -device_tree_end=0x20000
> -device_tree=bcm2710-rpi-3-b-plus.dtb
> +device_tree_address=0x1f0000
> +device_tree_end=0x200000
> +device_tree=your_fdt_file.dtb
>   ```
>   
> -Note: the address range **must** be `[0x10000:0x20000]`.
> -`dtoverlay` and `dtparam` parameters are also supported **when** providing a Device Tree`.
> +Note: the address range **must** be `[0x1f0000:0x200000]`. `dtoverlay` and `dtparam` parameters are also supported.
>   
>   ## Custom `bootargs`
>   
> diff --git a/Platform/RaspberryPi/RPi4/Readme.md b/Platform/RaspberryPi/RPi4/Readme.md
> index 17d02e9e..62a63c4c 100644
> --- a/Platform/RaspberryPi/RPi4/Readme.md
> +++ b/Platform/RaspberryPi/RPi4/Readme.md
> @@ -54,18 +54,17 @@ Build instructions from the top level edk2-platforms Readme.md apply.
>       enable_uart=1
>       enable_gic=1
>       armstub=RPI_EFI.fd
> -    disable_commandline_tags=1
> +    disable_commandline_tags=2
> +    device_tree_address=0x1f0000
> +    device_tree_end=0x200000
>       ```
>       Additionally, if you want to use PL011 instead of the miniUART, you can add the lines:
>       ```
> -    device_tree_address=0x1f0000
> -    device_tree_end=0x200000
> -    device_tree=bcm2711-rpi-4-b.dtb
>       dtoverlay=miniuart-bt
>       ```
> -    Note that doing so requires `miniuart-bt.dbto` to have been copied into an `overlays/`
> +    Note: doing so requires `miniuart-bt.dbto` to have been copied into an `overlays/`
>       directory on the uSD card. Alternatively, you may use `disable-bt` instead of
> -    `miniuart-bt` if you don't require BlueTooth.
> +    `miniuart-bt` if you don't require Bluetooth.
>   5. Insert the uSD card and power up the Pi.
>   
>   # Notes
> @@ -81,18 +80,23 @@ in the `TrustedFirmware/` directory from `edk2-non-osi`.
>   
>   ## Device Tree
>   
> -You can pass a custom Device Tree and overlays using the following:
> +By default, UEFI will use the device tree loaded by the VideoCore firmware. This
> +depends on the model/variant, and relies on the presence on specific files on your boot media.
> +E.g.:
> + - `bcm2711-rpi-4-b.dtb` (for Pi 4B)
> +
> +You can override the DTB and provide a custom one. Copy the relevant `.dtb` into the root of
> +the SD or USB, and then edit your `config.txt` so that it looks like:
>   
>   ```
>   (...)
>   disable_commandline_tags=2
>   device_tree_address=0x1f0000
>   device_tree_end=0x200000
> -device_tree=bcm2711-rpi-4-b.dtb
> +device_tree=your_fdt_file.dtb
>   ```
>   
> -Note: the address range **must** be `[0x1f0000:0x200000]`.
> -`dtoverlay` and `dtparam` parameters are also supported **when** providing a Device Tree`.
> +Note: the address range **must** be `[0x1f0000:0x200000]`. `dtoverlay` and `dtparam` parameters are also supported.
>   
>   ## Custom `bootargs`
>   
> 

With the above 2 typos fixed,
Reviewed-by: Pete Batard <pete@akeo.ie>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3
  2020-04-30 19:18 [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3 Andrei Warkentin
  2020-04-30 19:19 ` [edk2-platforms][PATCH 1/2] RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4 implementation Andrei Warkentin
  2020-04-30 19:19 ` [edk2-platforms][PATCH 2/2] RPi: update Pi3 and Pi4 readmes with correct info on FDT handling Andrei Warkentin
@ 2020-05-01 10:30 ` Ard Biesheuvel
  2 siblings, 0 replies; 6+ messages in thread
From: Ard Biesheuvel @ 2020-05-01 10:30 UTC (permalink / raw)
  To: Andrei Warkentin, devel; +Cc: leif, pete, philmd

On 4/30/20 9:18 PM, Andrei Warkentin wrote:
> Dear all,
> 
> This patch set finishes what I started with the Pi 4 fix for
> the regression seen with newer VideoCore firmware, where a
> device tree passed via config.txt would not be detected by UEFI.
> 
> This makes VPU-passed FDT work again on Pi 3 variants. This also
> cleans up the docs around correctly using FDT, hopefully solving
> some of the frustrations seem around using this correctly.
> 
> Andrei Warkentin (2):
>    RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4
>      implementation
>    RPi: update Pi3 and Pi4 readmes with correct info on FDT handling
> 

Pushed as 40f2f135eb7c..defef0562115 (with the typos fixed)

Thanks!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-05-01 10:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-30 19:18 [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3 Andrei Warkentin
2020-04-30 19:19 ` [edk2-platforms][PATCH 1/2] RPi3/RPi4: fix RPi 3 VPU-passed FDT handling by unifying with RPi4 implementation Andrei Warkentin
2020-05-01  9:35   ` Pete Batard
2020-04-30 19:19 ` [edk2-platforms][PATCH 2/2] RPi: update Pi3 and Pi4 readmes with correct info on FDT handling Andrei Warkentin
2020-05-01  9:43   ` Pete Batard
2020-05-01 10:30 ` [edk2-platforms][PATCH 0/2] Fixing FDT handling on Pi 3 Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox