1 /* 2 * Raspberry Pi emulation (c) 2012 Gregory Estrade 3 * 4 * This work is licensed under the terms of the GNU GPL, version 2 or later. 5 * See the COPYING file in the top-level directory. 6 */ 7 8 #ifndef BCM2835_MBOX_H 9 #define BCM2835_MBOX_H 10 11 #include "bcm2835_mbox_defs.h" 12 #include "hw/sysbus.h" 13 14 #define TYPE_BCM2835_MBOX "bcm2835-mbox" 15 #define BCM2835_MBOX(obj) \ 16 OBJECT_CHECK(BCM2835MboxState, (obj), TYPE_BCM2835_MBOX) 17 18 typedef struct { 19 uint32_t reg[MBOX_SIZE]; 20 uint32_t count; 21 uint32_t status; 22 uint32_t config; 23 } BCM2835Mbox; 24 25 typedef struct { 26 /*< private >*/ 27 SysBusDevice busdev; 28 /*< public >*/ 29 MemoryRegion *mbox_mr; 30 AddressSpace mbox_as; 31 MemoryRegion iomem; 32 qemu_irq arm_irq; 33 34 bool mbox_irq_disabled; 35 bool available[MBOX_CHAN_COUNT]; 36 BCM2835Mbox mbox[2]; 37 } BCM2835MboxState; 38 39 #endif 40