54 lines
2.1 KiB
Diff
54 lines
2.1 KiB
Diff
|
|
From 5a8be2987986a0191b9d8a7a1a59f491e657ebad Mon Sep 17 00:00:00 2001
|
||
|
|
From: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||
|
|
Date: Fri, 8 Mar 2024 04:12:58 +0000
|
||
|
|
Subject: [PATCH] hw/display/bcm2835_fb: Fix framebuffer allocation address
|
||
|
|
mainline inclusion commit 5865d99fe88d8c8fa437c18c6b63fb2a8165634f category:
|
||
|
|
bugfix
|
||
|
|
|
||
|
|
---------------------------------------------------------------
|
||
|
|
|
||
|
|
This patch fixes the dedicated framebuffer mailbox interface by
|
||
|
|
removing an unneeded offset. This means that we pick the framebuffer
|
||
|
|
address in the same way that we do if the guest code uses the buffer
|
||
|
|
allocate mechanism of the bcm2835_property interface (case
|
||
|
|
0x00040001: /* Allocate buffer */ in bcm2835_property.c).
|
||
|
|
|
||
|
|
The documentation of this mailbox interface doesn't say anything
|
||
|
|
about using parts of the request buffer address to affect the
|
||
|
|
chosen framebuffer address:
|
||
|
|
https://github.com/raspberrypi/firmware/wiki/Mailbox-framebuffer-interface
|
||
|
|
|
||
|
|
Some baremetal applications like the Screen01/Screen02 examples from
|
||
|
|
Baking Pi tutorial[1] didn't work before this patch.
|
||
|
|
|
||
|
|
[1] https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/screen01.html
|
||
|
|
|
||
|
|
Signed-off-by: Alan Jian <alanjian85@outlook.com>
|
||
|
|
Message-id: 20220725145838.8412-1-alanjian85@outlook.com
|
||
|
|
[PMM: tweaked commit message]
|
||
|
|
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
|
||
|
|
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
||
|
|
|
||
|
|
Signed-off-by: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
hw/display/bcm2835_fb.c | 3 +--
|
||
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
|
||
|
|
index 2be77bdd3a..ac17c472a5 100644
|
||
|
|
--- a/hw/display/bcm2835_fb.c
|
||
|
|
+++ b/hw/display/bcm2835_fb.c
|
||
|
|
@@ -279,8 +279,7 @@ static void bcm2835_fb_mbox_push(BCM2835FBState *s, uint32_t value)
|
||
|
|
newconf.xoffset = ldl_le_phys(&s->dma_as, value + 24);
|
||
|
|
newconf.yoffset = ldl_le_phys(&s->dma_as, value + 28);
|
||
|
|
|
||
|
|
- newconf.base = s->vcram_base | (value & 0xc0000000);
|
||
|
|
- newconf.base += BCM2835_FB_OFFSET;
|
||
|
|
+ newconf.base = s->vcram_base + BCM2835_FB_OFFSET;
|
||
|
|
|
||
|
|
/* Copy fields which we don't want to change from the existing config */
|
||
|
|
newconf.pixo = s->config.pixo;
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|