fsl-imx25.c (9fc7fc4d3909817555ce0af6bcb69dff1606140d) fsl-imx25.c (db873cc5d1a4aaa67eea87768d504b2f89d88738)
1/*
2 * Copyright (c) 2013 Jean-Christophe Dubois <jcd@tribudubois.net>
3 *
4 * i.MX25 SOC emulation.
5 *
6 * Based on hw/arm/xlnx-zynqmp.c
7 *
8 * Copyright (C) 2015 Xilinx Inc

--- 26 unchanged lines hidden (view full) ---

35
36static void fsl_imx25_init(Object *obj)
37{
38 FslIMX25State *s = FSL_IMX25(obj);
39 int i;
40
41 object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm926"));
42
1/*
2 * Copyright (c) 2013 Jean-Christophe Dubois <jcd@tribudubois.net>
3 *
4 * i.MX25 SOC emulation.
5 *
6 * Based on hw/arm/xlnx-zynqmp.c
7 *
8 * Copyright (C) 2015 Xilinx Inc

--- 26 unchanged lines hidden (view full) ---

35
36static void fsl_imx25_init(Object *obj)
37{
38 FslIMX25State *s = FSL_IMX25(obj);
39 int i;
40
41 object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm926"));
42
43 sysbus_init_child_obj(obj, "avic", &s->avic, sizeof(s->avic),
44 TYPE_IMX_AVIC);
43 object_initialize_child(obj, "avic", &s->avic, TYPE_IMX_AVIC);
45
44
46 sysbus_init_child_obj(obj, "ccm", &s->ccm, sizeof(s->ccm), TYPE_IMX25_CCM);
45 object_initialize_child(obj, "ccm", &s->ccm, TYPE_IMX25_CCM);
47
48 for (i = 0; i < FSL_IMX25_NUM_UARTS; i++) {
46
47 for (i = 0; i < FSL_IMX25_NUM_UARTS; i++) {
49 sysbus_init_child_obj(obj, "uart[*]", &s->uart[i], sizeof(s->uart[i]),
50 TYPE_IMX_SERIAL);
48 object_initialize_child(obj, "uart[*]", &s->uart[i], TYPE_IMX_SERIAL);
51 }
52
53 for (i = 0; i < FSL_IMX25_NUM_GPTS; i++) {
49 }
50
51 for (i = 0; i < FSL_IMX25_NUM_GPTS; i++) {
54 sysbus_init_child_obj(obj, "gpt[*]", &s->gpt[i], sizeof(s->gpt[i]),
55 TYPE_IMX25_GPT);
52 object_initialize_child(obj, "gpt[*]", &s->gpt[i], TYPE_IMX25_GPT);
56 }
57
58 for (i = 0; i < FSL_IMX25_NUM_EPITS; i++) {
53 }
54
55 for (i = 0; i < FSL_IMX25_NUM_EPITS; i++) {
59 sysbus_init_child_obj(obj, "epit[*]", &s->epit[i], sizeof(s->epit[i]),
60 TYPE_IMX_EPIT);
56 object_initialize_child(obj, "epit[*]", &s->epit[i], TYPE_IMX_EPIT);
61 }
62
57 }
58
63 sysbus_init_child_obj(obj, "fec", &s->fec, sizeof(s->fec), TYPE_IMX_FEC);
59 object_initialize_child(obj, "fec", &s->fec, TYPE_IMX_FEC);
64
60
65 sysbus_init_child_obj(obj, "rngc", &s->rngc, sizeof(s->rngc),
66 TYPE_IMX_RNGC);
61 object_initialize_child(obj, "rngc", &s->rngc, TYPE_IMX_RNGC);
67
68 for (i = 0; i < FSL_IMX25_NUM_I2CS; i++) {
62
63 for (i = 0; i < FSL_IMX25_NUM_I2CS; i++) {
69 sysbus_init_child_obj(obj, "i2c[*]", &s->i2c[i], sizeof(s->i2c[i]),
70 TYPE_IMX_I2C);
64 object_initialize_child(obj, "i2c[*]", &s->i2c[i], TYPE_IMX_I2C);
71 }
72
73 for (i = 0; i < FSL_IMX25_NUM_GPIOS; i++) {
65 }
66
67 for (i = 0; i < FSL_IMX25_NUM_GPIOS; i++) {
74 sysbus_init_child_obj(obj, "gpio[*]", &s->gpio[i], sizeof(s->gpio[i]),
75 TYPE_IMX_GPIO);
68 object_initialize_child(obj, "gpio[*]", &s->gpio[i], TYPE_IMX_GPIO);
76 }
77
78 for (i = 0; i < FSL_IMX25_NUM_ESDHCS; i++) {
69 }
70
71 for (i = 0; i < FSL_IMX25_NUM_ESDHCS; i++) {
79 sysbus_init_child_obj(obj, "sdhc[*]", &s->esdhc[i], sizeof(s->esdhc[i]),
80 TYPE_IMX_USDHC);
72 object_initialize_child(obj, "sdhc[*]", &s->esdhc[i], TYPE_IMX_USDHC);
81 }
82
83 for (i = 0; i < FSL_IMX25_NUM_USBS; i++) {
73 }
74
75 for (i = 0; i < FSL_IMX25_NUM_USBS; i++) {
84 sysbus_init_child_obj(obj, "usb[*]", &s->usb[i], sizeof(s->usb[i]),
85 TYPE_CHIPIDEA);
76 object_initialize_child(obj, "usb[*]", &s->usb[i], TYPE_CHIPIDEA);
86 }
87
77 }
78
88 sysbus_init_child_obj(obj, "wdt", &s->wdt, sizeof(s->wdt), TYPE_IMX2_WDT);
79 object_initialize_child(obj, "wdt", &s->wdt, TYPE_IMX2_WDT);
89}
90
91static void fsl_imx25_realize(DeviceState *dev, Error **errp)
92{
93 FslIMX25State *s = FSL_IMX25(dev);
94 uint8_t i;
95 Error *err = NULL;
96
97 object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
98 if (err) {
99 error_propagate(errp, err);
100 return;
101 }
102
80}
81
82static void fsl_imx25_realize(DeviceState *dev, Error **errp)
83{
84 FslIMX25State *s = FSL_IMX25(dev);
85 uint8_t i;
86 Error *err = NULL;
87
88 object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err);
89 if (err) {
90 error_propagate(errp, err);
91 return;
92 }
93
103 object_property_set_bool(OBJECT(&s->avic), true, "realized", &err);
94 sysbus_realize(SYS_BUS_DEVICE(&s->avic), &err);
104 if (err) {
105 error_propagate(errp, err);
106 return;
107 }
108 sysbus_mmio_map(SYS_BUS_DEVICE(&s->avic), 0, FSL_IMX25_AVIC_ADDR);
109 sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 0,
110 qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_IRQ));
111 sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 1,
112 qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
113
95 if (err) {
96 error_propagate(errp, err);
97 return;
98 }
99 sysbus_mmio_map(SYS_BUS_DEVICE(&s->avic), 0, FSL_IMX25_AVIC_ADDR);
100 sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 0,
101 qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_IRQ));
102 sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 1,
103 qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ));
104
114 object_property_set_bool(OBJECT(&s->ccm), true, "realized", &err);
105 sysbus_realize(SYS_BUS_DEVICE(&s->ccm), &err);
115 if (err) {
116 error_propagate(errp, err);
117 return;
118 }
119 sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0, FSL_IMX25_CCM_ADDR);
120
121 /* Initialize all UARTs */
122 for (i = 0; i < FSL_IMX25_NUM_UARTS; i++) {

--- 5 unchanged lines hidden (view full) ---

128 { FSL_IMX25_UART2_ADDR, FSL_IMX25_UART2_IRQ },
129 { FSL_IMX25_UART3_ADDR, FSL_IMX25_UART3_IRQ },
130 { FSL_IMX25_UART4_ADDR, FSL_IMX25_UART4_IRQ },
131 { FSL_IMX25_UART5_ADDR, FSL_IMX25_UART5_IRQ }
132 };
133
134 qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i));
135
106 if (err) {
107 error_propagate(errp, err);
108 return;
109 }
110 sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0, FSL_IMX25_CCM_ADDR);
111
112 /* Initialize all UARTs */
113 for (i = 0; i < FSL_IMX25_NUM_UARTS; i++) {

--- 5 unchanged lines hidden (view full) ---

119 { FSL_IMX25_UART2_ADDR, FSL_IMX25_UART2_IRQ },
120 { FSL_IMX25_UART3_ADDR, FSL_IMX25_UART3_IRQ },
121 { FSL_IMX25_UART4_ADDR, FSL_IMX25_UART4_IRQ },
122 { FSL_IMX25_UART5_ADDR, FSL_IMX25_UART5_IRQ }
123 };
124
125 qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i));
126
136 object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &err);
127 sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), &err);
137 if (err) {
138 error_propagate(errp, err);
139 return;
140 }
141 sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].addr);
142 sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0,
143 qdev_get_gpio_in(DEVICE(&s->avic),
144 serial_table[i].irq));

