199494e69SAndrew Baumann /* 299494e69SAndrew Baumann * Raspberry Pi emulation (c) 2012 Gregory Estrade 36111a0c0SPhilippe Mathieu-Daudé * 46111a0c0SPhilippe Mathieu-Daudé * This work is licensed under the terms of the GNU GPL, version 2 or later. 56111a0c0SPhilippe Mathieu-Daudé * See the COPYING file in the top-level directory. 699494e69SAndrew Baumann */ 799494e69SAndrew Baumann 899494e69SAndrew Baumann #ifndef BCM2835_MBOX_H 999494e69SAndrew Baumann #define BCM2835_MBOX_H 1099494e69SAndrew Baumann 1199494e69SAndrew Baumann #include "bcm2835_mbox_defs.h" 1299494e69SAndrew Baumann #include "hw/sysbus.h" 13db1015e9SEduardo Habkost #include "qom/object.h" 1499494e69SAndrew Baumann 1599494e69SAndrew Baumann #define TYPE_BCM2835_MBOX "bcm2835-mbox" 16*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(BCM2835MboxState, BCM2835_MBOX) 1799494e69SAndrew Baumann 1899494e69SAndrew Baumann typedef struct { 1999494e69SAndrew Baumann uint32_t reg[MBOX_SIZE]; 2099494e69SAndrew Baumann uint32_t count; 2199494e69SAndrew Baumann uint32_t status; 2299494e69SAndrew Baumann uint32_t config; 2399494e69SAndrew Baumann } BCM2835Mbox; 2499494e69SAndrew Baumann 25db1015e9SEduardo Habkost struct BCM2835MboxState { 2699494e69SAndrew Baumann /*< private >*/ 2799494e69SAndrew Baumann SysBusDevice busdev; 2899494e69SAndrew Baumann /*< public >*/ 2999494e69SAndrew Baumann MemoryRegion *mbox_mr; 3099494e69SAndrew Baumann AddressSpace mbox_as; 3199494e69SAndrew Baumann MemoryRegion iomem; 3299494e69SAndrew Baumann qemu_irq arm_irq; 3399494e69SAndrew Baumann 3499494e69SAndrew Baumann bool mbox_irq_disabled; 3599494e69SAndrew Baumann bool available[MBOX_CHAN_COUNT]; 3699494e69SAndrew Baumann BCM2835Mbox mbox[2]; 37db1015e9SEduardo Habkost }; 3899494e69SAndrew Baumann 3999494e69SAndrew Baumann #endif 40