public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3
@ 2020-04-30  8:47 Andrei Warkentin
  2020-04-30  8:47 ` [edk2-platforms][PATCH 1/4] RPi3/RPi4: document 3A+ support Andrei Warkentin
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Andrei Warkentin @ 2020-04-30  8:47 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

Dear all,

This is a patch set which brings in Pi 2B (v1.2), Pi 3A+
and CM3 support. Most of this is documentation, and
where there was some overlap I touched up RPi4 readme as well.

Pi 2B v1.2 is actually a Pi 3 SoC tacked to a Pi 2 board.
We can treat it as a WiFi- and BT- less variant of the Pi 3,
that happens to run slower due to worse thermal design ff the Pi 2
board.

Pi 3A+ is the 512MB variant that dispensess with the USB/NIC hub.

CM3 is the eMMC-bearing compute module variant, thus there is
a MmcDxe fix to an MMC-only regression I introduced years ago. CM3L
will probably just work (since it relies on uSD), but I don't have
one to test with.

Andrei Warkentin (4):
  RPi3/RPi4: document 3A+ support.
  RPi3: add support for the v1.2 Pi 2B.
  RPi3: add support for Compute Module 3.
  RPi3/RPi4: touch up readme's a bit.

 .../RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c |  4 +-
 .../Drivers/ConfigDxe/ConfigDxeHii.uni        |  8 +--
 .../RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c   |  1 +
 Platform/RaspberryPi/RPi3/Readme.md           | 49 +++++++++++++------
 Platform/RaspberryPi/RPi4/Readme.md           | 35 +++++++++++--
 5 files changed, 72 insertions(+), 25 deletions(-)

-- 
2.17.1


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

* [edk2-platforms][PATCH 1/4] RPi3/RPi4: document 3A+ support.
  2020-04-30  8:47 [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Andrei Warkentin
@ 2020-04-30  8:47 ` Andrei Warkentin
  2020-04-30  8:47 ` [edk2-platforms][PATCH 2/4] RPi3: add support for the v1.2 Pi 2B Andrei Warkentin
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Andrei Warkentin @ 2020-04-30  8:47 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

The RPi3 target also supports the 3A+, so let's document it.

(The 3A+ lacks the ethernet port and has less RAM)

Clarify RPi3 is for BCM2837-based variants, while RPi4 is
for the BCM2711-based variants.

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

diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
index 05f498ee..d63d6767 100644
--- a/Platform/RaspberryPi/RPi3/Readme.md
+++ b/Platform/RaspberryPi/RPi3/Readme.md
@@ -1,19 +1,28 @@
-Raspberry Pi Platform
-=====================
+Raspberry Pi 3 Platform
+=======================
 
 # Summary
 
-This is a port of 64-bit Tiano Core UEFI firmware for the Raspberry Pi 3/3B+ platforms,
-based on [Ard Bisheuvel's 64-bit](http://www.workofard.com/2017/02/uefi-on-the-pi/)
+This is a port of 64-bit Tiano Core UEFI firmware for the Raspberry Pi 3B (and related)
+platforms, based on [Ard Bisheuvel's 64-bit](http://www.workofard.com/2017/02/uefi-on-the-pi/)
 and [Microsoft's 32-bit](https://github.com/ms-iot/RPi-UEFI/tree/ms-iot/Pi3BoardPkg)
 implementations, as maintained by [Andrei Warkentin](https://github.com/andreiw/RaspberryPiPkg).
 
-This is meant as a generally useful 64-bit ATF + UEFI implementation for the Raspberry
-Pi 3/3B+ which should be good enough for most kind of UEFI development, as well as for
-running consummer Operating Systems in such as Linux or Windows.
+This is meant as a generally useful 64-bit ATF + UEFI implementation for Raspberry Pi
+variants based on the BCM2837 SoC, which should be good enough for most kind of UEFI development,
+as well as for running consummer Operating Systems in such as Linux, Windows or the BSDs.
 
 Raspberry Pi is a trademark of the [Raspberry Pi Foundation](http://www.raspberrypi.org).
 
+# Hardware Supported
+
+The RPi3 target supports Pi revisions based on the BCM2837 SoC:
+- Raspberry Pi 3A+
+- Raspberry Pi 3B
+- Raspberry Pi 3B+
+
+Please see the RPi4 target for BCM2711-based variants, such as the Raspberry Pi 4B.
+
 # Status
 
 This firmware, that has been validated to compile against the current
diff --git a/Platform/RaspberryPi/RPi4/Readme.md b/Platform/RaspberryPi/RPi4/Readme.md
index fa9b3146..1f4ed001 100644
--- a/Platform/RaspberryPi/RPi4/Readme.md
+++ b/Platform/RaspberryPi/RPi4/Readme.md
@@ -3,14 +3,23 @@ Raspberry Pi 4 Platform
 
 # Summary
 
-This is a port of 64-bit Tiano Core UEFI firmware for the Raspberry Pi 4 platforms.
+This is a port of 64-bit Tiano Core UEFI firmware for the Raspberry Pi 4B platform.
 
 This is intended to be useful 64-bit [TF-A](https://www.trustedfirmware.org/) +
-UEFI implementation for the Raspberry Pi 4 which should be good enough for most
-kind of UEFI development, as well as for running consummer Operating Systems.
+UEFI implementation for the Raspberry Pi variants based on the BCM2711 SoC,
+which should be good enough for most kind of UEFI development, as well running consumer
+Operating Systems.
 
 Raspberry Pi is a trademark of the [Raspberry Pi Foundation](https://www.raspberrypi.org).
 
+# Hardware Supported
+
+The RPi4 target supports Pi revisions based on the BCM2711 SoC:
+- Raspberry Pi 4B
+
+Please see the RPi3 target for the BCM2837-based variants, such as the Raspberry
+Pi 3B.
+
 # Status
 
 This firmware is still in development stage, meaning that it comes with the
-- 
2.17.1


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

* [edk2-platforms][PATCH 2/4] RPi3: add support for the v1.2 Pi 2B.
  2020-04-30  8:47 [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Andrei Warkentin
  2020-04-30  8:47 ` [edk2-platforms][PATCH 1/4] RPi3/RPi4: document 3A+ support Andrei Warkentin
