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