xref: /qemu/include/hw/dma/xlnx-zynq-devcfg.h (revision 034c2e69023007ac855a86ab5d91591f70506a62)
1*034c2e69SAlistair Francis /*
2*034c2e69SAlistair Francis  * QEMU model of the Xilinx Devcfg Interface
3*034c2e69SAlistair Francis  *
4*034c2e69SAlistair Francis  * (C) 2011 PetaLogix Pty Ltd
5*034c2e69SAlistair Francis  * (C) 2014 Xilinx Inc.
6*034c2e69SAlistair Francis  * Written by Peter Crosthwaite <peter.crosthwaite@xilinx.com>
7*034c2e69SAlistair Francis  *
8*034c2e69SAlistair Francis  * Permission is hereby granted, free of charge, to any person obtaining a copy
9*034c2e69SAlistair Francis  * of this software and associated documentation files (the "Software"), to deal
10*034c2e69SAlistair Francis  * in the Software without restriction, including without limitation the rights
11*034c2e69SAlistair Francis  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12*034c2e69SAlistair Francis  * copies of the Software, and to permit persons to whom the Software is
13*034c2e69SAlistair Francis  * furnished to do so, subject to the following conditions:
14*034c2e69SAlistair Francis  *
15*034c2e69SAlistair Francis  * The above copyright notice and this permission notice shall be included in
16*034c2e69SAlistair Francis  * all copies or substantial portions of the Software.
17*034c2e69SAlistair Francis  *
18*034c2e69SAlistair Francis  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19*034c2e69SAlistair Francis  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20*034c2e69SAlistair Francis  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21*034c2e69SAlistair Francis  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22*034c2e69SAlistair Francis  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23*034c2e69SAlistair Francis  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24*034c2e69SAlistair Francis  * THE SOFTWARE.
25*034c2e69SAlistair Francis  */
26*034c2e69SAlistair Francis 
27*034c2e69SAlistair Francis #ifndef XLNX_ZYNQ_DEVCFG_H
28*034c2e69SAlistair Francis 
29*034c2e69SAlistair Francis #include "hw/register.h"
30*034c2e69SAlistair Francis #include "hw/sysbus.h"
31*034c2e69SAlistair Francis 
32*034c2e69SAlistair Francis #define TYPE_XLNX_ZYNQ_DEVCFG "xlnx.ps7-dev-cfg"
33*034c2e69SAlistair Francis 
34*034c2e69SAlistair Francis #define XLNX_ZYNQ_DEVCFG(obj) \
35*034c2e69SAlistair Francis     OBJECT_CHECK(XlnxZynqDevcfg, (obj), TYPE_XLNX_ZYNQ_DEVCFG)
36*034c2e69SAlistair Francis 
37*034c2e69SAlistair Francis #define XLNX_ZYNQ_DEVCFG_R_MAX 0x118
38*034c2e69SAlistair Francis 
39*034c2e69SAlistair Francis #define XLNX_ZYNQ_DEVCFG_DMA_CMD_FIFO_LEN 10
40*034c2e69SAlistair Francis 
41*034c2e69SAlistair Francis typedef struct XlnxZynqDevcfgDMACmd {
42*034c2e69SAlistair Francis     uint32_t src_addr;
43*034c2e69SAlistair Francis     uint32_t dest_addr;
44*034c2e69SAlistair Francis     uint32_t src_len;
45*034c2e69SAlistair Francis     uint32_t dest_len;
46*034c2e69SAlistair Francis } XlnxZynqDevcfgDMACmd;
47*034c2e69SAlistair Francis 
48*034c2e69SAlistair Francis typedef struct XlnxZynqDevcfg {
49*034c2e69SAlistair Francis     SysBusDevice parent_obj;
50*034c2e69SAlistair Francis 
51*034c2e69SAlistair Francis     MemoryRegion iomem;
52*034c2e69SAlistair Francis     qemu_irq irq;
53*034c2e69SAlistair Francis 
54*034c2e69SAlistair Francis     XlnxZynqDevcfgDMACmd dma_cmd_fifo[XLNX_ZYNQ_DEVCFG_DMA_CMD_FIFO_LEN];
55*034c2e69SAlistair Francis     uint8_t dma_cmd_fifo_num;
56*034c2e69SAlistair Francis 
57*034c2e69SAlistair Francis     uint32_t regs[XLNX_ZYNQ_DEVCFG_R_MAX];
58*034c2e69SAlistair Francis     RegisterInfo regs_info[XLNX_ZYNQ_DEVCFG_R_MAX];
59*034c2e69SAlistair Francis } XlnxZynqDevcfg;
60*034c2e69SAlistair Francis 
61*034c2e69SAlistair Francis #define XLNX_ZYNQ_DEVCFG_H
62*034c2e69SAlistair Francis #endif
63