1e3ece3e3SAndrew Baumann /* 2e3ece3e3SAndrew 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. 6e3ece3e3SAndrew Baumann */ 7e3ece3e3SAndrew Baumann 8e3ece3e3SAndrew Baumann #ifndef BCM2835_IC_H 9e3ece3e3SAndrew Baumann #define BCM2835_IC_H 10e3ece3e3SAndrew Baumann 11e3ece3e3SAndrew Baumann #include "hw/sysbus.h" 12db1015e9SEduardo Habkost #include "qom/object.h" 13e3ece3e3SAndrew Baumann 14e3ece3e3SAndrew Baumann #define TYPE_BCM2835_IC "bcm2835-ic" 15*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(BCM2835ICState, BCM2835_IC) 16e3ece3e3SAndrew Baumann 17e3ece3e3SAndrew Baumann #define BCM2835_IC_GPU_IRQ "gpu-irq" 18e3ece3e3SAndrew Baumann #define BCM2835_IC_ARM_IRQ "arm-irq" 19e3ece3e3SAndrew Baumann 20db1015e9SEduardo Habkost struct BCM2835ICState { 21e3ece3e3SAndrew Baumann /*< private >*/ 22e3ece3e3SAndrew Baumann SysBusDevice busdev; 23e3ece3e3SAndrew Baumann /*< public >*/ 24e3ece3e3SAndrew Baumann 25e3ece3e3SAndrew Baumann MemoryRegion iomem; 26e3ece3e3SAndrew Baumann qemu_irq irq; 27e3ece3e3SAndrew Baumann qemu_irq fiq; 28e3ece3e3SAndrew Baumann 29e3ece3e3SAndrew Baumann /* 64 GPU IRQs + 8 ARM IRQs = 72 total (GPU first) */ 30e3ece3e3SAndrew Baumann uint64_t gpu_irq_level, gpu_irq_enable; 31e3ece3e3SAndrew Baumann uint8_t arm_irq_level, arm_irq_enable; 32e3ece3e3SAndrew Baumann bool fiq_enable; 33e3ece3e3SAndrew Baumann uint8_t fiq_select; 34db1015e9SEduardo Habkost }; 35e3ece3e3SAndrew Baumann 36e3ece3e3SAndrew Baumann #endif 37