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