| /openbmc/u-boot/scripts/dtc/libfdt/ |
| H A D | libfdt.h | 147 const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); 149 static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) in fdt_offset_ptr_w() argument 151 return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); in fdt_offset_ptr_w() 154 uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset); 160 int fdt_next_node(const void *fdt, int offset, int *depth); 169 int fdt_first_subnode(const void *fdt, int offset); 182 int fdt_next_subnode(const void *fdt, int offset); 207 #define fdt_for_each_subnode(node, fdt, parent) \ argument 208 for (node = fdt_first_subnode(fdt, parent); \ 210 node = fdt_next_subnode(fdt, node)) [all …]
|
| H A D | fdt_sw.c | 58 static int fdt_sw_check_header_(void *fdt) in fdt_sw_check_header_() argument 60 if (fdt_magic(fdt) != FDT_SW_MAGIC) in fdt_sw_check_header_() 66 #define FDT_SW_CHECK_HEADER(fdt) \ argument 69 if ((err = fdt_sw_check_header_(fdt)) != 0) \ 73 static void *fdt_grab_space_(void *fdt, size_t len) in fdt_grab_space_() argument 75 int offset = fdt_size_dt_struct(fdt); in fdt_grab_space_() 78 spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt) in fdt_grab_space_() 79 - fdt_size_dt_strings(fdt); in fdt_grab_space_() 84 fdt_set_size_dt_struct(fdt, offset + len); in fdt_grab_space_() 85 return fdt_offset_ptr_w_(fdt, offset); in fdt_grab_space_() [all …]
|
| H A D | fdt_rw.c | 58 static int fdt_blocks_misordered_(const void *fdt, in fdt_blocks_misordered_() argument 61 return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8)) in fdt_blocks_misordered_() 62 || (fdt_off_dt_struct(fdt) < in fdt_blocks_misordered_() 63 (fdt_off_mem_rsvmap(fdt) + mem_rsv_size)) in fdt_blocks_misordered_() 64 || (fdt_off_dt_strings(fdt) < in fdt_blocks_misordered_() 65 (fdt_off_dt_struct(fdt) + struct_size)) in fdt_blocks_misordered_() 66 || (fdt_totalsize(fdt) < in fdt_blocks_misordered_() 67 (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt))); in fdt_blocks_misordered_() 70 static int fdt_rw_check_header_(void *fdt) in fdt_rw_check_header_() argument 72 FDT_CHECK_HEADER(fdt); in fdt_rw_check_header_() [all …]
|
| H A D | fdt_ro.c | 58 static int fdt_nodename_eq_(const void *fdt, int offset, in fdt_nodename_eq_() argument 62 const char *p = fdt_get_name(fdt, offset, &olen); in fdt_nodename_eq_() 79 const char *fdt_string(const void *fdt, int stroffset) in fdt_string() argument 81 return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset; in fdt_string() 84 static int fdt_string_eq_(const void *fdt, int stroffset, in fdt_string_eq_() argument 87 const char *p = fdt_string(fdt, stroffset); in fdt_string_eq_() 92 uint32_t fdt_get_max_phandle(const void *fdt) in fdt_get_max_phandle() argument 97 for (offset = fdt_next_node(fdt, -1, NULL);; in fdt_get_max_phandle() 98 offset = fdt_next_node(fdt, offset, NULL)) { in fdt_get_max_phandle() 107 phandle = fdt_get_phandle(fdt, offset); in fdt_get_max_phandle() [all …]
|
| H A D | fdt.c | 58 int fdt_check_header(const void *fdt) in fdt_check_header() argument 60 if (fdt_magic(fdt) == FDT_MAGIC) { in fdt_check_header() 62 if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) in fdt_check_header() 64 if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION) in fdt_check_header() 66 } else if (fdt_magic(fdt) == FDT_SW_MAGIC) { in fdt_check_header() 68 if (fdt_size_dt_struct(fdt) == 0) in fdt_check_header() 77 const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len) in fdt_offset_ptr() argument 79 unsigned absoffset = offset + fdt_off_dt_struct(fdt); in fdt_offset_ptr() 83 || (absoffset + len) > fdt_totalsize(fdt)) in fdt_offset_ptr() 86 if (fdt_version(fdt) >= 0x11) in fdt_offset_ptr() [all …]
|
| H A D | libfdt_internal.h | 58 #define FDT_CHECK_HEADER(fdt) \ argument 61 if ((err_ = fdt_check_header(fdt)) != 0) \ 65 int fdt_check_node_offset_(const void *fdt, int offset); 66 int fdt_check_prop_offset_(const void *fdt, int offset); 68 int fdt_node_end_offset_(void *fdt, int nodeoffset); 70 static inline const void *fdt_offset_ptr_(const void *fdt, int offset) in fdt_offset_ptr_() argument 72 return (const char *)fdt + fdt_off_dt_struct(fdt) + offset; in fdt_offset_ptr_() 75 static inline void *fdt_offset_ptr_w_(void *fdt, int offset) in fdt_offset_ptr_w_() argument 77 return (void *)(uintptr_t)fdt_offset_ptr_(fdt, offset); in fdt_offset_ptr_w_() 80 static inline const struct fdt_reserve_entry *fdt_mem_rsv_(const void *fdt, int n) in fdt_mem_rsv_() argument [all …]
|
| /openbmc/u-boot/lib/libfdt/ |
| H A D | fdt_ro.c | 17 static int _fdt_nodename_eq(const void *fdt, int offset, in _fdt_nodename_eq() argument 20 const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1); in _fdt_nodename_eq() 37 const char *fdt_string(const void *fdt, int stroffset) in fdt_string() argument 39 return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset; in fdt_string() 42 static int _fdt_string_eq(const void *fdt, int stroffset, in _fdt_string_eq() argument 45 const char *p = fdt_string(fdt, stroffset); in _fdt_string_eq() 50 uint32_t fdt_get_max_phandle(const void *fdt) in fdt_get_max_phandle() argument 55 for (offset = fdt_next_node(fdt, -1, NULL);; in fdt_get_max_phandle() 56 offset = fdt_next_node(fdt, offset, NULL)) { in fdt_get_max_phandle() 65 phandle = fdt_get_phandle(fdt, offset); in fdt_get_max_phandle() [all …]
|
| /openbmc/qemu/hw/loongarch/ |
| H A D | virt-fdt-build.c | 25 ms->fdt = create_device_tree(&lvms->fdt_size); in create_fdt() 26 if (!ms->fdt) { in create_fdt() 32 qemu_fdt_setprop_string(ms->fdt, "/", "compatible", in create_fdt() 34 qemu_fdt_setprop_cell(ms->fdt, "/", "#address-cells", 0x2); in create_fdt() 35 qemu_fdt_setprop_cell(ms->fdt, "/", "#size-cells", 0x2); in create_fdt() 36 qemu_fdt_add_subnode(ms->fdt, "/chosen"); in create_fdt() 40 qemu_fdt_setprop(ms->fdt, "/chosen", "rng-seed", rng_seed, sizeof(rng_seed)); in create_fdt() 53 qemu_fdt_add_subnode(ms->fdt, "/cpus"); in fdt_add_cpu_nodes() 54 qemu_fdt_setprop_cell(ms->fdt, "/cpus", "#address-cells", 0x1); in fdt_add_cpu_nodes() 55 qemu_fdt_setprop_cell(ms->fdt, "/cpus", "#size-cells", 0x0); in fdt_add_cpu_nodes() [all …]
|
| /openbmc/qemu/hw/openrisc/ |
| H A D | virt.c | 46 void *fdt; member 131 void *fdt; in openrisc_create_fdt() local 136 fdt = state->fdt = create_device_tree(&state->fdt_size); in openrisc_create_fdt() 137 if (!fdt) { in openrisc_create_fdt() 142 qemu_fdt_setprop_string(fdt, "/", "compatible", "opencores,or1ksim"); in openrisc_create_fdt() 143 qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 0x1); in openrisc_create_fdt() 144 qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 0x1); in openrisc_create_fdt() 146 qemu_fdt_add_subnode(fdt, "/soc"); in openrisc_create_fdt() 147 qemu_fdt_setprop(fdt, "/soc", "ranges", NULL, 0); in openrisc_create_fdt() 148 qemu_fdt_setprop_string(fdt, "/soc", "compatible", "simple-bus"); in openrisc_create_fdt() [all …]
|
| H A D | openrisc_sim.c | 55 void *fdt; member 113 void *fdt; in openrisc_create_fdt() local 118 fdt = state->fdt = create_device_tree(&state->fdt_size); in openrisc_create_fdt() 119 if (!fdt) { in openrisc_create_fdt() 124 qemu_fdt_setprop_string(fdt, "/", "compatible", "opencores,or1ksim"); in openrisc_create_fdt() 125 qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 0x1); in openrisc_create_fdt() 126 qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 0x1); in openrisc_create_fdt() 130 qemu_fdt_add_subnode(fdt, nodename); in openrisc_create_fdt() 131 qemu_fdt_setprop_cells(fdt, nodename, "reg", in openrisc_create_fdt() 133 qemu_fdt_setprop_string(fdt, nodename, "device_type", "memory"); in openrisc_create_fdt() [all …]
|
| /openbmc/u-boot/arch/arm/mach-omap2/ |
| H A D | fdt-common.c | 23 int ft_hs_disable_rng(void *fdt, bd_t *bd) in ft_hs_disable_rng() argument 31 offs = fdt_path_offset(fdt, path); in ft_hs_disable_rng() 36 ret = fdt_setprop_string(fdt, offs, in ft_hs_disable_rng() 50 static int fdt_pack_reg(const void *fdt, void *buf, u64 address, u64 size) in fdt_pack_reg() argument 52 int address_cells = fdt_address_cells(fdt, 0); in fdt_pack_reg() 53 int size_cells = fdt_size_cells(fdt, 0); in fdt_pack_reg() 71 int ft_hs_fixup_dram(void *fdt, bd_t *bd) in ft_hs_fixup_dram() argument 77 fdt32_t address_cells = cpu_to_fdt32(fdt_address_cells(fdt, 0)); in ft_hs_fixup_dram() 78 fdt32_t size_cells = cpu_to_fdt32(fdt_size_cells(fdt, 0)); in ft_hs_fixup_dram() 83 offs = fdt_path_offset(fdt, path); in ft_hs_fixup_dram() [all …]
|
| /openbmc/qemu/hw/riscv/ |
| H A D | sifive_u.c | 100 void *fdt; in create_fdt() local 114 fdt = ms->fdt = create_device_tree(&s->fdt_size); in create_fdt() 115 if (!fdt) { in create_fdt() 120 qemu_fdt_setprop_string(fdt, "/", "model", "SiFive HiFive Unleashed A00"); in create_fdt() 121 qemu_fdt_setprop_string(fdt, "/", "compatible", in create_fdt() 123 qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 0x2); in create_fdt() 124 qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 0x2); in create_fdt() 126 qemu_fdt_add_subnode(fdt, "/soc"); in create_fdt() 127 qemu_fdt_setprop(fdt, "/soc", "ranges", NULL, 0); in create_fdt() 128 qemu_fdt_setprop_string(fdt, "/soc", "compatible", "simple-bus"); in create_fdt() [all …]
|
| H A D | spike.c | 54 void *fdt; in create_fdt() local 68 fdt = ms->fdt = create_device_tree(&fdt_size); in create_fdt() 69 if (!fdt) { in create_fdt() 74 qemu_fdt_setprop_string(fdt, "/", "model", "ucbbar,spike-bare,qemu"); in create_fdt() 75 qemu_fdt_setprop_string(fdt, "/", "compatible", "ucbbar,spike-bare-dev"); in create_fdt() 76 qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 0x2); in create_fdt() 77 qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 0x2); in create_fdt() 79 qemu_fdt_add_subnode(fdt, "/htif"); in create_fdt() 80 qemu_fdt_setprop_string(fdt, "/htif", "compatible", "ucb,htif0"); in create_fdt() 82 qemu_fdt_setprop_cells(fdt, "/htif", "reg", in create_fdt() [all …]
|
| /openbmc/u-boot/include/ |
| H A D | fdt_support.h | 14 u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell, 16 u32 fdt_getprop_u32_default(const void *fdt, const char *path, 27 int fdt_root(void *fdt); 37 int fdt_chosen(void *fdt); 45 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end); 47 void do_fixup_by_path(void *fdt, const char *path, const char *prop, 49 void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop, 52 static inline void do_fixup_by_path_string(void *fdt, const char *path, in do_fixup_by_path_string() argument 55 do_fixup_by_path(fdt, path, prop, status, strlen(status) + 1, 1); in do_fixup_by_path_string() 58 void do_fixup_by_prop(void *fdt, [all …]
|
| /openbmc/qemu/hw/ppc/ |
| H A D | e500.c | 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", freq); 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() [all …]
|
| H A D | pegasos2.c | 325 void *fdt; in pegasos2_machine_reset() local 414 fdt = build_fdt(machine, &sz); in pegasos2_machine_reset() 418 qemu_fdt_setprop(fdt, "/chosen", "qemu,boot-kernel", d, sizeof(d)); in pegasos2_machine_reset() 421 pm->fdt_blob = fdt; in pegasos2_machine_reset() 423 vof_build_dt(fdt, pm->vof); in pegasos2_machine_reset() 424 vof_client_open_store(fdt, pm->vof, "/chosen", "stdout", "/failsafe"); in pegasos2_machine_reset() 427 machine->fdt = fdt; in pegasos2_machine_reset() 639 void *fdt; member 647 qemu_fdt_setprop_string(fi->fdt, fi->path, "device_type", "spi"); in dt_ide() 652 qemu_fdt_setprop_cell(fi->fdt, fi->path, "#size-cells", 0); in dt_usb() [all …]
|
| /openbmc/qemu/hw/arm/ |
| H A D | xlnx-versal-virt.c | 36 void *fdt; member 61 s->fdt = create_device_tree(&s->fdt_size); in fdt_create() 62 if (!s->fdt) { in fdt_create() 68 s->phandle.gic = qemu_fdt_alloc_phandle(s->fdt); in fdt_create() 70 s->phandle.ethernet_phy[i] = qemu_fdt_alloc_phandle(s->fdt); in fdt_create() 72 s->phandle.clk_25Mhz = qemu_fdt_alloc_phandle(s->fdt); in fdt_create() 73 s->phandle.clk_125Mhz = qemu_fdt_alloc_phandle(s->fdt); in fdt_create() 75 s->phandle.usb = qemu_fdt_alloc_phandle(s->fdt); in fdt_create() 76 s->phandle.dwc = qemu_fdt_alloc_phandle(s->fdt); in fdt_create() 78 qemu_fdt_add_subnode(s->fdt, "/chosen"); in fdt_create() [all …]
|
| /openbmc/qemu/system/ |
| H A D | device_tree.c | 40 void *fdt; in create_device_tree() local 44 fdt = g_malloc0(FDT_MAX_SIZE); in create_device_tree() 45 ret = fdt_create(fdt, FDT_MAX_SIZE); in create_device_tree() 49 ret = fdt_finish_reservemap(fdt); in create_device_tree() 53 ret = fdt_begin_node(fdt, ""); in create_device_tree() 57 ret = fdt_end_node(fdt); in create_device_tree() 61 ret = fdt_finish(fdt); in create_device_tree() 65 ret = fdt_open_into(fdt, fdt, *sizep); in create_device_tree() 72 return fdt; in create_device_tree() 83 void *fdt = NULL; in load_device_tree() local [all …]
|
| /openbmc/qemu/include/system/ |
| H A D | device_tree.h | 46 char **qemu_fdt_node_path(void *fdt, const char *name, const char *compat, 63 char **qemu_fdt_node_unit_path(void *fdt, const char *name, Error **errp); 65 int qemu_fdt_setprop(void *fdt, const char *node_path, 67 int qemu_fdt_setprop_cell(void *fdt, const char *node_path, 69 int qemu_fdt_setprop_u64(void *fdt, const char *node_path, 71 int qemu_fdt_setprop_string(void *fdt, const char *node_path, 87 int qemu_fdt_setprop_string_array(void *fdt, const char *node_path, 90 int qemu_fdt_setprop_phandle(void *fdt, const char *node_path, 103 const void *qemu_fdt_getprop(void *fdt, const char *node_path, 117 uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path, [all …]
|
| /openbmc/u-boot/test/overlay/ |
| H A D | cmd_ut_overlay.c | 26 static void *fdt; variable 28 static int ut_fdt_getprop_u32_by_index(void *fdt, const char *path, in ut_fdt_getprop_u32_by_index() argument 36 node_off = fdt_path_offset(fdt, path); in ut_fdt_getprop_u32_by_index() 40 val = fdt_getprop(fdt, node_off, name, &len); in ut_fdt_getprop_u32_by_index() 49 static int ut_fdt_getprop_u32(void *fdt, const char *path, const char *name, in ut_fdt_getprop_u32() argument 52 return ut_fdt_getprop_u32_by_index(fdt, path, name, 0, out); in ut_fdt_getprop_u32() 55 static int fdt_getprop_str(void *fdt, const char *path, const char *name, in fdt_getprop_str() argument 61 node_off = fdt_path_offset(fdt, path); in fdt_getprop_str() 65 *out = fdt_stringlist_get(fdt, node_off, name, 0, &len); in fdt_getprop_str() 74 ut_assertok(ut_fdt_getprop_u32(fdt, "/test-node", "test-int-property", in fdt_overlay_change_int_property() [all …]
|
| /openbmc/u-boot/arch/arm/mach-omap2/omap5/ |
| H A D | fdt.c | 30 static int ft_hs_fixup_crossbar(void *fdt, bd_t *bd) in ft_hs_fixup_crossbar() argument 43 ret = fdt_increase_size(fdt, 512); in ft_hs_fixup_crossbar() 52 offs = fdt_path_offset(fdt, path); in ft_hs_fixup_crossbar() 59 p_data = fdt_getprop(fdt, offs, "ti,irqs-skip", &len); in ft_hs_fixup_crossbar() 76 fdt_delprop(fdt, offs, "ti,irqs-skip"); in ft_hs_fixup_crossbar() 77 ret = fdt_setprop(fdt, offs, "ti,irqs-skip", in ft_hs_fixup_crossbar() 94 static int ft_hs_fixup_sram(void *fdt, bd_t *bd) in ft_hs_fixup_sram() argument 107 offs = fdt_path_offset(fdt, path); in ft_hs_fixup_sram() 118 fdt_delprop(fdt, offs, "reg"); in ft_hs_fixup_sram() 119 ret = fdt_setprop(fdt, offs, "reg", temp, 2 * sizeof(u32)); in ft_hs_fixup_sram() [all …]
|
| /openbmc/u-boot/arch/arm/lib/ |
| H A D | psci-dt.c | 16 int fdt_psci(void *fdt) in fdt_psci() argument 24 nodeoff = fdt_path_offset(fdt, "/cpus"); in fdt_psci() 31 for (tmp = fdt_first_subnode(fdt, nodeoff); in fdt_psci() 33 tmp = fdt_next_subnode(fdt, tmp)) { in fdt_psci() 37 prop = fdt_get_property(fdt, tmp, "device_type", &len); in fdt_psci() 50 fdt_setprop_string(fdt, tmp, "enable-method", "psci"); in fdt_psci() 53 nodeoff = fdt_path_offset(fdt, "/psci"); in fdt_psci() 57 nodeoff = fdt_path_offset(fdt, "/"); in fdt_psci() 61 nodeoff = fdt_add_subnode(fdt, nodeoff, "psci"); in fdt_psci() 74 tmp = fdt_setprop_string(fdt, nodeoff, in fdt_psci() [all …]
|
| /openbmc/u-boot/tools/ |
| H A D | fit_image.c | 115 void *fdt, const char *name, const char *fname) in fdt_property_file() argument 135 ret = fdt_property_placeholder(fdt, "data", sbuf.st_size, &ptr); in fdt_property_file() 152 static int fdt_property_strf(void *fdt, const char *name, const char *fmt, ...) in fdt_property_strf() argument 160 return fdt_property_string(fdt, name, str); in fdt_property_strf() 191 static int fit_write_images(struct image_tool_params *params, char *fdt) in fit_write_images() argument 199 fdt_begin_node(fdt, "images"); in fit_write_images() 204 fdt_begin_node(fdt, str); in fit_write_images() 205 fdt_property_string(fdt, FIT_DESC_PROP, params->imagename); in fit_write_images() 206 fdt_property_string(fdt, FIT_TYPE_PROP, typename); in fit_write_images() 207 fdt_property_string(fdt, FIT_ARCH_PROP, in fit_write_images() [all …]
|
| /openbmc/qemu/hw/mips/ |
| H A D | boston.c | 370 g_autofree void *fdt = g_malloc0(fdt_sz); in boston_fdt_filter() local 373 err = fdt_open_into(fdt_orig, fdt, fdt_sz); in boston_fdt_filter() 380 qemu_fdt_setprop(fdt, "/chosen", "rng-seed", rng_seed, sizeof(rng_seed)); in boston_fdt_filter() 384 err = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline); in boston_fdt_filter() 392 qemu_fdt_setprop_sized_cells(fdt, "/memory@0", "reg", in boston_fdt_filter() 397 fdt = g_realloc(fdt, fdt_totalsize(fdt)); in boston_fdt_filter() 401 return g_steal_pointer(&fdt); in boston_fdt_filter() 457 static void fdt_create_pcie(void *fdt, int gic_ph, int irq, hwaddr reg_base, in fdt_create_pcie() argument 465 intc_ph = qemu_fdt_alloc_phandle(fdt); in fdt_create_pcie() 467 qemu_fdt_add_subnode(fdt, name); in fdt_create_pcie() [all …]
|
| /openbmc/u-boot/doc/uImage.FIT/ |
| H A D | overlay-fdt-boot.txt | 13 can be found in doc/README.fdt-overlays 35 fdt-1 { 40 fdt-2 { 45 fdt-3 { 50 fdt-4 { 55 fdt-5 { 60 fdt-6 { 71 fdt = "fdt-1"; 75 fdt = "fdt-2"; 79 fdt = "fdt-3"; [all …]
|