Lines Matching refs:fdt
90 static uint32_t *pci_map_create(void *fdt, uint32_t mpic, int first_slot, in pci_map_create() argument
121 static void dt_serial_create(void *fdt, unsigned long long offset, in dt_serial_create() argument
128 qemu_fdt_add_subnode(fdt, ser); in dt_serial_create()
129 qemu_fdt_setprop_string(fdt, ser, "device_type", "serial"); in dt_serial_create()
130 qemu_fdt_setprop_string(fdt, ser, "compatible", "ns16550"); in dt_serial_create()
131 qemu_fdt_setprop_cells(fdt, ser, "reg", offset, 0x100); in dt_serial_create()
132 qemu_fdt_setprop_cell(fdt, ser, "cell-index", idx); in dt_serial_create()
133 qemu_fdt_setprop_cell(fdt, ser, "clock-frequency", PLATFORM_CLK_FREQ_HZ); in dt_serial_create()
134 qemu_fdt_setprop_cells(fdt, ser, "interrupts", 42, 2); in dt_serial_create()
135 qemu_fdt_setprop_phandle(fdt, ser, "interrupt-parent", mpic); in dt_serial_create()
136 qemu_fdt_setprop_string(fdt, "/aliases", alias, ser); in dt_serial_create()
145 qemu_fdt_setprop_string(fdt, "/chosen", "linux,stdout-path", ser); in dt_serial_create()
146 qemu_fdt_setprop_string(fdt, "/chosen", "stdout-path", ser); in dt_serial_create()
151 static void create_dt_mpc8xxx_gpio(void *fdt, const char *soc, const char *mpic) in create_dt_mpc8xxx_gpio() argument
159 qemu_fdt_add_subnode(fdt, node); in create_dt_mpc8xxx_gpio()
160 qemu_fdt_setprop_string(fdt, node, "compatible", "fsl,qoriq-gpio"); in create_dt_mpc8xxx_gpio()
161 qemu_fdt_setprop_cells(fdt, node, "reg", mmio0, 0x1000); in create_dt_mpc8xxx_gpio()
162 qemu_fdt_setprop_cells(fdt, node, "interrupts", irq0, 0x2); in create_dt_mpc8xxx_gpio()
163 qemu_fdt_setprop_phandle(fdt, node, "interrupt-parent", mpic); in create_dt_mpc8xxx_gpio()
164 qemu_fdt_setprop_cells(fdt, node, "#gpio-cells", 2); in create_dt_mpc8xxx_gpio()
165 qemu_fdt_setprop(fdt, node, "gpio-controller", NULL, 0); in create_dt_mpc8xxx_gpio()
166 gpio_ph = qemu_fdt_alloc_phandle(fdt); in create_dt_mpc8xxx_gpio()
167 qemu_fdt_setprop_cell(fdt, node, "phandle", gpio_ph); in create_dt_mpc8xxx_gpio()
168 qemu_fdt_setprop_cell(fdt, node, "linux,phandle", gpio_ph); in create_dt_mpc8xxx_gpio()
171 qemu_fdt_add_subnode(fdt, poweroff); in create_dt_mpc8xxx_gpio()
172 qemu_fdt_setprop_string(fdt, poweroff, "compatible", "gpio-poweroff"); in create_dt_mpc8xxx_gpio()
173 qemu_fdt_setprop_cells(fdt, poweroff, "gpios", gpio_ph, 0, 0); in create_dt_mpc8xxx_gpio()
179 static void dt_rtc_create(void *fdt, const char *i2c, const char *alias) in dt_rtc_create() argument
184 qemu_fdt_add_subnode(fdt, rtc); in dt_rtc_create()
185 qemu_fdt_setprop_string(fdt, rtc, "compatible", "pericom,pt7c4338"); in dt_rtc_create()
186 qemu_fdt_setprop_cells(fdt, rtc, "reg", offset); in dt_rtc_create()
187 qemu_fdt_setprop_string(fdt, "/aliases", alias, rtc); in dt_rtc_create()
192 static void dt_i2c_create(void *fdt, const char *soc, const char *mpic, in dt_i2c_create() argument
199 qemu_fdt_add_subnode(fdt, i2c); in dt_i2c_create()
200 qemu_fdt_setprop_string(fdt, i2c, "device_type", "i2c"); in dt_i2c_create()
201 qemu_fdt_setprop_string(fdt, i2c, "compatible", "fsl-i2c"); in dt_i2c_create()
202 qemu_fdt_setprop_cells(fdt, i2c, "reg", mmio0, 0x14); in dt_i2c_create()
203 qemu_fdt_setprop_cells(fdt, i2c, "cell-index", 0); in dt_i2c_create()
204 qemu_fdt_setprop_cells(fdt, i2c, "interrupts", irq0, 0x2); in dt_i2c_create()
205 qemu_fdt_setprop_phandle(fdt, i2c, "interrupt-parent", mpic); in dt_i2c_create()
206 qemu_fdt_setprop_cell(fdt, i2c, "#size-cells", 0); in dt_i2c_create()
207 qemu_fdt_setprop_cell(fdt, i2c, "#address-cells", 1); in dt_i2c_create()
208 qemu_fdt_setprop_string(fdt, "/aliases", alias, i2c); in dt_i2c_create()
213 static void dt_sdhc_create(void *fdt, const char *parent, const char *mpic) in dt_sdhc_create() argument
221 qemu_fdt_add_subnode(fdt, name); in dt_sdhc_create()
222 qemu_fdt_setprop(fdt, name, "sdhci,auto-cmd12", NULL, 0); in dt_sdhc_create()
223 qemu_fdt_setprop_phandle(fdt, name, "interrupt-parent", mpic); in dt_sdhc_create()
224 qemu_fdt_setprop_cells(fdt, name, "bus-width", 4); in dt_sdhc_create()
225 qemu_fdt_setprop_cells(fdt, name, "interrupts", irq, 0x2); in dt_sdhc_create()
226 qemu_fdt_setprop_cells(fdt, name, "reg", mmio, size); in dt_sdhc_create()
227 qemu_fdt_setprop_string(fdt, name, "compatible", "fsl,esdhc"); in dt_sdhc_create()
231 void *fdt; member
248 void *fdt = data->fdt; in create_devtree_etsec() local
255 qemu_fdt_add_subnode(fdt, node); in create_devtree_etsec()
256 qemu_fdt_setprop(fdt, node, "ranges", NULL, 0); in create_devtree_etsec()
257 qemu_fdt_setprop_string(fdt, node, "device_type", "network"); in create_devtree_etsec()
258 qemu_fdt_setprop_string(fdt, node, "compatible", "fsl,etsec2"); in create_devtree_etsec()
259 qemu_fdt_setprop_string(fdt, node, "model", "eTSEC"); in create_devtree_etsec()
260 qemu_fdt_setprop(fdt, node, "local-mac-address", etsec->conf.macaddr.a, 6); in create_devtree_etsec()
261 qemu_fdt_setprop_cells(fdt, node, "fixed-link", 0, 1, 1000, 0, 0); in create_devtree_etsec()
262 qemu_fdt_setprop_cells(fdt, node, "#size-cells", 1); in create_devtree_etsec()
263 qemu_fdt_setprop_cells(fdt, node, "#address-cells", 1); in create_devtree_etsec()
265 qemu_fdt_add_subnode(fdt, group); in create_devtree_etsec()
266 qemu_fdt_setprop_cells(fdt, group, "reg", mmio0, 0x1000); in create_devtree_etsec()
267 qemu_fdt_setprop_cells(fdt, group, "interrupts", in create_devtree_etsec()
310 void *fdt = data->fdt; in create_devtree_flash() local
313 qemu_fdt_add_subnode(fdt, name); in create_devtree_flash()
314 qemu_fdt_setprop_string(fdt, name, "compatible", "cfi-flash"); in create_devtree_flash()
315 qemu_fdt_setprop_sized_cells(fdt, name, "reg", in create_devtree_flash()
317 qemu_fdt_setprop_cell(fdt, name, "bank-width", bank_width); in create_devtree_flash()
321 void *fdt, const char *mpic) in platform_bus_create_devtree() argument
334 qemu_fdt_add_subnode(fdt, node); in platform_bus_create_devtree()
335 qemu_fdt_setprop(fdt, node, "compatible", platcomp, sizeof(platcomp)); in platform_bus_create_devtree()
339 qemu_fdt_setprop_cells(fdt, node, "#size-cells", 1); in platform_bus_create_devtree()
340 qemu_fdt_setprop_cells(fdt, node, "#address-cells", 1); in platform_bus_create_devtree()
341 qemu_fdt_setprop_cells(fdt, node, "ranges", 0, addr >> 32, addr, size); in platform_bus_create_devtree()
343 qemu_fdt_setprop_phandle(fdt, node, "interrupt-parent", mpic); in platform_bus_create_devtree()
347 .fdt = fdt, in platform_bus_create_devtree()
382 void *fdt; in ppce500_load_device_tree() local
418 fdt = load_device_tree(filename, &fdt_size); in ppce500_load_device_tree()
420 if (!fdt) { in ppce500_load_device_tree()
426 fdt = create_device_tree(&fdt_size); in ppce500_load_device_tree()
427 if (fdt == NULL) { in ppce500_load_device_tree()
432 qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 2); in ppce500_load_device_tree()
433 qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 2); in ppce500_load_device_tree()
435 qemu_fdt_add_subnode(fdt, "/memory"); in ppce500_load_device_tree()
436 qemu_fdt_setprop_string(fdt, "/memory", "device_type", "memory"); in ppce500_load_device_tree()
437 qemu_fdt_setprop(fdt, "/memory", "reg", mem_reg_property, in ppce500_load_device_tree()
440 qemu_fdt_add_subnode(fdt, "/chosen"); in ppce500_load_device_tree()
442 ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start", in ppce500_load_device_tree()
448 ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end", in ppce500_load_device_tree()
457 qemu_fdt_setprop_cells(fdt, "/chosen", "qemu,boot-kernel", in ppce500_load_device_tree()
462 ret = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", in ppce500_load_device_tree()
468 qemu_fdt_setprop(fdt, "/chosen", "rng-seed", rng_seed, sizeof(rng_seed)); in ppce500_load_device_tree()
476 qemu_fdt_add_subnode(fdt, "/hypervisor"); in ppce500_load_device_tree()
477 qemu_fdt_setprop_string(fdt, "/hypervisor", "compatible", in ppce500_load_device_tree()
480 qemu_fdt_setprop(fdt, "/hypervisor", "hcall-instructions", in ppce500_load_device_tree()
484 qemu_fdt_setprop(fdt, "/hypervisor", "has-idle", NULL, 0); in ppce500_load_device_tree()
489 qemu_fdt_add_subnode(fdt, "/cpus"); in ppce500_load_device_tree()
490 qemu_fdt_setprop_cell(fdt, "/cpus", "#address-cells", 1); in ppce500_load_device_tree()
491 qemu_fdt_setprop_cell(fdt, "/cpus", "#size-cells", 0); in ppce500_load_device_tree()
507 qemu_fdt_add_subnode(fdt, cpu_name); in ppce500_load_device_tree()
508 qemu_fdt_setprop_cell(fdt, cpu_name, "clock-frequency", clock_freq); in ppce500_load_device_tree()
509 qemu_fdt_setprop_cell(fdt, cpu_name, "timebase-frequency", tb_freq); in ppce500_load_device_tree()
510 qemu_fdt_setprop_string(fdt, cpu_name, "device_type", "cpu"); in ppce500_load_device_tree()
511 qemu_fdt_setprop_cell(fdt, cpu_name, "reg", i); in ppce500_load_device_tree()
512 qemu_fdt_setprop_cell(fdt, cpu_name, "d-cache-line-size", in ppce500_load_device_tree()
514 qemu_fdt_setprop_cell(fdt, cpu_name, "i-cache-line-size", in ppce500_load_device_tree()
516 qemu_fdt_setprop_cell(fdt, cpu_name, "d-cache-size", 0x8000); in ppce500_load_device_tree()
517 qemu_fdt_setprop_cell(fdt, cpu_name, "i-cache-size", 0x8000); in ppce500_load_device_tree()
518 qemu_fdt_setprop_cell(fdt, cpu_name, "bus-frequency", 0); in ppce500_load_device_tree()
520 qemu_fdt_setprop_string(fdt, cpu_name, "status", "disabled"); in ppce500_load_device_tree()
521 qemu_fdt_setprop_string(fdt, cpu_name, "enable-method", in ppce500_load_device_tree()
523 qemu_fdt_setprop_u64(fdt, cpu_name, "cpu-release-addr", in ppce500_load_device_tree()
526 qemu_fdt_setprop_string(fdt, cpu_name, "status", "okay"); in ppce500_load_device_tree()
531 qemu_fdt_add_subnode(fdt, "/aliases"); in ppce500_load_device_tree()
534 qemu_fdt_add_subnode(fdt, soc); in ppce500_load_device_tree()
535 qemu_fdt_setprop_string(fdt, soc, "device_type", "soc"); in ppce500_load_device_tree()
536 qemu_fdt_setprop(fdt, soc, "compatible", compatible_sb, in ppce500_load_device_tree()
538 qemu_fdt_setprop_cell(fdt, soc, "#address-cells", 1); in ppce500_load_device_tree()
539 qemu_fdt_setprop_cell(fdt, soc, "#size-cells", 1); in ppce500_load_device_tree()
540 qemu_fdt_setprop_cells(fdt, soc, "ranges", 0x0, in ppce500_load_device_tree()
544 qemu_fdt_setprop_cell(fdt, soc, "bus-frequency", 0); in ppce500_load_device_tree()
547 qemu_fdt_add_subnode(fdt, mpic); in ppce500_load_device_tree()
548 qemu_fdt_setprop_string(fdt, mpic, "device_type", "open-pic"); in ppce500_load_device_tree()
549 qemu_fdt_setprop_string(fdt, mpic, "compatible", "fsl,mpic"); in ppce500_load_device_tree()
550 qemu_fdt_setprop_cells(fdt, mpic, "reg", MPC8544_MPIC_REGS_OFFSET, in ppce500_load_device_tree()
552 qemu_fdt_setprop_cell(fdt, mpic, "#address-cells", 0); in ppce500_load_device_tree()
553 qemu_fdt_setprop_cell(fdt, mpic, "#interrupt-cells", 2); in ppce500_load_device_tree()
554 mpic_ph = qemu_fdt_alloc_phandle(fdt); in ppce500_load_device_tree()
555 qemu_fdt_setprop_cell(fdt, mpic, "phandle", mpic_ph); in ppce500_load_device_tree()
556 qemu_fdt_setprop_cell(fdt, mpic, "linux,phandle", mpic_ph); in ppce500_load_device_tree()
557 qemu_fdt_setprop(fdt, mpic, "interrupt-controller", NULL, 0); in ppce500_load_device_tree()
565 dt_serial_create(fdt, MPC8544_SERIAL1_REGS_OFFSET, in ppce500_load_device_tree()
570 dt_serial_create(fdt, MPC8544_SERIAL0_REGS_OFFSET, in ppce500_load_device_tree()
575 dt_i2c_create(fdt, soc, mpic, "i2c"); in ppce500_load_device_tree()
577 dt_rtc_create(fdt, "i2c", "rtc"); in ppce500_load_device_tree()
581 dt_sdhc_create(fdt, soc, mpic); in ppce500_load_device_tree()
586 qemu_fdt_add_subnode(fdt, gutil); in ppce500_load_device_tree()
587 qemu_fdt_setprop_string(fdt, gutil, "compatible", "fsl,mpc8544-guts"); in ppce500_load_device_tree()
588 qemu_fdt_setprop_cells(fdt, gutil, "reg", MPC8544_UTIL_OFFSET, 0x1000); in ppce500_load_device_tree()
589 qemu_fdt_setprop(fdt, gutil, "fsl,has-rstcr", NULL, 0); in ppce500_load_device_tree()
593 qemu_fdt_add_subnode(fdt, msi); in ppce500_load_device_tree()
594 qemu_fdt_setprop_string(fdt, msi, "compatible", "fsl,mpic-msi"); in ppce500_load_device_tree()
595 qemu_fdt_setprop_cells(fdt, msi, "reg", MPC8544_MSI_REGS_OFFSET, 0x200); in ppce500_load_device_tree()
596 msi_ph = qemu_fdt_alloc_phandle(fdt); in ppce500_load_device_tree()
597 qemu_fdt_setprop_cells(fdt, msi, "msi-available-ranges", 0x0, 0x100); in ppce500_load_device_tree()
598 qemu_fdt_setprop_phandle(fdt, msi, "interrupt-parent", mpic); in ppce500_load_device_tree()
599 qemu_fdt_setprop_cells(fdt, msi, "interrupts", in ppce500_load_device_tree()
608 qemu_fdt_setprop_cell(fdt, msi, "phandle", msi_ph); in ppce500_load_device_tree()
609 qemu_fdt_setprop_cell(fdt, msi, "linux,phandle", msi_ph); in ppce500_load_device_tree()
614 qemu_fdt_add_subnode(fdt, pci); in ppce500_load_device_tree()
615 qemu_fdt_setprop_cell(fdt, pci, "cell-index", 0); in ppce500_load_device_tree()
616 qemu_fdt_setprop_string(fdt, pci, "compatible", "fsl,mpc8540-pci"); in ppce500_load_device_tree()
617 qemu_fdt_setprop_string(fdt, pci, "device_type", "pci"); in ppce500_load_device_tree()
618 qemu_fdt_setprop_cells(fdt, pci, "interrupt-map-mask", 0xf800, 0x0, in ppce500_load_device_tree()
620 pci_map = pci_map_create(fdt, qemu_fdt_get_phandle(fdt, mpic), in ppce500_load_device_tree()
623 qemu_fdt_setprop(fdt, pci, "interrupt-map", pci_map, len); in ppce500_load_device_tree()
624 qemu_fdt_setprop_phandle(fdt, pci, "interrupt-parent", mpic); in ppce500_load_device_tree()
625 qemu_fdt_setprop_cells(fdt, pci, "interrupts", 24, 2); in ppce500_load_device_tree()
626 qemu_fdt_setprop_cells(fdt, pci, "bus-range", 0, 255); in ppce500_load_device_tree()
630 qemu_fdt_setprop_cell(fdt, pci, "fsl,msi", msi_ph); in ppce500_load_device_tree()
631 qemu_fdt_setprop(fdt, pci, "ranges", pci_ranges, sizeof(pci_ranges)); in ppce500_load_device_tree()
632 qemu_fdt_setprop_cells(fdt, pci, "reg", in ppce500_load_device_tree()
636 qemu_fdt_setprop_cell(fdt, pci, "clock-frequency", 66666666); in ppce500_load_device_tree()
637 qemu_fdt_setprop_cell(fdt, pci, "#interrupt-cells", 1); in ppce500_load_device_tree()
638 qemu_fdt_setprop_cell(fdt, pci, "#size-cells", 2); in ppce500_load_device_tree()
639 qemu_fdt_setprop_cell(fdt, pci, "#address-cells", 3); in ppce500_load_device_tree()
640 qemu_fdt_setprop_string(fdt, "/aliases", "pci0", pci); in ppce500_load_device_tree()
644 create_dt_mpc8xxx_gpio(fdt, soc, mpic); in ppce500_load_device_tree()
648 platform_bus_create_devtree(pms, fdt, mpic); in ppce500_load_device_tree()
652 pmc->fixup_devtree(fdt); in ppce500_load_device_tree()
655 qemu_fdt_setprop(fdt, "/", "compatible", toplevel_compat, in ppce500_load_device_tree()
661 qemu_fdt_dumpdtb(fdt, fdt_size); in ppce500_load_device_tree()
662 cpu_physical_memory_write(addr, fdt, fdt_size); in ppce500_load_device_tree()
665 g_free(machine->fdt); in ppce500_load_device_tree()
666 machine->fdt = fdt; in ppce500_load_device_tree()
668 g_free(fdt); in ppce500_load_device_tree()