/* * ASPEED INTC Controller * * Copyright (C) 2024 ASPEED Technology Inc. * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef ASPEED_INTC_H #define ASPEED_INTC_H #include "hw/sysbus.h" #include "qom/object.h" #include "hw/or-irq.h" #define TYPE_ASPEED_INTC "aspeed.intc" #define TYPE_ASPEED_2700_INTC TYPE_ASPEED_INTC "-ast2700" OBJECT_DECLARE_TYPE(AspeedINTCState, AspeedINTCClass, ASPEED_INTC) #define ASPEED_INTC_NR_REGS (0x2000 >> 2) #define ASPEED_INTC_NR_INTS 9 struct AspeedINTCState { /*< private >*/ SysBusDevice parent_obj; /*< public >*/ MemoryRegion iomem; uint32_t regs[ASPEED_INTC_NR_REGS]; OrIRQState orgates[ASPEED_INTC_NR_INTS]; qemu_irq output_pins[ASPEED_INTC_NR_INTS]; uint32_t enable[ASPEED_INTC_NR_INTS]; uint32_t mask[ASPEED_INTC_NR_INTS]; uint32_t pending[ASPEED_INTC_NR_INTS]; }; struct AspeedINTCClass { SysBusDeviceClass parent_class; uint32_t num_lines; uint32_t num_ints; }; #endif /* ASPEED_INTC_H */