xref: /qemu/include/hw/intc/xlnx-pmu-iomod-intc.h (revision 4dad0a9aa818698e0735c8352bf7925a1660df6f)
1c859b566SAlistair Francis /*
2c859b566SAlistair Francis  * QEMU model of Xilinx I/O Module Interrupt Controller
3c859b566SAlistair Francis  *
4c859b566SAlistair Francis  * Copyright (c) 2014 Xilinx Inc.
5c859b566SAlistair Francis  *
6c859b566SAlistair Francis  * Permission is hereby granted, free of charge, to any person obtaining a copy
7c859b566SAlistair Francis  * of this software and associated documentation files (the "Software"), to deal
8c859b566SAlistair Francis  * in the Software without restriction, including without limitation the rights
9c859b566SAlistair Francis  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10c859b566SAlistair Francis  * copies of the Software, and to permit persons to whom the Software is
11c859b566SAlistair Francis  * furnished to do so, subject to the following conditions:
12c859b566SAlistair Francis  *
13c859b566SAlistair Francis  * The above copyright notice and this permission notice shall be included in
14c859b566SAlistair Francis  * all copies or substantial portions of the Software.
15c859b566SAlistair Francis  *
16c859b566SAlistair Francis  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17c859b566SAlistair Francis  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18c859b566SAlistair Francis  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19c859b566SAlistair Francis  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20c859b566SAlistair Francis  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21c859b566SAlistair Francis  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22c859b566SAlistair Francis  * THE SOFTWARE.
23c859b566SAlistair Francis  */
24c859b566SAlistair Francis 
2558ea30f5SMarkus Armbruster #ifndef HW_INTC_XLNX_PMU_IOMOD_INTC_H
2658ea30f5SMarkus Armbruster #define HW_INTC_XLNX_PMU_IOMOD_INTC_H
27c859b566SAlistair Francis 
28c859b566SAlistair Francis #include "hw/sysbus.h"
29c859b566SAlistair Francis #include "hw/register.h"
30db1015e9SEduardo Habkost #include "qom/object.h"
31c859b566SAlistair Francis 
32c859b566SAlistair Francis #define TYPE_XLNX_PMU_IO_INTC "xlnx.pmu_io_intc"
33c859b566SAlistair Francis 
34*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(XlnxPMUIOIntc, XLNX_PMU_IO_INTC)
35c859b566SAlistair Francis 
36c859b566SAlistair Francis /* This is R_PIT3_CONTROL + 1 */
37c859b566SAlistair Francis #define XLNXPMUIOINTC_R_MAX (0x78 + 1)
38c859b566SAlistair Francis 
39db1015e9SEduardo Habkost struct XlnxPMUIOIntc {
40c859b566SAlistair Francis     SysBusDevice parent_obj;
41c859b566SAlistair Francis     MemoryRegion iomem;
42c859b566SAlistair Francis 
43c859b566SAlistair Francis     qemu_irq parent_irq;
44c859b566SAlistair Francis 
45c859b566SAlistair Francis     struct {
46c859b566SAlistair Francis         uint32_t intr_size;
47c859b566SAlistair Francis         uint32_t level_edge;
48c859b566SAlistair Francis         uint32_t positive;
49c859b566SAlistair Francis     } cfg;
50c859b566SAlistair Francis 
51c859b566SAlistair Francis     uint32_t irq_raw;
52c859b566SAlistair Francis 
53c859b566SAlistair Francis     uint32_t regs[XLNXPMUIOINTC_R_MAX];
54c859b566SAlistair Francis     RegisterInfo regs_info[XLNXPMUIOINTC_R_MAX];
55db1015e9SEduardo Habkost };
56c859b566SAlistair Francis 
5758ea30f5SMarkus Armbruster #endif /* HW_INTC_XLNX_PMU_IOMOD_INTC_H */
58