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