xref: /qemu/include/hw/intc/xlnx-pmu-iomod-intc.h (revision 58ea30f5145fc8c7ebb80ee0b0c812a3a958c762)
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 
25*58ea30f5SMarkus Armbruster #ifndef HW_INTC_XLNX_PMU_IOMOD_INTC_H
26*58ea30f5SMarkus Armbruster #define HW_INTC_XLNX_PMU_IOMOD_INTC_H
27c859b566SAlistair Francis 
28c859b566SAlistair Francis #include "hw/sysbus.h"
29c859b566SAlistair Francis #include "hw/register.h"
30c859b566SAlistair Francis 
31c859b566SAlistair Francis #define TYPE_XLNX_PMU_IO_INTC "xlnx.pmu_io_intc"
32c859b566SAlistair Francis 
33c859b566SAlistair Francis #define XLNX_PMU_IO_INTC(obj) \
34c859b566SAlistair Francis      OBJECT_CHECK(XlnxPMUIOIntc, (obj), TYPE_XLNX_PMU_IO_INTC)
35c859b566SAlistair Francis 
36c859b566SAlistair Francis /* This is R_PIT3_CONTROL + 1 */
37c859b566SAlistair Francis #define XLNXPMUIOINTC_R_MAX (0x78 + 1)
38c859b566SAlistair Francis 
39c859b566SAlistair Francis typedef 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];
55c859b566SAlistair Francis } XlnxPMUIOIntc;
56c859b566SAlistair Francis 
57*58ea30f5SMarkus Armbruster #endif /* HW_INTC_XLNX_PMU_IOMOD_INTC_H */
58