xref: /openbmc/qemu/include/hw/misc/bcm2835_mbox.h (revision c122bca9)
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