[edk2-devel] [PATCH V2 00/10] Platform/RaspberryPi: Utilize SPI flash for EFI variables

Jeremy Linton posted 10 patches 2 years, 3 months ago
Failed in applying to current master (apply log)
Platform/RaspberryPi/AcpiTables/AcpiTables.inf     |   1 +
Platform/RaspberryPi/AcpiTables/Dsdt.asl           |   7 -
Platform/RaspberryPi/AcpiTables/GpuDevs.asl        | 126 ----
Platform/RaspberryPi/AcpiTables/SsdtGpio.asl       | 159 +++++
Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c |  47 ++
.../RaspberryPi/Drivers/ConfigDxe/ConfigDxe.inf    |   2 +
.../RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni |  10 +
.../RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr |  36 +-
Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c       |   4 +
Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.inf     |   1 +
.../Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c        |  60 +-
.../Drivers/VarBlockServiceDxe/FvbInfo.c           |   8 +-
.../Drivers/VarBlockServiceDxe/VarBlockService.c   | 657 ++++++++++++++++++++-
.../Drivers/VarBlockServiceDxe/VarBlockService.h   |  10 +
.../VarBlockServiceDxe/VarBlockServiceDxe.c        |  38 +-
.../VarBlockServiceDxe/VarBlockServiceDxe.inf      |   6 +
Platform/RaspberryPi/Include/ConfigVars.h          |   4 +
.../RaspberryPi/Include/IndustryStandard/RpiMbox.h |   1 +
.../RaspberryPi/Include/Protocol/RpiFirmware.h     |   7 +
Platform/RaspberryPi/RPi3/RPi3.dsc                 |  12 +
Platform/RaspberryPi/RPi4/RPi4.dsc                 |  14 +
Platform/RaspberryPi/RPi4/Readme.md                |  63 +-
Platform/RaspberryPi/RaspberryPi.dec               |   2 +
.../Bcm283x/Include/IndustryStandard/Bcm2836.h     |  34 ++
Silicon/Broadcom/Bcm283x/Include/Library/GpioLib.h |   6 +
Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.c |  16 +-
26 files changed, 1160 insertions(+), 171 deletions(-)
create mode 100644 Platform/RaspberryPi/AcpiTables/SsdtGpio.asl
[edk2-devel] [PATCH V2 00/10] Platform/RaspberryPi: Utilize SPI flash for EFI variables
Posted by Jeremy Linton 2 years, 3 months ago
The RPi4 has a SPI flash with unused capacity. This set detects if
that capacity is sufficient for a UEFI variable store and utilizes
it as such. This fixes a long list of problems, and along the way likely
also fixes a random boot failure caused by the FaultTolerantWriteDxe
garbage collecting, and erasing the flash volume header which is being
used to return information about the underlying variable storage capacity.

This set was dependent on an earlier, mostly ignored set of changes to
move the GPIO/etc devices into their own SSDT and disable them. Because
of that, the two sets have been merged.

Why is that? Because the SPI flash is mux'ed with the PWM used to play
audio out the 3.5mm audio jack on this device. This causes a long list
of problems we must try and avoid, starting with the fact that the pins
need to be controlled by the uefi runtime service. The other problem is
obviously that any time a variable is updated, if the user is utilizing
the 3.5mm audio they will hear clicks and pops. Turns out that behavior
isn't unique to this patch set because the low level boot/etc exhibits this
when running in a TFA+uboot/edk2 environment. A fairly small tweak to TFA
fixes the majority of this, and the remaining runtime problems caused
by this patch actually are very slight and generally not noticeable unless
one goes looking for them. OTOH, we revert to the earlier non persisted
variable store if the firmware is running in a DT only mode, or the
user enables the ACPI GPIO block.

V1->V2:
  Move Rhpx.asl into GPIO SSDT, this fixes a windows problem if the
    GPIO description is removed.
  Add longer explanation to Readme.md as well as update it to note
    CM4/RPi400, newer menu item variables, etc.
  Various code cleanups caught by updated PatchCheck
  More agressive ifdef'ing out RPi4 only code for RPi3

