xref: /qemu/include/hw/display/bcm2835_fb.h (revision 5e9c2a8dac19d5df0c541ea23df654062de917c0)
1*5e9c2a8dSGrégory ESTRADE /*
2*5e9c2a8dSGrégory ESTRADE  * Raspberry Pi emulation (c) 2012 Gregory Estrade
3*5e9c2a8dSGrégory ESTRADE  * Upstreaming code cleanup [including bcm2835_*] (c) 2013 Jan Petrous
4*5e9c2a8dSGrégory ESTRADE  *
5*5e9c2a8dSGrégory ESTRADE  * Rasperry Pi 2 emulation and refactoring Copyright (c) 2015, Microsoft
6*5e9c2a8dSGrégory ESTRADE  * Written by Andrew Baumann
7*5e9c2a8dSGrégory ESTRADE  *
8*5e9c2a8dSGrégory ESTRADE  * This code is licensed under the GNU GPLv2 and later.
9*5e9c2a8dSGrégory ESTRADE  */
10*5e9c2a8dSGrégory ESTRADE 
11*5e9c2a8dSGrégory ESTRADE #ifndef BCM2835_FB_H
12*5e9c2a8dSGrégory ESTRADE #define BCM2835_FB_H
13*5e9c2a8dSGrégory ESTRADE 
14*5e9c2a8dSGrégory ESTRADE #include "hw/sysbus.h"
15*5e9c2a8dSGrégory ESTRADE #include "exec/address-spaces.h"
16*5e9c2a8dSGrégory ESTRADE #include "ui/console.h"
17*5e9c2a8dSGrégory ESTRADE 
18*5e9c2a8dSGrégory ESTRADE #define TYPE_BCM2835_FB "bcm2835-fb"
19*5e9c2a8dSGrégory ESTRADE #define BCM2835_FB(obj) OBJECT_CHECK(BCM2835FBState, (obj), TYPE_BCM2835_FB)
20*5e9c2a8dSGrégory ESTRADE 
21*5e9c2a8dSGrégory ESTRADE typedef struct {
22*5e9c2a8dSGrégory ESTRADE     /*< private >*/
23*5e9c2a8dSGrégory ESTRADE     SysBusDevice busdev;
24*5e9c2a8dSGrégory ESTRADE     /*< public >*/
25*5e9c2a8dSGrégory ESTRADE 
26*5e9c2a8dSGrégory ESTRADE     uint32_t vcram_base, vcram_size;
27*5e9c2a8dSGrégory ESTRADE     MemoryRegion *dma_mr;
28*5e9c2a8dSGrégory ESTRADE     AddressSpace dma_as;
29*5e9c2a8dSGrégory ESTRADE     MemoryRegion iomem;
30*5e9c2a8dSGrégory ESTRADE     MemoryRegionSection fbsection;
31*5e9c2a8dSGrégory ESTRADE     QemuConsole *con;
32*5e9c2a8dSGrégory ESTRADE     qemu_irq mbox_irq;
33*5e9c2a8dSGrégory ESTRADE 
34*5e9c2a8dSGrégory ESTRADE     bool lock, invalidate, pending;
35*5e9c2a8dSGrégory ESTRADE     uint32_t xres, yres;
36*5e9c2a8dSGrégory ESTRADE     uint32_t xres_virtual, yres_virtual;
37*5e9c2a8dSGrégory ESTRADE     uint32_t xoffset, yoffset;
38*5e9c2a8dSGrégory ESTRADE     uint32_t bpp;
39*5e9c2a8dSGrégory ESTRADE     uint32_t base, pitch, size;
40*5e9c2a8dSGrégory ESTRADE     uint32_t pixo, alpha;
41*5e9c2a8dSGrégory ESTRADE } BCM2835FBState;
42*5e9c2a8dSGrégory ESTRADE 
43*5e9c2a8dSGrégory ESTRADE void bcm2835_fb_reconfigure(BCM2835FBState *s, uint32_t *xres, uint32_t *yres,
44*5e9c2a8dSGrégory ESTRADE                             uint32_t *xoffset, uint32_t *yoffset, uint32_t *bpp,
45*5e9c2a8dSGrégory ESTRADE                             uint32_t *pixo, uint32_t *alpha);
46*5e9c2a8dSGrégory ESTRADE 
47*5e9c2a8dSGrégory ESTRADE #endif
48