--- 8 unchanged lines hidden (view full) ---

153 { FSL_IMX25_GPT1_ADDR, FSL_IMX25_GPT1_IRQ },
154 { FSL_IMX25_GPT2_ADDR, FSL_IMX25_GPT2_IRQ },
155 { FSL_IMX25_GPT3_ADDR, FSL_IMX25_GPT3_IRQ },
156 { FSL_IMX25_GPT4_ADDR, FSL_IMX25_GPT4_IRQ }
157 };
158
159 s->gpt[i].ccm = IMX_CCM(&s->ccm);
160
128 if (err) {
129 error_propagate(errp, err);
130 return;
131 }
132 sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].addr);
133 sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0,
134 qdev_get_gpio_in(DEVICE(&s->avic),
135 serial_table[i].irq));

--- 8 unchanged lines hidden (view full) ---

144 { FSL_IMX25_GPT1_ADDR, FSL_IMX25_GPT1_IRQ },
145 { FSL_IMX25_GPT2_ADDR, FSL_IMX25_GPT2_IRQ },
146 { FSL_IMX25_GPT3_ADDR, FSL_IMX25_GPT3_IRQ },
147 { FSL_IMX25_GPT4_ADDR, FSL_IMX25_GPT4_IRQ }
148 };
149
150 s->gpt[i].ccm = IMX_CCM(&s->ccm);
151
161 object_property_set_bool(OBJECT(&s->gpt[i]), true, "realized", &err);
152 sysbus_realize(SYS_BUS_DEVICE(&s->gpt[i]), &err);
162 if (err) {
163 error_propagate(errp, err);
164 return;
165 }
166 sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpt[i]), 0, gpt_table[i].addr);
167 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpt[i]), 0,
168 qdev_get_gpio_in(DEVICE(&s->avic),
169 gpt_table[i].irq));

