linux-user: handle /proc/$$ like /proc/self
[qemu/ar7.git] / include / hw / xilinx.h
blob0c0251a2e9ff8757f26bc3aa13606131c262206c
1 #ifndef HW_XILINX_H
2 #define HW_XILINX_H 1
5 #include "qemu-common.h"
6 #include "qapi/qmp/qerror.h"
7 #include "hw/stream.h"
8 #include "net/net.h"
10 static inline DeviceState *
11 xilinx_intc_create(hwaddr base, qemu_irq irq, int kind_of_intr)
13 DeviceState *dev;
15 dev = qdev_create(NULL, "xlnx.xps-intc");
16 qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
17 qdev_init_nofail(dev);
18 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
19 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq);
20 return dev;
23 /* OPB Timer/Counter. */
24 static inline DeviceState *
25 xilinx_timer_create(hwaddr base, qemu_irq irq, int oto, int freq)
27 DeviceState *dev;
29 dev = qdev_create(NULL, "xlnx.xps-timer");
30 qdev_prop_set_uint32(dev, "one-timer-only", oto);
31 qdev_prop_set_uint32(dev, "clock-frequency", freq);
32 qdev_init_nofail(dev);
33 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
34 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq);
35 return dev;
38 /* XPS Ethernet Lite MAC. */
39 static inline DeviceState *
40 xilinx_ethlite_create(NICInfo *nd, hwaddr base, qemu_irq irq,
41 int txpingpong, int rxpingpong)
43 DeviceState *dev;
45 qemu_check_nic_model(nd, "xlnx.xps-ethernetlite");
47 dev = qdev_create(NULL, "xlnx.xps-ethernetlite");
48 qdev_set_nic_properties(dev, nd);
49 qdev_prop_set_uint32(dev, "tx-ping-pong", txpingpong);
50 qdev_prop_set_uint32(dev, "rx-ping-pong", rxpingpong);
51 qdev_init_nofail(dev);
52 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
53 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq);
54 return dev;
57 static inline void
58 xilinx_axiethernet_init(DeviceState *dev, NICInfo *nd, StreamSlave *ds,
59 StreamSlave *cs, hwaddr base, qemu_irq irq, int txmem,
60 int rxmem)
62 Error *errp = NULL;
64 qdev_set_nic_properties(dev, nd);
65 qdev_prop_set_uint32(dev, "rxmem", rxmem);
66 qdev_prop_set_uint32(dev, "txmem", txmem);
67 object_property_set_link(OBJECT(dev), OBJECT(ds),
68 "axistream-connected", &errp);
69 object_property_set_link(OBJECT(dev), OBJECT(cs),
70 "axistream-control-connected", &errp);
71 assert_no_error(errp);
72 qdev_init_nofail(dev);
73 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
74 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq);
77 static inline void
78 xilinx_axidma_init(DeviceState *dev, StreamSlave *ds, StreamSlave *cs,
79 hwaddr base, qemu_irq irq, qemu_irq irq2, int freqhz)
81 Error *errp = NULL;
83 qdev_prop_set_uint32(dev, "freqhz", freqhz);
84 object_property_set_link(OBJECT(dev), OBJECT(ds),
85 "axistream-connected", &errp);
86 object_property_set_link(OBJECT(dev), OBJECT(cs),
87 "axistream-control-connected", &errp);
88 assert_no_error(errp);
89 qdev_init_nofail(dev);
91 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
92 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq);
93 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, irq2);
96 #endif