]> Git Repo - qemu.git/blob - hw/xilinx.h
spapr_pci: QOM'ify sPAPR PCI host bridge
[qemu.git] / hw / xilinx.h
1 #include "stream.h"
2 #include "qemu-common.h"
3 #include "net.h"
4
5 static inline DeviceState *
6 xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr)
7 {
8     DeviceState *dev;
9
10     dev = qdev_create(NULL, "xlnx.xps-intc");
11     qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
12     qdev_init_nofail(dev);
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 *
20 xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int oto, int freq)
21 {
22     DeviceState *dev;
23
24     dev = qdev_create(NULL, "xlnx,xps-timer");
25     qdev_prop_set_uint32(dev, "one-timer-only", oto);
26     qdev_prop_set_uint32(dev, "frequency", freq);
27     qdev_init_nofail(dev);
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 *
35 xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
36                       int txpingpong, int rxpingpong)
37 {
38     DeviceState *dev;
39
40     qemu_check_nic_model(nd, "xlnx.xps-ethernetlite");
41
42     dev = qdev_create(NULL, "xlnx.xps-ethernetlite");
43     qdev_set_nic_properties(dev, nd);
44     qdev_prop_set_uint32(dev, "tx-ping-pong", txpingpong);
45     qdev_prop_set_uint32(dev, "rx-ping-pong", rxpingpong);
46     qdev_init_nofail(dev);
47     sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
48     sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
49     return dev;
50 }
51
52 static inline DeviceState *
53 xilinx_axiethernet_create(NICInfo *nd, StreamSlave *peer,
54                           target_phys_addr_t base, qemu_irq irq,
55                           int txmem, int rxmem)
56 {
57     DeviceState *dev;
58     qemu_check_nic_model(nd, "xlnx.axi-ethernet");
59
60     dev = qdev_create(NULL, "xlnx.axi-ethernet");
61     qdev_set_nic_properties(dev, nd);
62     qdev_prop_set_uint32(dev, "rxmem", rxmem);
63     qdev_prop_set_uint32(dev, "txmem", txmem);
64     object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", NULL);
65     qdev_init_nofail(dev);
66     sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
67     sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
68
69     return dev;
70 }
71
72 static inline void
73 xilinx_axiethernetdma_init(DeviceState *dev, StreamSlave *peer,
74                            target_phys_addr_t base, qemu_irq irq,
75                            qemu_irq irq2, int freqhz)
76 {
77     qdev_prop_set_uint32(dev, "freqhz", freqhz);
78     object_property_set_link(OBJECT(dev), OBJECT(peer), "tx_dev", NULL);
79     qdev_init_nofail(dev);
80
81     sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
82     sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
83     sysbus_connect_irq(sysbus_from_qdev(dev), 1, irq2);
84 }
This page took 0.026289 seconds and 4 git commands to generate.