Jeremy Linton (10):
  Platform/RaspberryPi: Cleanup menu visibility
  Platform/RaspberryPi: Give the user control over the XHCI mailbox
  Platform/RaspberryPi: Move GPIO/SPI/I2C to SSDT
  Platform/RaspberryPi: Add menu item to enable/disable GPIO
  Platform/RaspberryPi: Add constants for controlling SPI
  Platform/RaspberryPi: Add mailbox cmd to control audio amp
  Platform/RaspberryPi: Add SPI/GPIO to memory map
  Platform/RaspberryPi: Allow pin function selection at runtime
  Platform/RaspberryPi: Add SPI flash variable store.
  Platform/RaspberryPi: Update RPi4 Readme

 Platform/RaspberryPi/AcpiTables/AcpiTables.inf     |   1 +
 Platform/RaspberryPi/AcpiTables/Dsdt.asl           |   7 -
 Platform/RaspberryPi/AcpiTables/GpuDevs.asl        | 126 ----
 Platform/RaspberryPi/AcpiTables/SsdtGpio.asl       | 159 +++++
 Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c |  47 ++
 .../RaspberryPi/Drivers/ConfigDxe/ConfigDxe.inf    |   2 +
 .../RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni |  10 +
 .../RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr |  36 +-
 Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c       |   4 +
 Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.inf     |   1 +
 .../Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c        |  60 +-
 .../Drivers/VarBlockServiceDxe/FvbInfo.c           |   8 +-
 .../Drivers/VarBlockServiceDxe/VarBlockService.c   | 657 ++++++++++++++++++++-
 .../Drivers/VarBlockServiceDxe/VarBlockService.h   |  10 +
 .../VarBlockServiceDxe/VarBlockServiceDxe.c        |  38 +-
 .../VarBlockServiceDxe/VarBlockServiceDxe.inf      |   6 +
 Platform/RaspberryPi/Include/ConfigVars.h          |   4 +
 .../RaspberryPi/Include/IndustryStandard/RpiMbox.h |   1 +
 .../RaspberryPi/Include/Protocol/RpiFirmware.h     |   7 +
 Platform/RaspberryPi/RPi3/RPi3.dsc                 |  12 +
 Platform/RaspberryPi/RPi4/RPi4.dsc                 |  14 +
 Platform/RaspberryPi/RPi4/Readme.md                |  63 +-
 Platform/RaspberryPi/RaspberryPi.dec               |   2 +
 .../Bcm283x/Include/IndustryStandard/Bcm2836.h     |  34 ++
 Silicon/Broadcom/Bcm283x/Include/Library/GpioLib.h |   6 +
 Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.c |  16 +-
 26 files changed, 1160 insertions(+), 171 deletions(-)
 create mode 100644 Platform/RaspberryPi/AcpiTables/SsdtGpio.asl

-- 
2.13.7



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#85249): https://edk2.groups.io/g/devel/message/85249
Mute This Topic: https://groups.io/mt/88087663/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [PATCH V2 00/10] Platform/RaspberryPi: Utilize SPI flash for EFI variables
Posted by 0n0w1c 2 years, 2 months ago
Tested-by: 0n0w1c <fr332hack@gmail.com>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86326): https://edk2.groups.io/g/devel/message/86326
Mute This Topic: https://groups.io/mt/88087663/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [PATCH V2 00/10] Platform/RaspberryPi: Utilize SPI flash for EFI variables
Posted by Jeff Booher-Kaeding 2 years, 2 months ago
Patches applied cleanly & built with no issues. No issues spotted in functional testing & passes the SCT tests required by SBBR.

-Jeff

On Sat, Jan 1, 2022 at 09:49 PM, Jeremy Linton wrote:

