]>
Commit | Line | Data |
---|---|---|
669b4983 | 1 | #include "stream.h" |
0d877c66 PC |
2 | #include "qemu-common.h" |
3 | #include "net.h" | |
6a8b1ae2 | 4 | |
6a8b1ae2 | 5 | static inline DeviceState * |
c227f099 | 6 | xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr) |
6a8b1ae2 EI |
7 | { |
8 | DeviceState *dev; | |
9 | ||
24739ab4 | 10 | dev = qdev_create(NULL, "xlnx.xps-intc"); |
ee6847d1 | 11 | qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr); |
e23a1b33 | 12 | qdev_init_nofail(dev); |
6a8b1ae2 EI |
13 | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base); |
14 | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq); | |
15 | return dev; | |
16 | } | |
17 | ||
18 | /* OPB Timer/Counter. */ | |
19 | static inline DeviceState * | |
abe098e4 | 20 | xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int oto, int freq) |
6a8b1ae2 EI |
21 | { |
22 | DeviceState *dev; | |
23 | ||
34129550 | 24 | dev = qdev_create(NULL, "xlnx.xps-timer"); |
abe098e4 | 25 | qdev_prop_set_uint32(dev, "one-timer-only", oto); |
ee6847d1 | 26 | qdev_prop_set_uint32(dev, "frequency", freq); |
e23a1b33 | 27 | qdev_init_nofail(dev); |
6a8b1ae2 EI |
28 | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base); |
29 | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq); | |
30 | return dev; | |
31 | } | |
32 | ||
33 | /* XPS Ethernet Lite MAC. */ | |
34 | static inline DeviceState * | |
c227f099 | 35 | xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq, |
6a8b1ae2 EI |
36 | int txpingpong, int rxpingpong) |
37 | { | |
38 | DeviceState *dev; | |
39 | ||
7f4d6755 | 40 | qemu_check_nic_model(nd, "xlnx.xps-ethernetlite"); |
6a8b1ae2 | 41 | |
7f4d6755 | 42 | dev = qdev_create(NULL, "xlnx.xps-ethernetlite"); |
17d1ae3c | 43 | qdev_set_nic_properties(dev, nd); |
b2d85c34 PC |
44 | qdev_prop_set_uint32(dev, "tx-ping-pong", txpingpong); |
45 | qdev_prop_set_uint32(dev, "rx-ping-pong", rxpingpong); | |
e23a1b33 | 46 | qdev_init_nofail(dev); |
6a8b1ae2 EI |
47 | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base); |
48 | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq); | |
49 | return dev; | |
50 | } | |
00914b7d MS |
51 | |
52 | static inline DeviceState * | |
669b4983 PC |
53 | xilinx_axiethernet_create(NICInfo *nd, StreamSlave *peer, |
54 | target_phys_addr_t base, qemu_irq irq, | |
00914b7d MS |
55 | int txmem, int rxmem) |
56 | { | |
57 | DeviceState *dev; | |
85368b79 PC |
58 | Error *errp = NULL; |
59 | ||
cec6f8ca | 60 | qemu_check_nic_model(nd, "xlnx.axi-ethernet"); |
00914b7d | 61 | |
cec6f8ca | 62 | dev = qdev_create(NULL, "xlnx.axi-ethernet"); |
00914b7d | 63 | qdev_set_nic_properties(dev, nd); |
ab034c26 PC |
64 | qdev_prop_set_uint32(dev, "rxmem", rxmem); |
65 | qdev_prop_set_uint32(dev, "txmem", txmem); | |
85368b79 PC |
66 | object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", &errp); |
67 | assert_no_error(errp); | |
00914b7d MS |
68 | qdev_init_nofail(dev); |
69 | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base); | |
70 | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq); | |
71 | ||
72 | return dev; | |
73 | } | |
74 | ||
669b4983 PC |
75 | static inline void |
76 | xilinx_axiethernetdma_init(DeviceState *dev, StreamSlave *peer, | |
77 | target_phys_addr_t base, qemu_irq irq, | |
78 | qemu_irq irq2, int freqhz) | |
00914b7d | 79 | { |
85368b79 PC |
80 | Error *errp = NULL; |
81 | ||
00914b7d | 82 | qdev_prop_set_uint32(dev, "freqhz", freqhz); |
85368b79 PC |
83 | object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", &errp); |
84 | assert_no_error(errp); | |
00914b7d MS |
85 | qdev_init_nofail(dev); |
86 | ||
87 | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base); | |
d85ba787 PC |
88 | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq); |
89 | sysbus_connect_irq(sysbus_from_qdev(dev), 1, irq2); | |
00914b7d | 90 | } |