root / hw / xilinx.h @ df182043
History | View | Annotate | Download (2.7 kB)
1 | 0d877c66 | Peter A. G. Crosthwaite | #include "qemu-common.h" |
---|---|---|---|
2 | 0d877c66 | Peter A. G. Crosthwaite | #include "net.h" |
3 | 6a8b1ae2 | Edgar E. Iglesias | |
4 | 6a8b1ae2 | Edgar E. Iglesias | static inline DeviceState * |
5 | c227f099 | Anthony Liguori | xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr)
|
6 | 6a8b1ae2 | Edgar E. Iglesias | { |
7 | 6a8b1ae2 | Edgar E. Iglesias | DeviceState *dev; |
8 | 6a8b1ae2 | Edgar E. Iglesias | |
9 | 6a8b1ae2 | Edgar E. Iglesias | dev = qdev_create(NULL, "xilinx,intc"); |
10 | ee6847d1 | Gerd Hoffmann | qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
|
11 | e23a1b33 | Markus Armbruster | qdev_init_nofail(dev); |
12 | 6a8b1ae2 | Edgar E. Iglesias | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
|
13 | 6a8b1ae2 | Edgar E. Iglesias | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
|
14 | 6a8b1ae2 | Edgar E. Iglesias | return dev;
|
15 | 6a8b1ae2 | Edgar E. Iglesias | } |
16 | 6a8b1ae2 | Edgar E. Iglesias | |
17 | 6a8b1ae2 | Edgar E. Iglesias | /* OPB Timer/Counter. */
|
18 | 6a8b1ae2 | Edgar E. Iglesias | static inline DeviceState * |
19 | c227f099 | Anthony Liguori | xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int nr, int freq) |
20 | 6a8b1ae2 | Edgar E. Iglesias | { |
21 | 6a8b1ae2 | Edgar E. Iglesias | DeviceState *dev; |
22 | 6a8b1ae2 | Edgar E. Iglesias | |
23 | 6a8b1ae2 | Edgar E. Iglesias | dev = qdev_create(NULL, "xilinx,timer"); |
24 | ee6847d1 | Gerd Hoffmann | qdev_prop_set_uint32(dev, "nr-timers", nr);
|
25 | ee6847d1 | Gerd Hoffmann | qdev_prop_set_uint32(dev, "frequency", freq);
|
26 | e23a1b33 | Markus Armbruster | qdev_init_nofail(dev); |
27 | 6a8b1ae2 | Edgar E. Iglesias | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
|
28 | 6a8b1ae2 | Edgar E. Iglesias | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
|
29 | 6a8b1ae2 | Edgar E. Iglesias | return dev;
|
30 | 6a8b1ae2 | Edgar E. Iglesias | } |
31 | 6a8b1ae2 | Edgar E. Iglesias | |
32 | 6a8b1ae2 | Edgar E. Iglesias | /* XPS Ethernet Lite MAC. */
|
33 | 6a8b1ae2 | Edgar E. Iglesias | static inline DeviceState * |
34 | c227f099 | Anthony Liguori | xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq, |
35 | 6a8b1ae2 | Edgar E. Iglesias | int txpingpong, int rxpingpong) |
36 | 6a8b1ae2 | Edgar E. Iglesias | { |
37 | 6a8b1ae2 | Edgar E. Iglesias | DeviceState *dev; |
38 | 6a8b1ae2 | Edgar E. Iglesias | |
39 | 6a8b1ae2 | Edgar E. Iglesias | qemu_check_nic_model(nd, "xilinx-ethlite");
|
40 | 6a8b1ae2 | Edgar E. Iglesias | |
41 | 6a8b1ae2 | Edgar E. Iglesias | dev = qdev_create(NULL, "xilinx,ethlite"); |
42 | 17d1ae3c | Gerd Hoffmann | qdev_set_nic_properties(dev, nd); |
43 | ee6847d1 | Gerd Hoffmann | qdev_prop_set_uint32(dev, "txpingpong", txpingpong);
|
44 | ee6847d1 | Gerd Hoffmann | qdev_prop_set_uint32(dev, "rxpingpong", rxpingpong);
|
45 | e23a1b33 | Markus Armbruster | qdev_init_nofail(dev); |
46 | 6a8b1ae2 | Edgar E. Iglesias | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
|
47 | 6a8b1ae2 | Edgar E. Iglesias | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
|
48 | 6a8b1ae2 | Edgar E. Iglesias | return dev;
|
49 | 6a8b1ae2 | Edgar E. Iglesias | } |
50 | 00914b7d | Michal Simek | |
51 | 00914b7d | Michal Simek | static inline DeviceState * |
52 | 00914b7d | Michal Simek | xilinx_axiethernet_create(void *dmach,
|
53 | 00914b7d | Michal Simek | NICInfo *nd, target_phys_addr_t base, qemu_irq irq, |
54 | 00914b7d | Michal Simek | int txmem, int rxmem) |
55 | 00914b7d | Michal Simek | { |
56 | 00914b7d | Michal Simek | DeviceState *dev; |
57 | 00914b7d | Michal Simek | qemu_check_nic_model(nd, "xilinx-axienet");
|
58 | 00914b7d | Michal Simek | |
59 | 00914b7d | Michal Simek | dev = qdev_create(NULL, "xilinx,axienet"); |
60 | 00914b7d | Michal Simek | qdev_set_nic_properties(dev, nd); |
61 | 00914b7d | Michal Simek | qdev_prop_set_uint32(dev, "c_rxmem", rxmem);
|
62 | 00914b7d | Michal Simek | qdev_prop_set_uint32(dev, "c_txmem", txmem);
|
63 | 00914b7d | Michal Simek | qdev_prop_set_ptr(dev, "dmach", dmach);
|
64 | 00914b7d | Michal Simek | qdev_init_nofail(dev); |
65 | 00914b7d | Michal Simek | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
|
66 | 00914b7d | Michal Simek | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
|
67 | 00914b7d | Michal Simek | |
68 | 00914b7d | Michal Simek | return dev;
|
69 | 00914b7d | Michal Simek | } |
70 | 00914b7d | Michal Simek | |
71 | 00914b7d | Michal Simek | static inline DeviceState * |
72 | 00914b7d | Michal Simek | xilinx_axiethernetdma_create(void *dmach,
|
73 | 00914b7d | Michal Simek | target_phys_addr_t base, qemu_irq irq, |
74 | 00914b7d | Michal Simek | qemu_irq irq2, int freqhz)
|
75 | 00914b7d | Michal Simek | { |
76 | 00914b7d | Michal Simek | DeviceState *dev = NULL;
|
77 | 00914b7d | Michal Simek | |
78 | 00914b7d | Michal Simek | dev = qdev_create(NULL, "xilinx,axidma"); |
79 | 00914b7d | Michal Simek | qdev_prop_set_uint32(dev, "freqhz", freqhz);
|
80 | 00914b7d | Michal Simek | qdev_prop_set_ptr(dev, "dmach", dmach);
|
81 | 00914b7d | Michal Simek | qdev_init_nofail(dev); |
82 | 00914b7d | Michal Simek | |
83 | 00914b7d | Michal Simek | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
|
84 | 00914b7d | Michal Simek | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq2);
|
85 | 00914b7d | Michal Simek | sysbus_connect_irq(sysbus_from_qdev(dev), 1, irq);
|
86 | 00914b7d | Michal Simek | |
87 | 00914b7d | Michal Simek | return dev;
|
88 | 00914b7d | Michal Simek | } |