]> git.proxmox.com Git - qemu.git/blame - hw/xilinx.h
hw/pc.c: add ULL suffix in ioport80_read and ioportF0_read return value
[qemu.git] / hw / xilinx.h
CommitLineData
cb9c377f
PB
1#ifndef HW_XILINX_H
2#define HW_XILINX_H 1
3
4
669b4983 5#include "stream.h"
0d877c66 6#include "qemu-common.h"
1422e32d 7#include "net/net.h"
6a8b1ae2 8
6a8b1ae2 9static inline DeviceState *
a8170e5e 10xilinx_intc_create(hwaddr base, qemu_irq irq, int kind_of_intr)
6a8b1ae2
EI
11{
12 DeviceState *dev;
13
24739ab4 14 dev = qdev_create(NULL, "xlnx.xps-intc");
ee6847d1 15 qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
e23a1b33 16 qdev_init_nofail(dev);
6a8b1ae2
EI
17 sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
18 sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
19 return dev;
20}
21
22/* OPB Timer/Counter. */
23static inline DeviceState *
a8170e5e 24xilinx_timer_create(hwaddr base, qemu_irq irq, int oto, int freq)
6a8b1ae2
EI
25{
26 DeviceState *dev;
27
c0a1dcb9 28 dev = qdev_create(NULL, "xlnx.xps-timer");
abe098e4 29 qdev_prop_set_uint32(dev, "one-timer-only", oto);
919f89f4 30 qdev_prop_set_uint32(dev, "clock-frequency", freq);
e23a1b33 31 qdev_init_nofail(dev);
6a8b1ae2
EI
32 sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
33 sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
34 return dev;
35}
36
37/* XPS Ethernet Lite MAC. */
38static inline DeviceState *
a8170e5e 39xilinx_ethlite_create(NICInfo *nd, hwaddr base, qemu_irq irq,
6a8b1ae2
EI
40 int txpingpong, int rxpingpong)
41{
42 DeviceState *dev;
43
7f4d6755 44 qemu_check_nic_model(nd, "xlnx.xps-ethernetlite");
6a8b1ae2 45
7f4d6755 46 dev = qdev_create(NULL, "xlnx.xps-ethernetlite");
17d1ae3c 47 qdev_set_nic_properties(dev, nd);
b2d85c34
PC
48 qdev_prop_set_uint32(dev, "tx-ping-pong", txpingpong);
49 qdev_prop_set_uint32(dev, "rx-ping-pong", rxpingpong);
e23a1b33 50 qdev_init_nofail(dev);
6a8b1ae2
EI
51 sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
52 sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
53 return dev;
54}
00914b7d
MS
55
56static inline DeviceState *
669b4983 57xilinx_axiethernet_create(NICInfo *nd, StreamSlave *peer,
a8170e5e 58 hwaddr base, qemu_irq irq,
00914b7d
MS
59 int txmem, int rxmem)
60{
61 DeviceState *dev;
4b5e5210
PC
62 Error *errp = NULL;
63
cec6f8ca 64 qemu_check_nic_model(nd, "xlnx.axi-ethernet");
00914b7d 65
cec6f8ca 66 dev = qdev_create(NULL, "xlnx.axi-ethernet");
00914b7d 67 qdev_set_nic_properties(dev, nd);
ab034c26
PC
68 qdev_prop_set_uint32(dev, "rxmem", rxmem);
69 qdev_prop_set_uint32(dev, "txmem", txmem);
c9b6e1f6
PC
70 object_property_set_link(OBJECT(dev), OBJECT(peer), "axistream-connected",
71 &errp);
4b5e5210 72 assert_no_error(errp);
00914b7d
MS
73 qdev_init_nofail(dev);
74 sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
75 sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
76
77 return dev;
78}
79
669b4983
PC
80static inline void
81xilinx_axiethernetdma_init(DeviceState *dev, StreamSlave *peer,
a8170e5e 82 hwaddr base, qemu_irq irq,
669b4983 83 qemu_irq irq2, int freqhz)
00914b7d 84{
4b5e5210
PC
85 Error *errp = NULL;
86
00914b7d 87 qdev_prop_set_uint32(dev, "freqhz", freqhz);
c9b6e1f6
PC
88 object_property_set_link(OBJECT(dev), OBJECT(peer), "axistream-connected",
89 &errp);
4b5e5210 90 assert_no_error(errp);
00914b7d
MS
91 qdev_init_nofail(dev);
92
93 sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
d85ba787
PC
94 sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
95 sysbus_connect_irq(sysbus_from_qdev(dev), 1, irq2);
00914b7d 96}
cb9c377f
PB
97
98#endif