hw/display/bcm2835_fb: Fix framebuffer allocation address
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>
This commit is contained in:
parent
c5cfdabaf5
commit
5865d99fe8
@ -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.xoffset = ldl_le_phys(&s->dma_as, value + 24);
|
||||||
newconf.yoffset = ldl_le_phys(&s->dma_as, value + 28);
|
newconf.yoffset = ldl_le_phys(&s->dma_as, value + 28);
|
||||||
|
|
||||||
newconf.base = s->vcram_base | (value & 0xc0000000);
|
newconf.base = s->vcram_base + BCM2835_FB_OFFSET;
|
||||||
newconf.base += BCM2835_FB_OFFSET;
|
|
||||||
|
|
||||||
/* Copy fields which we don't want to change from the existing config */
|
/* Copy fields which we don't want to change from the existing config */
|
||||||
newconf.pixo = s->config.pixo;
|
newconf.pixo = s->config.pixo;
|
||||||
|
Loading…
Reference in New Issue
Block a user