15e9c2a8dSGrégory ESTRADE /* 25e9c2a8dSGrégory ESTRADE * Raspberry Pi emulation (c) 2012 Gregory Estrade 35e9c2a8dSGrégory ESTRADE * Upstreaming code cleanup [including bcm2835_*] (c) 2013 Jan Petrous 45e9c2a8dSGrégory ESTRADE * 55e9c2a8dSGrégory ESTRADE * Rasperry Pi 2 emulation and refactoring Copyright (c) 2015, Microsoft 65e9c2a8dSGrégory ESTRADE * Written by Andrew Baumann 75e9c2a8dSGrégory ESTRADE * 85e9c2a8dSGrégory ESTRADE * This code is licensed under the GNU GPLv2 and later. 95e9c2a8dSGrégory ESTRADE */ 105e9c2a8dSGrégory ESTRADE 115e9c2a8dSGrégory ESTRADE #ifndef BCM2835_FB_H 125e9c2a8dSGrégory ESTRADE #define BCM2835_FB_H 135e9c2a8dSGrégory ESTRADE 145e9c2a8dSGrégory ESTRADE #include "hw/sysbus.h" 155e9c2a8dSGrégory ESTRADE #include "ui/console.h" 165e9c2a8dSGrégory ESTRADE 175e9c2a8dSGrégory ESTRADE #define TYPE_BCM2835_FB "bcm2835-fb" 185e9c2a8dSGrégory ESTRADE #define BCM2835_FB(obj) OBJECT_CHECK(BCM2835FBState, (obj), TYPE_BCM2835_FB) 195e9c2a8dSGrégory ESTRADE 20a02755ecSPeter Maydell /* 21a02755ecSPeter Maydell * Configuration information about the fb which the guest can program 22a02755ecSPeter Maydell * via the mailbox property interface. 23a02755ecSPeter Maydell */ 24a02755ecSPeter Maydell typedef struct { 25a02755ecSPeter Maydell uint32_t xres, yres; 26a02755ecSPeter Maydell uint32_t xres_virtual, yres_virtual; 27a02755ecSPeter Maydell uint32_t xoffset, yoffset; 28a02755ecSPeter Maydell uint32_t bpp; 29a02755ecSPeter Maydell uint32_t base; 30a02755ecSPeter Maydell uint32_t pixo; 31a02755ecSPeter Maydell uint32_t alpha; 32a02755ecSPeter Maydell } BCM2835FBConfig; 33a02755ecSPeter Maydell 345e9c2a8dSGrégory ESTRADE typedef struct { 355e9c2a8dSGrégory ESTRADE /*< private >*/ 365e9c2a8dSGrégory ESTRADE SysBusDevice busdev; 375e9c2a8dSGrégory ESTRADE /*< public >*/ 385e9c2a8dSGrégory ESTRADE 395e9c2a8dSGrégory ESTRADE uint32_t vcram_base, vcram_size; 405e9c2a8dSGrégory ESTRADE MemoryRegion *dma_mr; 415e9c2a8dSGrégory ESTRADE AddressSpace dma_as; 425e9c2a8dSGrégory ESTRADE MemoryRegion iomem; 435e9c2a8dSGrégory ESTRADE MemoryRegionSection fbsection; 445e9c2a8dSGrégory ESTRADE QemuConsole *con; 455e9c2a8dSGrégory ESTRADE qemu_irq mbox_irq; 465e9c2a8dSGrégory ESTRADE 475e9c2a8dSGrégory ESTRADE bool lock, invalidate, pending; 48a02755ecSPeter Maydell 49a02755ecSPeter Maydell BCM2835FBConfig config; 50*9e2938a0SPeter Maydell BCM2835FBConfig initial_config; 515e9c2a8dSGrégory ESTRADE } BCM2835FBState; 525e9c2a8dSGrégory ESTRADE 53193100b5SPeter Maydell void bcm2835_fb_reconfigure(BCM2835FBState *s, BCM2835FBConfig *newconfig); 545e9c2a8dSGrégory ESTRADE 555e9c2a8dSGrégory ESTRADE #endif 56