1*e3ece3e3SAndrew Baumann /* 2*e3ece3e3SAndrew Baumann * Raspberry Pi emulation (c) 2012 Gregory Estrade 3*e3ece3e3SAndrew Baumann * This code is licensed under the GNU GPLv2 and later. 4*e3ece3e3SAndrew Baumann */ 5*e3ece3e3SAndrew Baumann 6*e3ece3e3SAndrew Baumann #ifndef BCM2835_IC_H 7*e3ece3e3SAndrew Baumann #define BCM2835_IC_H 8*e3ece3e3SAndrew Baumann 9*e3ece3e3SAndrew Baumann #include "hw/sysbus.h" 10*e3ece3e3SAndrew Baumann 11*e3ece3e3SAndrew Baumann #define TYPE_BCM2835_IC "bcm2835-ic" 12*e3ece3e3SAndrew Baumann #define BCM2835_IC(obj) OBJECT_CHECK(BCM2835ICState, (obj), TYPE_BCM2835_IC) 13*e3ece3e3SAndrew Baumann 14*e3ece3e3SAndrew Baumann #define BCM2835_IC_GPU_IRQ "gpu-irq" 15*e3ece3e3SAndrew Baumann #define BCM2835_IC_ARM_IRQ "arm-irq" 16*e3ece3e3SAndrew Baumann 17*e3ece3e3SAndrew Baumann typedef struct BCM2835ICState { 18*e3ece3e3SAndrew Baumann /*< private >*/ 19*e3ece3e3SAndrew Baumann SysBusDevice busdev; 20*e3ece3e3SAndrew Baumann /*< public >*/ 21*e3ece3e3SAndrew Baumann 22*e3ece3e3SAndrew Baumann MemoryRegion iomem; 23*e3ece3e3SAndrew Baumann qemu_irq irq; 24*e3ece3e3SAndrew Baumann qemu_irq fiq; 25*e3ece3e3SAndrew Baumann 26*e3ece3e3SAndrew Baumann /* 64 GPU IRQs + 8 ARM IRQs = 72 total (GPU first) */ 27*e3ece3e3SAndrew Baumann uint64_t gpu_irq_level, gpu_irq_enable; 28*e3ece3e3SAndrew Baumann uint8_t arm_irq_level, arm_irq_enable; 29*e3ece3e3SAndrew Baumann bool fiq_enable; 30*e3ece3e3SAndrew Baumann uint8_t fiq_select; 31*e3ece3e3SAndrew Baumann } BCM2835ICState; 32*e3ece3e3SAndrew Baumann 33*e3ece3e3SAndrew Baumann #endif 34