mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00

Refactor the fb property setting code so that rather than using a set of pointers to local variables to track whether a config value has been updated in the current mbox and if so what its new value is, we just copy all the current settings of the fb at the start, and then update that copy as we go along, before asking the fb to switch to it at the end. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20180814144436.679-3-peter.maydell@linaro.org
58 lines
1.4 KiB
C
58 lines
1.4 KiB
C
/*
|
|
* Raspberry Pi emulation (c) 2012 Gregory Estrade
|
|
* Upstreaming code cleanup [including bcm2835_*] (c) 2013 Jan Petrous
|
|
*
|
|
* Rasperry Pi 2 emulation and refactoring Copyright (c) 2015, Microsoft
|
|
* Written by Andrew Baumann
|
|
*
|
|
* This code is licensed under the GNU GPLv2 and later.
|
|
*/
|
|
|
|
#ifndef BCM2835_FB_H
|
|
#define BCM2835_FB_H
|
|
|
|
#include "hw/sysbus.h"
|
|
#include "ui/console.h"
|
|
|
|
#define TYPE_BCM2835_FB "bcm2835-fb"
|
|
#define BCM2835_FB(obj) OBJECT_CHECK(BCM2835FBState, (obj), TYPE_BCM2835_FB)
|
|
|
|
/*
|
|
* Configuration information about the fb which the guest can program
|
|
* via the mailbox property interface.
|
|
*/
|
|
typedef struct {
|
|
uint32_t xres, yres;
|
|
uint32_t xres_virtual, yres_virtual;
|
|
uint32_t xoffset, yoffset;
|
|
uint32_t bpp;
|
|
uint32_t base;
|
|
uint32_t pixo;
|
|
uint32_t alpha;
|
|
} BCM2835FBConfig;
|
|
|
|
typedef struct {
|
|
/*< private >*/
|
|
SysBusDevice busdev;
|
|
/*< public >*/
|
|
|
|
uint32_t vcram_base, vcram_size;
|
|
MemoryRegion *dma_mr;
|
|
AddressSpace dma_as;
|
|
MemoryRegion iomem;
|
|
MemoryRegionSection fbsection;
|
|
QemuConsole *con;
|
|
qemu_irq mbox_irq;
|
|
|
|
bool lock, invalidate, pending;
|
|
|
|
BCM2835FBConfig config;
|
|
|
|
/* These are just cached values calculated from the config settings */
|
|
uint32_t size;
|
|
uint32_t pitch;
|
|
} BCM2835FBState;
|
|
|
|
void bcm2835_fb_reconfigure(BCM2835FBState *s, BCM2835FBConfig *newconfig);
|
|
|
|
#endif
|