/*
 * Raspberry Pi emulation (c) 2012 Gregory Estrade
 *
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
 * See the COPYING file in the top-level directory.
 */

#ifndef BCM2835_IC_H
#define BCM2835_IC_H

#include "hw/sysbus.h"

#define TYPE_BCM2835_IC "bcm2835-ic"
#define BCM2835_IC(obj) OBJECT_CHECK(BCM2835ICState, (obj), TYPE_BCM2835_IC)

#define BCM2835_IC_GPU_IRQ "gpu-irq"
#define BCM2835_IC_ARM_IRQ "arm-irq"

typedef struct BCM2835ICState {
    /*< private >*/
    SysBusDevice busdev;
    /*< public >*/

    MemoryRegion iomem;
    qemu_irq irq;
    qemu_irq fiq;

    /* 64 GPU IRQs + 8 ARM IRQs = 72 total (GPU first) */
    uint64_t gpu_irq_level, gpu_irq_enable;
    uint8_t arm_irq_level, arm_irq_enable;
    bool fiq_enable;
    uint8_t fiq_select;
} BCM2835ICState;

#endif
