Edgar E. Iglesias | 6a8b1ae | 2009-05-20 20:16:11 +0200 | [diff] [blame] | 1 | |
| 2 | /* OPB Interrupt Controller. */ |
| 3 | qemu_irq *microblaze_pic_init_cpu(CPUState *env); |
| 4 | |
| 5 | static inline DeviceState * |
Anthony Liguori | c227f09 | 2009-10-01 16:12:16 -0500 | [diff] [blame] | 6 | xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr) |
Edgar E. Iglesias | 6a8b1ae | 2009-05-20 20:16:11 +0200 | [diff] [blame] | 7 | { |
| 8 | DeviceState *dev; |
| 9 | |
| 10 | dev = qdev_create(NULL, "xilinx,intc"); |
Gerd Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 11 | qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr); |
Markus Armbruster | e23a1b3 | 2009-10-07 01:15:58 +0200 | [diff] [blame] | 12 | qdev_init_nofail(dev); |
Edgar E. Iglesias | 6a8b1ae | 2009-05-20 20:16:11 +0200 | [diff] [blame] | 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 * |
Anthony Liguori | c227f09 | 2009-10-01 16:12:16 -0500 | [diff] [blame] | 20 | xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int nr, int freq) |
Edgar E. Iglesias | 6a8b1ae | 2009-05-20 20:16:11 +0200 | [diff] [blame] | 21 | { |
| 22 | DeviceState *dev; |
| 23 | |
| 24 | dev = qdev_create(NULL, "xilinx,timer"); |
Gerd Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 25 | qdev_prop_set_uint32(dev, "nr-timers", nr); |
| 26 | qdev_prop_set_uint32(dev, "frequency", freq); |
Markus Armbruster | e23a1b3 | 2009-10-07 01:15:58 +0200 | [diff] [blame] | 27 | qdev_init_nofail(dev); |
Edgar E. Iglesias | 6a8b1ae | 2009-05-20 20:16:11 +0200 | [diff] [blame] | 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 * |
Anthony Liguori | c227f09 | 2009-10-01 16:12:16 -0500 | [diff] [blame] | 35 | xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq, |
Edgar E. Iglesias | 6a8b1ae | 2009-05-20 20:16:11 +0200 | [diff] [blame] | 36 | 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 Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 43 | dev->nd = nd; |
| 44 | qdev_prop_set_uint32(dev, "txpingpong", txpingpong); |
| 45 | qdev_prop_set_uint32(dev, "rxpingpong", rxpingpong); |
Markus Armbruster | e23a1b3 | 2009-10-07 01:15:58 +0200 | [diff] [blame] | 46 | qdev_init_nofail(dev); |
Edgar E. Iglesias | 6a8b1ae | 2009-05-20 20:16:11 +0200 | [diff] [blame] | 47 | sysbus_mmio_map(sysbus_from_qdev(dev), 0, base); |
| 48 | sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq); |
| 49 | return dev; |
| 50 | } |