Statistics
| Branch: | Revision:

root / hw / xilinx.h @ 2558e0a6

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
}