From a9b9b0912a84e57d91285b29ce3eb8823e1d053d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20B=C4=83l=C4=83nic=C4=83?= Date: Tue, 12 Dec 2023 03:12:12 +0200 Subject: [PATCH 04/16] Platform/RaspberryPi: Fix framebuffer base translation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On RPi 5, the firmware already returns a CPU address to the framebuffer. We need to mask off the VC bus alias so that it's only subtracted when present. Display now works, with a few caveats: - the depth does not update from 16 to 32-bit anymore. It's necessary to add "framebuffer_depth=32" in config.txt. - no resolutions higher than 1080p. Signed-off-by: Mario Bălănică --- Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c b/Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c index 91f581ef..9077f077 100644 --- a/Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c +++ b/Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c @@ -754,7 +754,7 @@ RpiFirmwareAllocFb ( } *Pitch = Cmd->Pitch.Pitch; - *FbBase = Cmd->AllocFb.AlignmentBase - PcdGet64 (PcdDmaDeviceOffset); + *FbBase = Cmd->AllocFb.AlignmentBase & ~PcdGet64 (PcdDmaDeviceOffset); *FbSize = Cmd->AllocFb.Size; ReleaseSpinLock (&mMailboxLock); -- 2.51.2