blob: 5e6aeeaf69120ee5e8c586cf8e6a760f56e49e58 [file] [log] [blame]
Edgar E. Iglesias6a8b1ae2009-05-20 20:16:11 +02001
2/* OPB Interrupt Controller. */
3qemu_irq *microblaze_pic_init_cpu(CPUState *env);
4
5static inline DeviceState *
Anthony Liguoric227f092009-10-01 16:12:16 -05006xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr)
Edgar E. Iglesias6a8b1ae2009-05-20 20:16:11 +02007{
8 DeviceState *dev;
9
10 dev = qdev_create(NULL, "xilinx,intc");
Gerd Hoffmannee6847d2009-07-15 13:43:31 +020011 qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
Markus Armbrustere23a1b32009-10-07 01:15:58 +020012 qdev_init_nofail(dev);
Edgar E. Iglesias6a8b1ae2009-05-20 20:16:11 +020013 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. */
19static inline DeviceState *
Anthony Liguoric227f092009-10-01 16:12:16 -050020xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int nr, int freq)
Edgar E. Iglesias6a8b1ae2009-05-20 20:16:11 +020021{
22 DeviceState *dev;
23
24 dev = qdev_create(NULL, "xilinx,timer");
Gerd Hoffmannee6847d2009-07-15 13:43:31 +020025 qdev_prop_set_uint32(dev, "nr-timers", nr);
26 qdev_prop_set_uint32(dev, "frequency", freq);
Markus Armbrustere23a1b32009-10-07 01:15:58 +020027 qdev_init_nofail(dev);
Edgar E. Iglesias6a8b1ae2009-05-20 20:16:11 +020028 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. */
34static inline DeviceState *
Anthony Liguoric227f092009-10-01 16:12:16 -050035xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
Edgar E. Iglesias6a8b1ae2009-05-20 20:16:11 +020036 int txpingpong, int rxpingpong)
37{
38 DeviceState *dev;
39
40 qemu_check_nic_model(nd, "xilinx-ethlite");
41
42 dev = qdev_create(NULL, "xilinx,ethlite");
Gerd Hoffmannee6847d2009-07-15 13:43:31 +020043 dev->nd = nd;
44 qdev_prop_set_uint32(dev, "txpingpong", txpingpong);
45 qdev_prop_set_uint32(dev, "rxpingpong", rxpingpong);
Markus Armbrustere23a1b32009-10-07 01:15:58 +020046 qdev_init_nofail(dev);
Edgar E. Iglesias6a8b1ae2009-05-20 20:16:11 +020047 sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
48 sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
49 return dev;
50}