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