> 
> The RPi4 has a SPI flash with unused capacity. This set detects if
> that capacity is sufficient for a UEFI variable store and utilizes
> it as such. This fixes a long list of problems, and along the way likely
> also fixes a random boot failure caused by the FaultTolerantWriteDxe
> garbage collecting, and erasing the flash volume header which is being
> used to return information about the underlying variable storage capacity=
> 
> .
> 
> This set was dependent on an earlier, mostly ignored set of changes to
> move the GPIO/etc devices into their own SSDT and disable them. Because
> of that, the two sets have been merged.
> 
> Why is that? Because the SPI flash is mux'ed with the PWM used to play
> audio out the 3.5mm audio jack on this device. This causes a long list
> of problems we must try and avoid, starting with the fact that the pins
> need to be controlled by the uefi runtime service. The other problem is
> obviously that any time a variable is updated, if the user is utilizing
> the 3.5mm audio they will hear clicks and pops. Turns out that behavior
> isn't unique to this patch set because the low level boot/etc exhibits th=
> 
> is
> when running in a TFA+uboot/edk2 environment. A fairly small tweak to TFA
> fixes the majority of this, and the remaining runtime problems caused
> by this patch actually are very slight and generally not noticeable unles=
> 
> s
> one goes looking for them. OTOH, we revert to the earlier non persisted
> variable store if the firmware is running in a DT only mode, or the
> user enables the ACPI GPIO block.
> 
> V1->V2:
> Move Rhpx.asl into GPIO SSDT, this fixes a windows problem if the
> GPIO description is removed.
> Add longer explanation to Readme.md as well as update it to note
> CM4/RPi400, newer menu item variables, etc.
> Various code cleanups caught by updated PatchCheck
> More agressive ifdef'ing out RPi4 only code for RPi3
> 
> Jeremy Linton (10):
> Platform/RaspberryPi: Cleanup menu visibility
> Platform/RaspberryPi: Give the user control over the XHCI mailbox
> Platform/RaspberryPi: Move GPIO/SPI/I2C to SSDT
> Platform/RaspberryPi: Add menu item to enable/disable GPIO
> Platform/RaspberryPi: Add constants for controlling SPI
> Platform/RaspberryPi: Add mailbox cmd to control audio amp
> Platform/RaspberryPi: Add SPI/GPIO to memory map
> Platform/RaspberryPi: Allow pin function selection at runtime
> Platform/RaspberryPi: Add SPI flash variable store.
> Platform/RaspberryPi: Update RPi4 Readme
> 
> Platform/RaspberryPi/AcpiTables/AcpiTables.inf | 1 +
> Platform/RaspberryPi/AcpiTables/Dsdt.asl | 7 -
> Platform/RaspberryPi/AcpiTables/GpuDevs.asl | 126 ----
> Platform/RaspberryPi/AcpiTables/SsdtGpio.asl | 159 +++++
> Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c | 47 ++
> .../RaspberryPi/Drivers/ConfigDxe/ConfigDxe.inf | 2 +
> .../RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni | 10 +
> .../RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr | 36 +-
> Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c | 4 +
> Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.inf | 1 +
> .../Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c | 60 +-
> .../Drivers/VarBlockServiceDxe/FvbInfo.c | 8 +-
> .../Drivers/VarBlockServiceDxe/VarBlockService.c | 657 +++++++++++++++=
> +++++-
> .../Drivers/VarBlockServiceDxe/VarBlockService.h | 10 +
> .../VarBlockServiceDxe/VarBlockServiceDxe.c | 38 +-
> .../VarBlockServiceDxe/VarBlockServiceDxe.inf | 6 +
> Platform/RaspberryPi/Include/ConfigVars.h | 4 +
> .../RaspberryPi/Include/IndustryStandard/RpiMbox.h | 1 +
> .../RaspberryPi/Include/Protocol/RpiFirmware.h | 7 +
> Platform/RaspberryPi/RPi3/RPi3.dsc | 12 +
> Platform/RaspberryPi/RPi4/RPi4.dsc | 14 +
> Platform/RaspberryPi/RPi4/Readme.md | 63 +-
> Platform/RaspberryPi/RaspberryPi.dec | 2 +
> .../Bcm283x/Include/IndustryStandard/Bcm2836.h | 34 ++
> Silicon/Broadcom/Bcm283x/Include/Library/GpioLib.h | 6 +
> Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.c | 16 +-
> 26 files changed, 1160 insertions(+), 171 deletions(-)
> create mode 100644 Platform/RaspberryPi/AcpiTables/SsdtGpio.asl
> 
> --=20
> 2.13.7


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86564): https://edk2.groups.io/g/devel/message/86564
Mute This Topic: https://groups.io/mt/88087663/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-