--- 6 unchanged lines hidden (view full) ---

176 unsigned int irq;
177 } epit_table[FSL_IMX25_NUM_EPITS] = {
178 { FSL_IMX25_EPIT1_ADDR, FSL_IMX25_EPIT1_IRQ },
179 { FSL_IMX25_EPIT2_ADDR, FSL_IMX25_EPIT2_IRQ }
180 };
181
182 s->epit[i].ccm = IMX_CCM(&s->ccm);
183
153 if (err) {
154 error_propagate(errp, err);
155 return;
156 }
157 sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpt[i]), 0, gpt_table[i].addr);
158 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpt[i]), 0,
159 qdev_get_gpio_in(DEVICE(&s->avic),
160 gpt_table[i].irq));

--- 6 unchanged lines hidden (view full) ---

167 unsigned int irq;
168 } epit_table[FSL_IMX25_NUM_EPITS] = {
169 { FSL_IMX25_EPIT1_ADDR, FSL_IMX25_EPIT1_IRQ },
170 { FSL_IMX25_EPIT2_ADDR, FSL_IMX25_EPIT2_IRQ }
171 };
172
173 s->epit[i].ccm = IMX_CCM(&s->ccm);
174
184 object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", &err);
175 sysbus_realize(SYS_BUS_DEVICE(&s->epit[i]), &err);
185 if (err) {
186 error_propagate(errp, err);
187 return;
188 }
189 sysbus_mmio_map(SYS_BUS_DEVICE(&s->epit[i]), 0, epit_table[i].addr);
190 sysbus_connect_irq(SYS_BUS_DEVICE(&s->epit[i]), 0,
191 qdev_get_gpio_in(DEVICE(&s->avic),
192 epit_table[i].irq));
193 }
194
195 qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
196
176 if (err) {
177 error_propagate(errp, err);
178 return;
179 }
180 sysbus_mmio_map(SYS_BUS_DEVICE(&s->epit[i]), 0, epit_table[i].addr);
181 sysbus_connect_irq(SYS_BUS_DEVICE(&s->epit[i]), 0,
182 qdev_get_gpio_in(DEVICE(&s->avic),
183 epit_table[i].irq));
184 }
185
186 qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
187
197 object_property_set_bool(OBJECT(&s->fec), true, "realized", &err);
188 sysbus_realize(SYS_BUS_DEVICE(&s->fec), &err);
198 if (err) {
199 error_propagate(errp, err);
200 return;
201 }
202 sysbus_mmio_map(SYS_BUS_DEVICE(&s->fec), 0, FSL_IMX25_FEC_ADDR);
203 sysbus_connect_irq(SYS_BUS_DEVICE(&s->fec), 0,
204 qdev_get_gpio_in(DEVICE(&s->avic), FSL_IMX25_FEC_IRQ));
205
189 if (err) {
190 error_propagate(errp, err);
191 return;
192 }
193 sysbus_mmio_map(SYS_BUS_DEVICE(&s->fec), 0, FSL_IMX25_FEC_ADDR);
194 sysbus_connect_irq(SYS_BUS_DEVICE(&s->fec), 0,
195 qdev_get_gpio_in(DEVICE(&s->avic), FSL_IMX25_FEC_IRQ));
196
206 object_property_set_bool(OBJECT(&s->rngc), true, "realized", &err);
197 sysbus_realize(SYS_BUS_DEVICE(&s->rngc), &err);
207 if (err) {
208 error_propagate(errp, err);
209 return;
210 }
211 sysbus_mmio_map(SYS_BUS_DEVICE(&s->rngc), 0, FSL_IMX25_RNGC_ADDR);
212 sysbus_connect_irq(SYS_BUS_DEVICE(&s->rngc), 0,
213 qdev_get_gpio_in(DEVICE(&s->avic), FSL_IMX25_RNGC_IRQ));
214
215 /* Initialize all I2C */
216 for (i = 0; i < FSL_IMX25_NUM_I2CS; i++) {
217 static const struct {
218 hwaddr addr;
219 unsigned int irq;
220 } i2c_table[FSL_IMX25_NUM_I2CS] = {
221 { FSL_IMX25_I2C1_ADDR, FSL_IMX25_I2C1_IRQ },
222 { FSL_IMX25_I2C2_ADDR, FSL_IMX25_I2C2_IRQ },
223 { FSL_IMX25_I2C3_ADDR, FSL_IMX25_I2C3_IRQ }
224 };
225
198 if (err) {
199 error_propagate(errp, err);
200 return;
201 }
202 sysbus_mmio_map(SYS_BUS_DEVICE(&s->rngc), 0, FSL_IMX25_RNGC_ADDR);
203 sysbus_connect_irq(SYS_BUS_DEVICE(&s->rngc), 0,
204 qdev_get_gpio_in(DEVICE(&s->avic), FSL_IMX25_RNGC_IRQ));
205
206 /* Initialize all I2C */
207 for (i = 0; i < FSL_IMX25_NUM_I2CS; i++) {
208 static const struct {
209 hwaddr addr;
210 unsigned int irq;
211 } i2c_table[FSL_IMX25_NUM_I2CS] = {
212 { FSL_IMX25_I2C1_ADDR, FSL_IMX25_I2C1_IRQ },
213 { FSL_IMX25_I2C2_ADDR, FSL_IMX25_I2C2_IRQ },
214 { FSL_IMX25_I2C3_ADDR, FSL_IMX25_I2C3_IRQ }
215 };
216
226 object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", &err);
217 sysbus_realize(SYS_BUS_DEVICE(&s->i2c[i]), &err);
227 if (err) {
228 error_propagate(errp, err);
229 return;
230 }
231 sysbus_mmio_map(SYS_BUS_DEVICE(&s->i2c[i]), 0, i2c_table[i].addr);
232 sysbus_connect_irq(SYS_BUS_DEVICE(&s->i2c[i]), 0,
233 qdev_get_gpio_in(DEVICE(&s->avic),
234 i2c_table[i].irq));

--- 6 unchanged lines hidden (view full) ---

241 unsigned int irq;
242 } gpio_table[FSL_IMX25_NUM_GPIOS] = {
243 { FSL_IMX25_GPIO1_ADDR, FSL_IMX25_GPIO1_IRQ },
244 { FSL_IMX25_GPIO2_ADDR, FSL_IMX25_GPIO2_IRQ },
245 { FSL_IMX25_GPIO3_ADDR, FSL_IMX25_GPIO3_IRQ },
246 { FSL_IMX25_GPIO4_ADDR, FSL_IMX25_GPIO4_IRQ }
247 };
248
218 if (err) {
219 error_propagate(errp, err);
220 return;
221 }
222 sysbus_mmio_map(SYS_BUS_DEVICE(&s->i2c[i]), 0, i2c_table[i].addr);
223 sysbus_connect_irq(SYS_BUS_DEVICE(&s->i2c[i]), 0,
224 qdev_get_gpio_in(DEVICE(&s->avic),
225 i2c_table[i].irq));

--- 6 unchanged lines hidden (view full) ---

232 unsigned int irq;
233 } gpio_table[FSL_IMX25_NUM_GPIOS] = {
234 { FSL_IMX25_GPIO1_ADDR, FSL_IMX25_GPIO1_IRQ },
235 { FSL_IMX25_GPIO2_ADDR, FSL_IMX25_GPIO2_IRQ },
236 { FSL_IMX25_GPIO3_ADDR, FSL_IMX25_GPIO3_IRQ },
237 { FSL_IMX25_GPIO4_ADDR, FSL_IMX25_GPIO4_IRQ }
238 };
239
249 object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", &err);
240 sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), &err);
250 if (err) {
251 error_propagate(errp, err);
252 return;
253 }
254 sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpio[i]), 0, gpio_table[i].addr);
255 /* Connect GPIO IRQ to PIC */
256 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio[i]), 0,
257 qdev_get_gpio_in(DEVICE(&s->avic),

--- 9 unchanged lines hidden (view full) ---

267 { FSL_IMX25_ESDHC1_ADDR, FSL_IMX25_ESDHC1_IRQ },
268 { FSL_IMX25_ESDHC2_ADDR, FSL_IMX25_ESDHC2_IRQ },
269 };
270
271 object_property_set_uint(OBJECT(&s->esdhc[i]), 2, "sd-spec-version",
272 &err);
273 object_property_set_uint(OBJECT(&s->esdhc[i]), IMX25_ESDHC_CAPABILITIES,
274 "capareg", &err);
241 if (err) {
242 error_propagate(errp, err);
243 return;
244 }
245 sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpio[i]), 0, gpio_table[i].addr);
246 /* Connect GPIO IRQ to PIC */
247 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio[i]), 0,
248 qdev_get_gpio_in(DEVICE(&s->avic),

--- 9 unchanged lines hidden (view full) ---

258 { FSL_IMX25_ESDHC1_ADDR, FSL_IMX25_ESDHC1_IRQ },
259 { FSL_IMX25_ESDHC2_ADDR, FSL_IMX25_ESDHC2_IRQ },
260 };
261
262 object_property_set_uint(OBJECT(&s->esdhc[i]), 2, "sd-spec-version",
263 &err);
264 object_property_set_uint(OBJECT(&s->esdhc[i]), IMX25_ESDHC_CAPABILITIES,
265 "capareg", &err);
275 object_property_set_bool(OBJECT(&s->esdhc[i]), true, "realized", &err);
266 sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), &err);
276 if (err) {
277 error_propagate(errp, err);
278 return;
279 }
280 sysbus_mmio_map(SYS_BUS_DEVICE(&s->esdhc[i]), 0, esdhc_table[i].addr);
281 sysbus_connect_irq(SYS_BUS_DEVICE(&s->esdhc[i]), 0,
282 qdev_get_gpio_in(DEVICE(&s->avic),
283 esdhc_table[i].irq));

