Revision 5a4348d1 hw/ppc/e500.c
b/hw/ppc/e500.c | ||
---|---|---|
108 | 108 |
char ser[128]; |
109 | 109 |
|
110 | 110 |
snprintf(ser, sizeof(ser), "%s/serial@%llx", soc, offset); |
111 |
qemu_devtree_add_subnode(fdt, ser);
|
|
112 |
qemu_devtree_setprop_string(fdt, ser, "device_type", "serial");
|
|
113 |
qemu_devtree_setprop_string(fdt, ser, "compatible", "ns16550");
|
|
114 |
qemu_devtree_setprop_cells(fdt, ser, "reg", offset, 0x100);
|
|
115 |
qemu_devtree_setprop_cell(fdt, ser, "cell-index", idx);
|
|
116 |
qemu_devtree_setprop_cell(fdt, ser, "clock-frequency", 0);
|
|
117 |
qemu_devtree_setprop_cells(fdt, ser, "interrupts", 42, 2);
|
|
118 |
qemu_devtree_setprop_phandle(fdt, ser, "interrupt-parent", mpic);
|
|
119 |
qemu_devtree_setprop_string(fdt, "/aliases", alias, ser);
|
|
111 |
qemu_fdt_add_subnode(fdt, ser);
|
|
112 |
qemu_fdt_setprop_string(fdt, ser, "device_type", "serial");
|
|
113 |
qemu_fdt_setprop_string(fdt, ser, "compatible", "ns16550");
|
|
114 |
qemu_fdt_setprop_cells(fdt, ser, "reg", offset, 0x100);
|
|
115 |
qemu_fdt_setprop_cell(fdt, ser, "cell-index", idx);
|
|
116 |
qemu_fdt_setprop_cell(fdt, ser, "clock-frequency", 0);
|
|
117 |
qemu_fdt_setprop_cells(fdt, ser, "interrupts", 42, 2);
|
|
118 |
qemu_fdt_setprop_phandle(fdt, ser, "interrupt-parent", mpic);
|
|
119 |
qemu_fdt_setprop_string(fdt, "/aliases", alias, ser);
|
|
120 | 120 |
|
121 | 121 |
if (defcon) { |
122 |
qemu_devtree_setprop_string(fdt, "/chosen", "linux,stdout-path", ser);
|
|
122 |
qemu_fdt_setprop_string(fdt, "/chosen", "linux,stdout-path", ser);
|
|
123 | 123 |
} |
124 | 124 |
} |
125 | 125 |
|
... | ... | |
183 | 183 |
} |
184 | 184 |
|
185 | 185 |
/* Manipulate device tree in memory. */ |
186 |
qemu_devtree_setprop_cell(fdt, "/", "#address-cells", 2);
|
|
187 |
qemu_devtree_setprop_cell(fdt, "/", "#size-cells", 2);
|
|
186 |
qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 2);
|
|
187 |
qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 2);
|
|
188 | 188 |
|
189 |
qemu_devtree_add_subnode(fdt, "/memory");
|
|
190 |
qemu_devtree_setprop_string(fdt, "/memory", "device_type", "memory");
|
|
191 |
qemu_devtree_setprop(fdt, "/memory", "reg", mem_reg_property,
|
|
192 |
sizeof(mem_reg_property));
|
|
189 |
qemu_fdt_add_subnode(fdt, "/memory");
|
|
190 |
qemu_fdt_setprop_string(fdt, "/memory", "device_type", "memory");
|
|
191 |
qemu_fdt_setprop(fdt, "/memory", "reg", mem_reg_property,
|
|
192 |
sizeof(mem_reg_property)); |
|
193 | 193 |
|
194 |
qemu_devtree_add_subnode(fdt, "/chosen");
|
|
194 |
qemu_fdt_add_subnode(fdt, "/chosen");
|
|
195 | 195 |
if (initrd_size) { |
196 |
ret = qemu_devtree_setprop_cell(fdt, "/chosen", "linux,initrd-start",
|
|
197 |
initrd_base);
|
|
196 |
ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
|
|
197 |
initrd_base); |
|
198 | 198 |
if (ret < 0) { |
199 | 199 |
fprintf(stderr, "couldn't set /chosen/linux,initrd-start\n"); |
200 | 200 |
} |
201 | 201 |
|
202 |
ret = qemu_devtree_setprop_cell(fdt, "/chosen", "linux,initrd-end",
|
|
203 |
(initrd_base + initrd_size));
|
|
202 |
ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
|
|
203 |
(initrd_base + initrd_size)); |
|
204 | 204 |
if (ret < 0) { |
205 | 205 |
fprintf(stderr, "couldn't set /chosen/linux,initrd-end\n"); |
206 | 206 |
} |
207 | 207 |
} |
208 | 208 |
|
209 |
ret = qemu_devtree_setprop_string(fdt, "/chosen", "bootargs",
|
|
209 |
ret = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
|
|
210 | 210 |
args->kernel_cmdline); |
211 | 211 |
if (ret < 0) |
212 | 212 |
fprintf(stderr, "couldn't set /chosen/bootargs\n"); |
... | ... | |
217 | 217 |
tb_freq = kvmppc_get_tbfreq(); |
218 | 218 |
|
219 | 219 |
/* indicate KVM hypercall interface */ |
220 |
qemu_devtree_add_subnode(fdt, "/hypervisor");
|
|
221 |
qemu_devtree_setprop_string(fdt, "/hypervisor", "compatible",
|
|
222 |
"linux,kvm");
|
|
220 |
qemu_fdt_add_subnode(fdt, "/hypervisor");
|
|
221 |
qemu_fdt_setprop_string(fdt, "/hypervisor", "compatible",
|
|
222 |
"linux,kvm"); |
|
223 | 223 |
kvmppc_get_hypercall(env, hypercall, sizeof(hypercall)); |
224 |
qemu_devtree_setprop(fdt, "/hypervisor", "hcall-instructions",
|
|
225 |
hypercall, sizeof(hypercall));
|
|
224 |
qemu_fdt_setprop(fdt, "/hypervisor", "hcall-instructions",
|
|
225 |
hypercall, sizeof(hypercall)); |
|
226 | 226 |
/* if KVM supports the idle hcall, set property indicating this */ |
227 | 227 |
if (kvmppc_get_hasidle(env)) { |
228 |
qemu_devtree_setprop(fdt, "/hypervisor", "has-idle", NULL, 0);
|
|
228 |
qemu_fdt_setprop(fdt, "/hypervisor", "has-idle", NULL, 0);
|
|
229 | 229 |
} |
230 | 230 |
} |
231 | 231 |
|
232 | 232 |
/* Create CPU nodes */ |
233 |
qemu_devtree_add_subnode(fdt, "/cpus");
|
|
234 |
qemu_devtree_setprop_cell(fdt, "/cpus", "#address-cells", 1);
|
|
235 |
qemu_devtree_setprop_cell(fdt, "/cpus", "#size-cells", 0);
|
|
233 |
qemu_fdt_add_subnode(fdt, "/cpus");
|
|
234 |
qemu_fdt_setprop_cell(fdt, "/cpus", "#address-cells", 1);
|
|
235 |
qemu_fdt_setprop_cell(fdt, "/cpus", "#size-cells", 0);
|
|
236 | 236 |
|
237 | 237 |
/* We need to generate the cpu nodes in reverse order, so Linux can pick |
238 | 238 |
the first node as boot node and be happy */ |
... | ... | |
249 | 249 |
|
250 | 250 |
snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,8544@%x", |
251 | 251 |
cpu->cpu_index); |
252 |
qemu_devtree_add_subnode(fdt, cpu_name);
|
|
253 |
qemu_devtree_setprop_cell(fdt, cpu_name, "clock-frequency", clock_freq);
|
|
254 |
qemu_devtree_setprop_cell(fdt, cpu_name, "timebase-frequency", tb_freq);
|
|
255 |
qemu_devtree_setprop_string(fdt, cpu_name, "device_type", "cpu");
|
|
256 |
qemu_devtree_setprop_cell(fdt, cpu_name, "reg", cpu->cpu_index);
|
|
257 |
qemu_devtree_setprop_cell(fdt, cpu_name, "d-cache-line-size",
|
|
258 |
env->dcache_line_size);
|
|
259 |
qemu_devtree_setprop_cell(fdt, cpu_name, "i-cache-line-size",
|
|
260 |
env->icache_line_size);
|
|
261 |
qemu_devtree_setprop_cell(fdt, cpu_name, "d-cache-size", 0x8000);
|
|
262 |
qemu_devtree_setprop_cell(fdt, cpu_name, "i-cache-size", 0x8000);
|
|
263 |
qemu_devtree_setprop_cell(fdt, cpu_name, "bus-frequency", 0);
|
|
252 |
qemu_fdt_add_subnode(fdt, cpu_name);
|
|
253 |
qemu_fdt_setprop_cell(fdt, cpu_name, "clock-frequency", clock_freq);
|
|
254 |
qemu_fdt_setprop_cell(fdt, cpu_name, "timebase-frequency", tb_freq);
|
|
255 |
qemu_fdt_setprop_string(fdt, cpu_name, "device_type", "cpu");
|
|
256 |
qemu_fdt_setprop_cell(fdt, cpu_name, "reg", cpu->cpu_index);
|
|
257 |
qemu_fdt_setprop_cell(fdt, cpu_name, "d-cache-line-size",
|
|
258 |
env->dcache_line_size); |
|
259 |
qemu_fdt_setprop_cell(fdt, cpu_name, "i-cache-line-size",
|
|
260 |
env->icache_line_size); |
|
261 |
qemu_fdt_setprop_cell(fdt, cpu_name, "d-cache-size", 0x8000);
|
|
262 |
qemu_fdt_setprop_cell(fdt, cpu_name, "i-cache-size", 0x8000);
|
|
263 |
qemu_fdt_setprop_cell(fdt, cpu_name, "bus-frequency", 0);
|
|
264 | 264 |
if (cpu->cpu_index) { |
265 |
qemu_devtree_setprop_string(fdt, cpu_name, "status", "disabled"); |
|
266 |
qemu_devtree_setprop_string(fdt, cpu_name, "enable-method", "spin-table"); |
|
267 |
qemu_devtree_setprop_u64(fdt, cpu_name, "cpu-release-addr", |
|
268 |
cpu_release_addr); |
|
265 |
qemu_fdt_setprop_string(fdt, cpu_name, "status", "disabled"); |
|
266 |
qemu_fdt_setprop_string(fdt, cpu_name, "enable-method", |
|
267 |
"spin-table"); |
|
268 |
qemu_fdt_setprop_u64(fdt, cpu_name, "cpu-release-addr", |
|
269 |
cpu_release_addr); |
|
269 | 270 |
} else { |
270 |
qemu_devtree_setprop_string(fdt, cpu_name, "status", "okay");
|
|
271 |
qemu_fdt_setprop_string(fdt, cpu_name, "status", "okay");
|
|
271 | 272 |
} |
272 | 273 |
} |
273 | 274 |
|
274 |
qemu_devtree_add_subnode(fdt, "/aliases");
|
|
275 |
qemu_fdt_add_subnode(fdt, "/aliases");
|
|
275 | 276 |
/* XXX These should go into their respective devices' code */ |
276 | 277 |
snprintf(soc, sizeof(soc), "/soc@%llx", MPC8544_CCSRBAR_BASE); |
277 |
qemu_devtree_add_subnode(fdt, soc);
|
|
278 |
qemu_devtree_setprop_string(fdt, soc, "device_type", "soc");
|
|
279 |
qemu_devtree_setprop(fdt, soc, "compatible", compatible_sb,
|
|
280 |
sizeof(compatible_sb));
|
|
281 |
qemu_devtree_setprop_cell(fdt, soc, "#address-cells", 1);
|
|
282 |
qemu_devtree_setprop_cell(fdt, soc, "#size-cells", 1);
|
|
283 |
qemu_devtree_setprop_cells(fdt, soc, "ranges", 0x0,
|
|
284 |
MPC8544_CCSRBAR_BASE >> 32, MPC8544_CCSRBAR_BASE,
|
|
285 |
MPC8544_CCSRBAR_SIZE);
|
|
278 |
qemu_fdt_add_subnode(fdt, soc);
|
|
279 |
qemu_fdt_setprop_string(fdt, soc, "device_type", "soc");
|
|
280 |
qemu_fdt_setprop(fdt, soc, "compatible", compatible_sb,
|
|
281 |
sizeof(compatible_sb)); |
|
282 |
qemu_fdt_setprop_cell(fdt, soc, "#address-cells", 1);
|
|
283 |
qemu_fdt_setprop_cell(fdt, soc, "#size-cells", 1);
|
|
284 |
qemu_fdt_setprop_cells(fdt, soc, "ranges", 0x0,
|
|
285 |
MPC8544_CCSRBAR_BASE >> 32, MPC8544_CCSRBAR_BASE, |
|
286 |
MPC8544_CCSRBAR_SIZE); |
|
286 | 287 |
/* XXX should contain a reasonable value */ |
287 |
qemu_devtree_setprop_cell(fdt, soc, "bus-frequency", 0);
|
|
288 |
qemu_fdt_setprop_cell(fdt, soc, "bus-frequency", 0);
|
|
288 | 289 |
|
289 | 290 |
snprintf(mpic, sizeof(mpic), "%s/pic@%llx", soc, MPC8544_MPIC_REGS_OFFSET); |
290 |
qemu_devtree_add_subnode(fdt, mpic);
|
|
291 |
qemu_devtree_setprop_string(fdt, mpic, "device_type", "open-pic");
|
|
292 |
qemu_devtree_setprop_string(fdt, mpic, "compatible", "fsl,mpic");
|
|
293 |
qemu_devtree_setprop_cells(fdt, mpic, "reg", MPC8544_MPIC_REGS_OFFSET,
|
|
294 |
0x40000);
|
|
295 |
qemu_devtree_setprop_cell(fdt, mpic, "#address-cells", 0);
|
|
296 |
qemu_devtree_setprop_cell(fdt, mpic, "#interrupt-cells", 2);
|
|
297 |
mpic_ph = qemu_devtree_alloc_phandle(fdt);
|
|
298 |
qemu_devtree_setprop_cell(fdt, mpic, "phandle", mpic_ph);
|
|
299 |
qemu_devtree_setprop_cell(fdt, mpic, "linux,phandle", mpic_ph);
|
|
300 |
qemu_devtree_setprop(fdt, mpic, "interrupt-controller", NULL, 0);
|
|
291 |
qemu_fdt_add_subnode(fdt, mpic);
|
|
292 |
qemu_fdt_setprop_string(fdt, mpic, "device_type", "open-pic");
|
|
293 |
qemu_fdt_setprop_string(fdt, mpic, "compatible", "fsl,mpic");
|
|
294 |
qemu_fdt_setprop_cells(fdt, mpic, "reg", MPC8544_MPIC_REGS_OFFSET,
|
|
295 |
0x40000); |
|
296 |
qemu_fdt_setprop_cell(fdt, mpic, "#address-cells", 0);
|
|
297 |
qemu_fdt_setprop_cell(fdt, mpic, "#interrupt-cells", 2);
|
|
298 |
mpic_ph = qemu_fdt_alloc_phandle(fdt);
|
|
299 |
qemu_fdt_setprop_cell(fdt, mpic, "phandle", mpic_ph);
|
|
300 |
qemu_fdt_setprop_cell(fdt, mpic, "linux,phandle", mpic_ph);
|
|
301 |
qemu_fdt_setprop(fdt, mpic, "interrupt-controller", NULL, 0);
|
|
301 | 302 |
|
302 | 303 |
/* |
303 | 304 |
* We have to generate ser1 first, because Linux takes the first |
... | ... | |
311 | 312 |
|
312 | 313 |
snprintf(gutil, sizeof(gutil), "%s/global-utilities@%llx", soc, |
313 | 314 |
MPC8544_UTIL_OFFSET); |
314 |
qemu_devtree_add_subnode(fdt, gutil);
|
|
315 |
qemu_devtree_setprop_string(fdt, gutil, "compatible", "fsl,mpc8544-guts");
|
|
316 |
qemu_devtree_setprop_cells(fdt, gutil, "reg", MPC8544_UTIL_OFFSET, 0x1000);
|
|
317 |
qemu_devtree_setprop(fdt, gutil, "fsl,has-rstcr", NULL, 0);
|
|
315 |
qemu_fdt_add_subnode(fdt, gutil);
|
|
316 |
qemu_fdt_setprop_string(fdt, gutil, "compatible", "fsl,mpc8544-guts");
|
|
317 |
qemu_fdt_setprop_cells(fdt, gutil, "reg", MPC8544_UTIL_OFFSET, 0x1000);
|
|
318 |
qemu_fdt_setprop(fdt, gutil, "fsl,has-rstcr", NULL, 0);
|
|
318 | 319 |
|
319 | 320 |
snprintf(msi, sizeof(msi), "/%s/msi@%llx", soc, MPC8544_MSI_REGS_OFFSET); |
320 |
qemu_devtree_add_subnode(fdt, msi);
|
|
321 |
qemu_devtree_setprop_string(fdt, msi, "compatible", "fsl,mpic-msi");
|
|
322 |
qemu_devtree_setprop_cells(fdt, msi, "reg", MPC8544_MSI_REGS_OFFSET, 0x200);
|
|
323 |
msi_ph = qemu_devtree_alloc_phandle(fdt);
|
|
324 |
qemu_devtree_setprop_cells(fdt, msi, "msi-available-ranges", 0x0, 0x100);
|
|
325 |
qemu_devtree_setprop_phandle(fdt, msi, "interrupt-parent", mpic);
|
|
326 |
qemu_devtree_setprop_cells(fdt, msi, "interrupts",
|
|
321 |
qemu_fdt_add_subnode(fdt, msi);
|
|
322 |
qemu_fdt_setprop_string(fdt, msi, "compatible", "fsl,mpic-msi");
|
|
323 |
qemu_fdt_setprop_cells(fdt, msi, "reg", MPC8544_MSI_REGS_OFFSET, 0x200);
|
|
324 |
msi_ph = qemu_fdt_alloc_phandle(fdt);
|
|
325 |
qemu_fdt_setprop_cells(fdt, msi, "msi-available-ranges", 0x0, 0x100);
|
|
326 |
qemu_fdt_setprop_phandle(fdt, msi, "interrupt-parent", mpic);
|
|
327 |
qemu_fdt_setprop_cells(fdt, msi, "interrupts",
|
|
327 | 328 |
0xe0, 0x0, |
328 | 329 |
0xe1, 0x0, |
329 | 330 |
0xe2, 0x0, |
... | ... | |
332 | 333 |
0xe5, 0x0, |
333 | 334 |
0xe6, 0x0, |
334 | 335 |
0xe7, 0x0); |
335 |
qemu_devtree_setprop_cell(fdt, msi, "phandle", msi_ph);
|
|
336 |
qemu_devtree_setprop_cell(fdt, msi, "linux,phandle", msi_ph);
|
|
336 |
qemu_fdt_setprop_cell(fdt, msi, "phandle", msi_ph);
|
|
337 |
qemu_fdt_setprop_cell(fdt, msi, "linux,phandle", msi_ph);
|
|
337 | 338 |
|
338 | 339 |
snprintf(pci, sizeof(pci), "/pci@%llx", MPC8544_PCI_REGS_BASE); |
339 |
qemu_devtree_add_subnode(fdt, pci);
|
|
340 |
qemu_devtree_setprop_cell(fdt, pci, "cell-index", 0);
|
|
341 |
qemu_devtree_setprop_string(fdt, pci, "compatible", "fsl,mpc8540-pci");
|
|
342 |
qemu_devtree_setprop_string(fdt, pci, "device_type", "pci");
|
|
343 |
qemu_devtree_setprop_cells(fdt, pci, "interrupt-map-mask", 0xf800, 0x0,
|
|
344 |
0x0, 0x7);
|
|
345 |
pci_map = pci_map_create(fdt, qemu_devtree_get_phandle(fdt, mpic),
|
|
340 |
qemu_fdt_add_subnode(fdt, pci);
|
|
341 |
qemu_fdt_setprop_cell(fdt, pci, "cell-index", 0);
|
|
342 |
qemu_fdt_setprop_string(fdt, pci, "compatible", "fsl,mpc8540-pci");
|
|
343 |
qemu_fdt_setprop_string(fdt, pci, "device_type", "pci");
|
|
344 |
qemu_fdt_setprop_cells(fdt, pci, "interrupt-map-mask", 0xf800, 0x0,
|
|
345 |
0x0, 0x7); |
|
346 |
pci_map = pci_map_create(fdt, qemu_fdt_get_phandle(fdt, mpic),
|
|
346 | 347 |
params->pci_first_slot, params->pci_nr_slots, |
347 | 348 |
&len); |
348 |
qemu_devtree_setprop(fdt, pci, "interrupt-map", pci_map, len);
|
|
349 |
qemu_devtree_setprop_phandle(fdt, pci, "interrupt-parent", mpic);
|
|
350 |
qemu_devtree_setprop_cells(fdt, pci, "interrupts", 24, 2);
|
|
351 |
qemu_devtree_setprop_cells(fdt, pci, "bus-range", 0, 255);
|
|
349 |
qemu_fdt_setprop(fdt, pci, "interrupt-map", pci_map, len);
|
|
350 |
qemu_fdt_setprop_phandle(fdt, pci, "interrupt-parent", mpic);
|
|
351 |
qemu_fdt_setprop_cells(fdt, pci, "interrupts", 24, 2);
|
|
352 |
qemu_fdt_setprop_cells(fdt, pci, "bus-range", 0, 255);
|
|
352 | 353 |
for (i = 0; i < 14; i++) { |
353 | 354 |
pci_ranges[i] = cpu_to_be32(pci_ranges[i]); |
354 | 355 |
} |
355 |
qemu_devtree_setprop_cell(fdt, pci, "fsl,msi", msi_ph);
|
|
356 |
qemu_devtree_setprop(fdt, pci, "ranges", pci_ranges, sizeof(pci_ranges));
|
|
357 |
qemu_devtree_setprop_cells(fdt, pci, "reg", MPC8544_PCI_REGS_BASE >> 32,
|
|
358 |
MPC8544_PCI_REGS_BASE, 0, 0x1000);
|
|
359 |
qemu_devtree_setprop_cell(fdt, pci, "clock-frequency", 66666666);
|
|
360 |
qemu_devtree_setprop_cell(fdt, pci, "#interrupt-cells", 1);
|
|
361 |
qemu_devtree_setprop_cell(fdt, pci, "#size-cells", 2);
|
|
362 |
qemu_devtree_setprop_cell(fdt, pci, "#address-cells", 3);
|
|
363 |
qemu_devtree_setprop_string(fdt, "/aliases", "pci0", pci);
|
|
356 |
qemu_fdt_setprop_cell(fdt, pci, "fsl,msi", msi_ph);
|
|
357 |
qemu_fdt_setprop(fdt, pci, "ranges", pci_ranges, sizeof(pci_ranges));
|
|
358 |
qemu_fdt_setprop_cells(fdt, pci, "reg", MPC8544_PCI_REGS_BASE >> 32,
|
|
359 |
MPC8544_PCI_REGS_BASE, 0, 0x1000); |
|
360 |
qemu_fdt_setprop_cell(fdt, pci, "clock-frequency", 66666666);
|
|
361 |
qemu_fdt_setprop_cell(fdt, pci, "#interrupt-cells", 1);
|
|
362 |
qemu_fdt_setprop_cell(fdt, pci, "#size-cells", 2);
|
|
363 |
qemu_fdt_setprop_cell(fdt, pci, "#address-cells", 3);
|
|
364 |
qemu_fdt_setprop_string(fdt, "/aliases", "pci0", pci);
|
|
364 | 365 |
|
365 | 366 |
params->fixup_devtree(params, fdt); |
366 | 367 |
|
367 | 368 |
if (toplevel_compat) { |
368 |
qemu_devtree_setprop(fdt, "/", "compatible", toplevel_compat,
|
|
369 |
strlen(toplevel_compat) + 1);
|
|
369 |
qemu_fdt_setprop(fdt, "/", "compatible", toplevel_compat,
|
|
370 |
strlen(toplevel_compat) + 1); |
|
370 | 371 |
} |
371 | 372 |
|
372 | 373 |
done: |
373 | 374 |
if (!dry_run) { |
374 |
qemu_devtree_dumpdtb(fdt, fdt_size);
|
|
375 |
qemu_fdt_dumpdtb(fdt, fdt_size);
|
|
375 | 376 |
cpu_physical_memory_write(addr, fdt, fdt_size); |
376 | 377 |
} |
377 | 378 |
ret = fdt_size; |
Also available in: Unified diff