xref: /qemu/include/hw/intc/bcm2835_ic.h (revision e3ece3e34d912bcca13e552def3dd9bec2ad5d32)
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