@ 2020-04-30  8:47 ` Andrei Warkentin
  2020-04-30  8:47 ` [edk2-platforms][PATCH 3/4] RPi3: add support for Compute Module 3 Andrei Warkentin
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Andrei Warkentin @ 2020-04-30  8:47 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

v1.2 (not older) actually uses the same BCM2837 SoC as
Pi 3, and is thus a 64-bit device that this firmware
easily supports as a minor variant of the Pi 3.

The difference from Pi 3 is choice of UART (PL011), no WiFi,
no BT and slower clock due to thermal problems caused by
older board design.

Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com>
---
 Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c | 4 ++--
 Platform/RaspberryPi/RPi3/Readme.md                | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
index 1091e680..c90c2530 100644
--- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
+++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
@@ -322,9 +322,9 @@ ApplyVariables (
     ASSERT_EFI_ERROR (Status);
   }
 
-  if (mModelFamily == 3) {
+  if (mModelFamily == 3 || mModelFamily == 2) {
     /*
-     * Pi 3: either Arasan or SdHost goes to SD card.
+     * Pi 2B v1.2 / Pi 3: either Arasan or SdHost goes to SD card.
      *
      * Switching two groups around, so disable both first.
      *
diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
index d63d6767..3484c92c 100644
--- a/Platform/RaspberryPi/RPi3/Readme.md
+++ b/Platform/RaspberryPi/RPi3/Readme.md
@@ -17,6 +17,7 @@ Raspberry Pi is a trademark of the [Raspberry Pi Foundation](http://www.raspberr
 # Hardware Supported
 
 The RPi3 target supports Pi revisions based on the BCM2837 SoC:
+- Raspberry Pi 2B v1.2 (older versions are *not* compatible)
 - Raspberry Pi 3A+
 - Raspberry Pi 3B
 - Raspberry Pi 3B+
-- 
2.17.1


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

* [edk2-platforms][PATCH 3/4] RPi3: add support for Compute Module 3.
  2020-04-30  8:47 [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Andrei Warkentin
  2020-04-30  8:47 ` [edk2-platforms][PATCH 1/4] RPi3/RPi4: document 3A+ support Andrei Warkentin
  2020-04-30  8:47 ` [edk2-platforms][PATCH 2/4] RPi3: add support for the v1.2 Pi 2B Andrei Warkentin
@ 2020-04-30  8:47 ` Andrei Warkentin
  2020-04-30  8:50   ` Ard Biesheuvel
  2020-04-30  8:47 ` [edk2-platforms][PATCH 4/4] RPi3/RPi4: touch up readme's a bit Andrei Warkentin
  2020-04-30  8:57 ` [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Ard Biesheuvel
  4 siblings, 1 reply; 7+ messages in thread
From: Andrei Warkentin @ 2020-04-30  8:47 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

Mostly strings and documentation, but also fixes a dumb bug
I introduced when I added SD block write validation back
in RaspberryPiPkg (which broke eMMC support, even though
I could have tested it with a discrete eMMC media on regular
Pies)

Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com>
---
 Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni |  8 ++++----
 Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c        |  1 +
 Platform/RaspberryPi/RPi3/Readme.md                     | 19 ++++++++++++-------
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
index 26d803f7..07660072 100644
--- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
+++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
@@ -53,8 +53,8 @@
 #string STR_MMC_FORM_TITLE       #language en-US "SD/MMC Configuration"
 #string STR_MMC_FORM_SUBTITLE    #language en-US "Note: UEFI only, OS may override settings."
 
-#string STR_MMC_SD_PROMPT        #language en-US "uSD Routing"
-#string STR_MMC_SD_HELP          #language en-US "Choose host controller to drive uSD slot"
+#string STR_MMC_SD_PROMPT        #language en-US "uSD/eMMC Routing"
+#string STR_MMC_SD_HELP          #language en-US "Choose host controller to drive local flash storage"
 #string STR_MMC_SD_EMMC2         #language en-US "eMMC2 SDHCI"
 #string STR_MMC_SD_SDHOST        #language en-US "Broadcom SDHOST"
 #string STR_MMC_SD_ARASAN        #language en-US "Arasan SDHCI"
@@ -65,12 +65,12 @@
 #string STR_MMC_DISMULTI_Y       #language en-US "Single-block transfers"
 
 #string STR_MMC_FORCE1BIT_PROMPT #language en-US "uSD Max Bus Width"
-#string STR_MMC_FORCE1BIT_HELP   #language en-US "Tweak for bad media"
+#string STR_MMC_FORCE1BIT_HELP   #language en-US "Tweak for bad media (N/A for eMMC)"
 #string STR_MMC_FORCE1BIT_Y      #language en-US "1 Bit Mode"
 #string STR_MMC_FORCE1BIT_N      #language en-US "4 Bit Mode"
 
 #string STR_MMC_FORCEDS_PROMPT   #language en-US "uSD Force Default Speed"
-#string STR_MMC_FORCEDS_HELP     #language en-US "Tweak for bad media"
+#string STR_MMC_FORCEDS_HELP     #language en-US "Tweak for bad media (N/A for eMMC)"
 #string STR_MMC_FORCEDS_Y        #language en-US "Force Default Speed"
 #string STR_MMC_FORCEDS_N        #language en-US "Allow High Speed"
 
diff --git a/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c b/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c
index 29a9fd7d..8a2f7f42 100644
--- a/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c
+++ b/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c
@@ -47,6 +47,7 @@ ValidateWrittenBlockCount (
     /*
      * Not on MMC.
      */
+    *TransferredBlocks = Count;
     return EFI_SUCCESS;
   }
 
diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
index 3484c92c..b756013b 100644
--- a/Platform/RaspberryPi/RPi3/Readme.md
+++ b/Platform/RaspberryPi/RPi3/Readme.md
@@ -21,6 +21,10 @@ The RPi3 target supports Pi revisions based on the BCM2837 SoC:
 - Raspberry Pi 3A+
 - Raspberry Pi 3B
 - Raspberry Pi 3B+
+- Raspberry Pi CM3
+
+Note: a CM3L, lacking eMMC and thus similar to the 3B, will probably work as well, but just
+has not been tested.
 
 Please see the RPi4 target for BCM2711-based variants, such as the Raspberry Pi 4B.
 
@@ -148,20 +152,21 @@ This should allow you to set whatever date/time you want using the Shell date an
 time commands. While in UEFI or HLOS, the time will tick forward.
 `RtcEpochSeconds` is not updated on reboots.
 
-## uSD
+## uSD (and eMMC for CM3)
 
-UEFI supports both the Arasan SDHCI and the Broadcom SDHost controllers to access the uSD slot.
-You can use either. The other controller gets routed to the SDIO card. The choice made will
+UEFI supports both the Arasan SDHCI and the Broadcom SDHost controllers to access the flash
+media (eMMC on CM3, and uSD slot on everything else). You can use either. The other controller
+gets routed to the SDIO WiFi card (N/A to models without WiFi). The choice made will
 impact ACPI OSes booted (e.g. Windows 10). Arasan, being an SDIO controller, is usually used
-with the WiFi adapter where available. SDHost cannot be used with SDIO. In UEFI setup screen:
+with the WiFi adapter (where available). SDHost cannot be used with SDIO. In UEFI setup screen:
 - go to `Device Manager`
 - go to `Raspberry Pi Configuration`
-- go to `Chipset`
-- configure `Boot uSD Routing`
+- go to `SD/MMC Configuration`
+- configure `uSD/eMMC Routing`
 
 Known issues:
 - Arasan HS/4bit support is missing.
-- No 8 bit mode support for (e)MMC (irrelevant for the Pi 3).
+- No 8 bit mode support for (e)MMC (slow UEFI file I/O on CM3).
 - Hacky (e)MMC support (no HS).
 - No card removal/replacement detection, tons of timeouts and slow down during boot without an uSD card present.
 
-- 
2.17.1


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

* [edk2-platforms][PATCH 4/4] RPi3/RPi4: touch up readme's a bit.
  2020-04-30  8:47 [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Andrei Warkentin
                   ` (2 preceding siblings ...)
  2020-04-30  8:47 ` [edk2-platforms][PATCH 3/4] RPi3: add support for Compute Module 3 Andrei Warkentin
@ 2020-04-30  8:47 ` Andrei Warkentin
  2020-04-30  8:57 ` [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Ard Biesheuvel
  4 siblings, 0 replies; 7+ messages in thread
From: Andrei Warkentin @ 2020-04-30  8:47 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, pete, philmd

Just cleanups to areas I know have gotten a bit stale.

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

diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
index b756013b..55c6265d 100644
--- a/Platform/RaspberryPi/RPi3/Readme.md
+++ b/Platform/RaspberryPi/RPi3/Readme.md
@@ -173,7 +173,7 @@ Known issues:
 ## USB
 
 - USB1 BBB mass storage devices untested (USB2 and USB3 devices are fine).
-- USB1 CBI mass storage devices don't work (e.g. HP FD-05PUB floppy).
+- Some USB1 CBI (e.g. UFI floppy) mass storage devices may not work.
 
 ## ACPI
 
@@ -187,4 +187,6 @@ install a kernel that relies on Device Tree rather than ACPI.
 ## Missing Functionality
 
 - Network booting via onboard NIC.
-- Ability to switch UART use to PL011.
+- SPCR hardcodes UART type to miniUART, and thus will not expose correct
+  (PL011) UART on CM3 and Pi2B or if DT overlays to switch UART are used
+  on Pi 3B/3B+/3A+.
diff --git a/Platform/RaspberryPi/RPi4/Readme.md b/Platform/RaspberryPi/RPi4/Readme.md
index 1f4ed001..c1ecfc99 100644
--- a/Platform/RaspberryPi/RPi4/Readme.md
+++ b/Platform/RaspberryPi/RPi4/Readme.md
@@ -121,3 +121,23 @@ An `RtcEpochSeconds` NVRAM variable is used to store the boot time.
 This should allow you to set whatever date/time you want using the Shell date and
 time commands. While in UEFI or HLOS, the time will tick forward.
 `RtcEpochSeconds` is not updated on reboots.
+
+## USB
+
+This UEFI supports both the USB3 xHCI ports (front ports), and the Pi 3-style
+DesignWare USB2 controller via the Type-C port (host only).
+
+The following only apply to the Type-C port:
+- USB1 BBB mass storage devices untested (USB2 and USB3 devices are fine).
+- Some USB1 CBI (e.g. UFI floppy) mass storage devices may not work.
+
+## ACPI
+
+OS support for ACPI description of Pi-specific devices is still in development. Not
+all functionality may be available.
+
+## Missing Functionality
+
+- Network booting via onboard NIC.
+- SPCR hardcodes type to PL011, and thus will not expose correct
+  (miniUART) UART if DT overlays to switch UART are used on Pi 4B.
\ No newline at end of file
-- 
2.17.1


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

* Re: [edk2-platforms][PATCH 3/4] RPi3: add support for Compute Module 3.
  2020-04-30  8:47 ` [edk2-platforms][PATCH 3/4] RPi3: add support for Compute Module 3 Andrei Warkentin
@ 2020-04-30  8:50   ` Ard Biesheuvel
  0 siblings, 0 replies; 7+ messages in thread
From: Ard Biesheuvel @ 2020-04-30  8:50 UTC (permalink / raw)
  To: Andrei Warkentin, devel; +Cc: leif, pete, philmd

On 4/30/20 10:47 AM, Andrei Warkentin wrote:
> Mostly strings and documentation, but also fixes a dumb bug
> I introduced when I added SD block write validation back
> in RaspberryPiPkg (which broke eMMC support, even though
> I could have tested it with a discrete eMMC media on regular
> Pies)
> 
> Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com>

Hi Andrei,

Can we please not put bug fixes and documentation updates in the same patch?


> ---
>   Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni |  8 ++++----
>   Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c        |  1 +
>   Platform/RaspberryPi/RPi3/Readme.md                     | 19 ++++++++++++-------
>   3 files changed, 17 insertions(+), 11 deletions(-)
> 
> diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
> index 26d803f7..07660072 100644
> --- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
> +++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
> @@ -53,8 +53,8 @@
>   #string STR_MMC_FORM_TITLE       #language en-US "SD/MMC Configuration"
>   #string STR_MMC_FORM_SUBTITLE    #language en-US "Note: UEFI only, OS may override settings."
>   
> -#string STR_MMC_SD_PROMPT        #language en-US "uSD Routing"
> -#string STR_MMC_SD_HELP          #language en-US "Choose host controller to drive uSD slot"
> +#string STR_MMC_SD_PROMPT        #language en-US "uSD/eMMC Routing"
> +#string STR_MMC_SD_HELP          #language en-US "Choose host controller to drive local flash storage"
>   #string STR_MMC_SD_EMMC2         #language en-US "eMMC2 SDHCI"
>   #string STR_MMC_SD_SDHOST        #language en-US "Broadcom SDHOST"
>   #string STR_MMC_SD_ARASAN        #language en-US "Arasan SDHCI"
> @@ -65,12 +65,12 @@
>   #string STR_MMC_DISMULTI_Y       #language en-US "Single-block transfers"
>   
>   #string STR_MMC_FORCE1BIT_PROMPT #language en-US "uSD Max Bus Width"
> -#string STR_MMC_FORCE1BIT_HELP   #language en-US "Tweak for bad media"
> +#string STR_MMC_FORCE1BIT_HELP   #language en-US "Tweak for bad media (N/A for eMMC)"
>   #string STR_MMC_FORCE1BIT_Y      #language en-US "1 Bit Mode"
>   #string STR_MMC_FORCE1BIT_N      #language en-US "4 Bit Mode"
>   
>   #string STR_MMC_FORCEDS_PROMPT   #language en-US "uSD Force Default Speed"
> -#string STR_MMC_FORCEDS_HELP     #language en-US "Tweak for bad media"
> +#string STR_MMC_FORCEDS_HELP     #language en-US "Tweak for bad media (N/A for eMMC)"
>   #string STR_MMC_FORCEDS_Y        #language en-US "Force Default Speed"
>   #string STR_MMC_FORCEDS_N        #language en-US "Allow High Speed"
>   
> diff --git a/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c b/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c
> index 29a9fd7d..8a2f7f42 100644
> --- a/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c
> +++ b/Platform/RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c
> @@ -47,6 +47,7 @@ ValidateWrittenBlockCount (
>       /*
>        * Not on MMC.
>        */
> +    *TransferredBlocks = Count;
>       return EFI_SUCCESS;
>     }
>   
> diff --git a/Platform/RaspberryPi/RPi3/Readme.md b/Platform/RaspberryPi/RPi3/Readme.md
> index 3484c92c..b756013b 100644
> --- a/Platform/RaspberryPi/RPi3/Readme.md
> +++ b/Platform/RaspberryPi/RPi3/Readme.md
> @@ -21,6 +21,10 @@ The RPi3 target supports Pi revisions based on the BCM2837 SoC:
>   - Raspberry Pi 3A+
>   - Raspberry Pi 3B
>   - Raspberry Pi 3B+
> +- Raspberry Pi CM3
> +
> +Note: a CM3L, lacking eMMC and thus similar to the 3B, will probably work as well, but just
> +has not been tested.
>   
>   Please see the RPi4 target for BCM2711-based variants, such as the Raspberry Pi 4B.
>   
> @@ -148,20 +152,21 @@ This should allow you to set whatever date/time you want using the Shell date an
>   time commands. While in UEFI or HLOS, the time will tick forward.
>   `RtcEpochSeconds` is not updated on reboots.
>   
> -## uSD
> +## uSD (and eMMC for CM3)
>   
> -UEFI supports both the Arasan SDHCI and the Broadcom SDHost controllers to access the uSD slot.
> -You can use either. The other controller gets routed to the SDIO card. The choice made will
> +UEFI supports both the Arasan SDHCI and the Broadcom SDHost controllers to access the flash
> +media (eMMC on CM3, and uSD slot on everything else). You can use either. The other controller
> +gets routed to the SDIO WiFi card (N/A to models without WiFi). The choice made will
>   impact ACPI OSes booted (e.g. Windows 10). Arasan, being an SDIO controller, is usually used
> -with the WiFi adapter where available. SDHost cannot be used with SDIO. In UEFI setup screen:
> +with the WiFi adapter (where available). SDHost cannot be used with SDIO. In UEFI setup screen:
>   - go to `Device Manager`
>   - go to `Raspberry Pi Configuration`
> -- go to `Chipset`
> -- configure `Boot uSD Routing`
> +- go to `SD/MMC Configuration`
> +- configure `uSD/eMMC Routing`
>   
>   Known issues:
>   - Arasan HS/4bit support is missing.
> -- No 8 bit mode support for (e)MMC (irrelevant for the Pi 3).
> +- No 8 bit mode support for (e)MMC (slow UEFI file I/O on CM3).
>   - Hacky (e)MMC support (no HS).
>   - No card removal/replacement detection, tons of timeouts and slow down during boot without an uSD card present.
>   
> 


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

* Re: [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3
  2020-04-30  8:47 [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Andrei Warkentin
                   ` (3 preceding siblings ...)
  2020-04-30  8:47 ` [edk2-platforms][PATCH 4/4] RPi3/RPi4: touch up readme's a bit Andrei Warkentin
@ 2020-04-30  8:57 ` Ard Biesheuvel
  4 siblings, 0 replies; 7+ messages in thread
From: Ard Biesheuvel @ 2020-04-30  8:57 UTC (permalink / raw)
  To: Andrei Warkentin, devel; +Cc: leif, pete, philmd

On 4/30/20 10:47 AM, Andrei Warkentin wrote:
> Dear all,
> 
> This is a patch set which brings in Pi 2B (v1.2), Pi 3A+
> and CM3 support. Most of this is documentation, and
> where there was some overlap I touched up RPi4 readme as well.
> 
> Pi 2B v1.2 is actually a Pi 3 SoC tacked to a Pi 2 board.
> We can treat it as a WiFi- and BT- less variant of the Pi 3,
> that happens to run slower due to worse thermal design ff the Pi 2
> board.
> 
> Pi 3A+ is the 512MB variant that dispensess with the USB/NIC hub.
> 
> CM3 is the eMMC-bearing compute module variant, thus there is
> a MmcDxe fix to an MMC-only regression I introduced years ago. CM3L
> will probably just work (since it relies on uSD), but I don't have
> one to test with.
> 
> Andrei Warkentin (4):
>    RPi3/RPi4: document 3A+ support.
>    RPi3: add support for the v1.2 Pi 2B.
>    RPi3: add support for Compute Module 3.
>    RPi3/RPi4: touch up readme's a bit.
> 

Documentation changes all look fine to me, but please put the MMC bugfix 
in a separate patch.


>   .../RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c |  4 +-
>   .../Drivers/ConfigDxe/ConfigDxeHii.uni        |  8 +--
>   .../RaspberryPi/Drivers/MmcDxe/MmcBlockIo.c   |  1 +
>   Platform/RaspberryPi/RPi3/Readme.md           | 49 +++++++++++++------
>   Platform/RaspberryPi/RPi4/Readme.md           | 35 +++++++++++--
>   5 files changed, 72 insertions(+), 25 deletions(-)
> 


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

end of thread, other threads:[~2020-04-30  8:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-30  8:47 [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Andrei Warkentin
2020-04-30  8:47 ` [edk2-platforms][PATCH 1/4] RPi3/RPi4: document 3A+ support Andrei Warkentin
2020-04-30  8:47 ` [edk2-platforms][PATCH 2/4] RPi3: add support for the v1.2 Pi 2B Andrei Warkentin
2020-04-30  8:47 ` [edk2-platforms][PATCH 3/4] RPi3: add support for Compute Module 3 Andrei Warkentin
2020-04-30  8:50   ` Ard Biesheuvel
2020-04-30  8:47 ` [edk2-platforms][PATCH 4/4] RPi3/RPi4: touch up readme's a bit Andrei Warkentin
2020-04-30  8:57 ` [edk2-platforms][PATCH 0/4] extend RPi3 to support 3A+, 2B (v1.2) and CM3 Ard Biesheuvel

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