xref: /qemu/include/hw/intc/loongarch_extioi.h (revision fea46db1c7f3b7cd3df92e871c10a6b85a872041)
1cbff2db1SXiaojuan Yang /* SPDX-License-Identifier: GPL-2.0-or-later */
2cbff2db1SXiaojuan Yang /*
3cbff2db1SXiaojuan Yang  * LoongArch 3A5000 ext interrupt controller definitions
4cbff2db1SXiaojuan Yang  *
5cbff2db1SXiaojuan Yang  * Copyright (C) 2021 Loongson Technology Corporation Limited
6cbff2db1SXiaojuan Yang  */
7cbff2db1SXiaojuan Yang 
8cbff2db1SXiaojuan Yang #ifndef LOONGARCH_EXTIOI_H
9cbff2db1SXiaojuan Yang #define LOONGARCH_EXTIOI_H
10cbff2db1SXiaojuan Yang 
11*fea46db1SBibo Mao #include "hw/intc/loongarch_extioi_common.h"
12dc6f37ebSSong Gao 
1310a8f7d2SBibo Mao typedef struct ExtIOICore {
1410a8f7d2SBibo Mao     uint32_t coreisr[EXTIOI_IRQS_GROUP_COUNT];
1510a8f7d2SBibo Mao     DECLARE_BITMAP(sw_isr[LS3A_INTC_IP], EXTIOI_IRQS);
1610a8f7d2SBibo Mao     qemu_irq parent_irq[LS3A_INTC_IP];
1710a8f7d2SBibo Mao } ExtIOICore;
1810a8f7d2SBibo Mao 
19cbff2db1SXiaojuan Yang #define TYPE_LOONGARCH_EXTIOI "loongarch.extioi"
20cbff2db1SXiaojuan Yang OBJECT_DECLARE_SIMPLE_TYPE(LoongArchExtIOI, LOONGARCH_EXTIOI)
21cbff2db1SXiaojuan Yang struct LoongArchExtIOI {
22cbff2db1SXiaojuan Yang     SysBusDevice parent_obj;
2310a8f7d2SBibo Mao     uint32_t num_cpu;
24dc6f37ebSSong Gao     uint32_t features;
25dc6f37ebSSong Gao     uint32_t status;
26cbff2db1SXiaojuan Yang     /* hardware state */
27cbff2db1SXiaojuan Yang     uint32_t nodetype[EXTIOI_IRQS_NODETYPE_COUNT / 2];
28cbff2db1SXiaojuan Yang     uint32_t bounce[EXTIOI_IRQS_GROUP_COUNT];
29cbff2db1SXiaojuan Yang     uint32_t isr[EXTIOI_IRQS / 32];
30cbff2db1SXiaojuan Yang     uint32_t enable[EXTIOI_IRQS / 32];
31cbff2db1SXiaojuan Yang     uint32_t ipmap[EXTIOI_IRQS_IPMAP_SIZE / 4];
32cbff2db1SXiaojuan Yang     uint32_t coremap[EXTIOI_IRQS / 4];
33cbff2db1SXiaojuan Yang     uint32_t sw_pending[EXTIOI_IRQS / 32];
34cbff2db1SXiaojuan Yang     uint8_t  sw_ipmap[EXTIOI_IRQS_IPMAP_SIZE];
35cbff2db1SXiaojuan Yang     uint8_t  sw_coremap[EXTIOI_IRQS];
36cbff2db1SXiaojuan Yang     qemu_irq irq[EXTIOI_IRQS];
3710a8f7d2SBibo Mao     ExtIOICore *cpu;
38cbff2db1SXiaojuan Yang     MemoryRegion extioi_system_mem;
39dc6f37ebSSong Gao     MemoryRegion virt_extend;
40cbff2db1SXiaojuan Yang };
41cbff2db1SXiaojuan Yang #endif /* LOONGARCH_EXTIOI_H */
42