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