--- 4 unchanged lines hidden (view full) ---

288 static const struct {
289 hwaddr addr;
290 unsigned int irq;
291 } usb_table[FSL_IMX25_NUM_USBS] = {
292 { FSL_IMX25_USB1_ADDR, FSL_IMX25_USB1_IRQ },
293 { FSL_IMX25_USB2_ADDR, FSL_IMX25_USB2_IRQ },
294 };
295
267 if (err) {
268 error_propagate(errp, err);
269 return;
270 }
271 sysbus_mmio_map(SYS_BUS_DEVICE(&s->esdhc[i]), 0, esdhc_table[i].addr);
272 sysbus_connect_irq(SYS_BUS_DEVICE(&s->esdhc[i]), 0,
273 qdev_get_gpio_in(DEVICE(&s->avic),
274 esdhc_table[i].irq));

--- 4 unchanged lines hidden (view full) ---

279 static const struct {
280 hwaddr addr;
281 unsigned int irq;
282 } usb_table[FSL_IMX25_NUM_USBS] = {
283 { FSL_IMX25_USB1_ADDR, FSL_IMX25_USB1_IRQ },
284 { FSL_IMX25_USB2_ADDR, FSL_IMX25_USB2_IRQ },
285 };
286
296 object_property_set_bool(OBJECT(&s->usb[i]), true, "realized",
297 &error_abort);
287 sysbus_realize(SYS_BUS_DEVICE(&s->usb[i]), &error_abort);
298 sysbus_mmio_map(SYS_BUS_DEVICE(&s->usb[i]), 0, usb_table[i].addr);
299 sysbus_connect_irq(SYS_BUS_DEVICE(&s->usb[i]), 0,
300 qdev_get_gpio_in(DEVICE(&s->avic),
301 usb_table[i].irq));
302 }
303
304 /* Watchdog */
305 object_property_set_bool(OBJECT(&s->wdt), true, "pretimeout-support",
306 &error_abort);
288 sysbus_mmio_map(SYS_BUS_DEVICE(&s->usb[i]), 0, usb_table[i].addr);
289 sysbus_connect_irq(SYS_BUS_DEVICE(&s->usb[i]), 0,
290 qdev_get_gpio_in(DEVICE(&s->avic),
291 usb_table[i].irq));
292 }
293
294 /* Watchdog */
295 object_property_set_bool(OBJECT(&s->wdt), true, "pretimeout-support",
296 &error_abort);
307 object_property_set_bool(OBJECT(&s->wdt), true, "realized", &error_abort);
297 sysbus_realize(SYS_BUS_DEVICE(&s->wdt), &error_abort);
308 sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, FSL_IMX25_WDT_ADDR);
309 sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt), 0,
310 qdev_get_gpio_in(DEVICE(&s->avic),
311 FSL_IMX25_WDT_IRQ));
312
313 /* initialize 2 x 16 KB ROM */
314 memory_region_init_rom(&s->rom[0], OBJECT(dev), "imx25.rom0",
315 FSL_IMX25_ROM0_SIZE, &err);

--- 59 unchanged lines hidden ---
298 sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt), 0, FSL_IMX25_WDT_ADDR);
299 sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt), 0,
300 qdev_get_gpio_in(DEVICE(&s->avic),
301 FSL_IMX25_WDT_IRQ));
302
303 /* initialize 2 x 16 KB ROM */
304 memory_region_init_rom(&s->rom[0], OBJECT(dev), "imx25.rom0",
305 FSL_IMX25_ROM0_SIZE, &err);

--- 59 unchanged lines hidden ---