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