Statistics
| Branch: | Revision:

root / hw / xilinx.h @ 00914b7d

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
}