Lines Matching refs:fdt

126 TEE_Result dt_driver_register_provider(const void *fdt, int nodeoffset,  in dt_driver_register_provider()  argument
136 provider_cells = fdt_get_dt_driver_cells(fdt, nodeoffset, type); in dt_driver_register_provider()
139 provider_cells, fdt_get_name(fdt, nodeoffset, NULL)); in dt_driver_register_provider()
143 phandle = fdt_get_phandle(fdt, nodeoffset); in dt_driver_register_provider()
146 fdt_get_name(fdt, nodeoffset, NULL)); in dt_driver_register_provider()
181 int fdt_get_dt_driver_cells(const void *fdt, int nodeoffset, in fdt_get_dt_driver_cells() argument
214 c = fdt_getprop(fdt, nodeoffset, cells_name, &len); in fdt_get_dt_driver_cells()
259 const void *fdt, int phandle_node, in device_from_provider_prop() argument
272 pargs->fdt = fdt; in device_from_provider_prop()
288 TEE_Result dt_driver_device_from_parent(const void *fdt, int nodeoffset, in dt_driver_device_from_parent() argument
295 assert(fdt == get_secure_dt()); in dt_driver_device_from_parent()
297 parent = fdt_parent_offset(fdt, nodeoffset); in dt_driver_device_from_parent()
307 return device_from_provider_prop(prv, fdt, parent, NULL, device_ref, in dt_driver_device_from_parent()
312 const void *fdt, in dt_driver_device_from_node_idx_prop_phandle() argument
324 prop = fdt_getprop(fdt, nodeoffs, prop_name, &len); in dt_driver_device_from_node_idx_prop_phandle()
331 fdt_get_name(fdt, nodeoffs, NULL)); in dt_driver_device_from_node_idx_prop_phandle()
344 phandle_node = fdt_node_offset_by_phandle(fdt, phandle); in dt_driver_device_from_node_idx_prop_phandle()
346 return device_from_provider_prop(prv, fdt, phandle_node, in dt_driver_device_from_node_idx_prop_phandle()
352 const void *fdt, int nodeoffset, in dt_driver_device_from_node_idx_prop() argument
367 prop = fdt_getprop(fdt, nodeoffset, prop_name, &len); in dt_driver_device_from_node_idx_prop()
370 fdt_get_name(fdt, nodeoffset, NULL)); in dt_driver_device_from_node_idx_prop()
392 phandle_node = fdt_node_offset_by_phandle(fdt, phandle); in dt_driver_device_from_node_idx_prop()
396 nodeoffset = fdt_parent_offset(fdt, phandle_node); in dt_driver_device_from_node_idx_prop()
416 phandle_node = fdt_node_offset_by_phandle(fdt, phandle); in dt_driver_device_from_node_idx_prop()
423 prv_cells = fdt_get_dt_driver_cells(fdt, phandle_node, in dt_driver_device_from_node_idx_prop()
427 fdt_get_name(fdt, phandle_node, NULL), in dt_driver_device_from_node_idx_prop()
445 return device_from_provider_prop(prv, fdt, phandle_node, in dt_driver_device_from_node_idx_prop()
453 static void __maybe_unused print_probe_list(const void *fdt __maybe_unused) in print_probe_list()
465 fdt_get_name(fdt, elt->nodeoffset, NULL)); in print_probe_list()
476 fdt_get_name(fdt, elt->nodeoffset, NULL)); in print_probe_list()
485 static TEE_Result probe_driver_node(const void *fdt, in probe_driver_node() argument
492 node_name = fdt_get_name(fdt, elt->nodeoffset, NULL); in probe_driver_node()
502 res = elt->dt_drv->probe(fdt, elt->nodeoffset, elt->dm->compat_data); in probe_driver_node()
530 static TEE_Result alloc_elt_and_probe(const void *fdt, int node, in alloc_elt_and_probe() argument
546 return probe_driver_node(fdt, elt); in alloc_elt_and_probe()
550 static TEE_Result probe_device_by_compat(const void *fdt, int node, in probe_device_by_compat() argument
563 return alloc_elt_and_probe(fdt, node, drv, dm); in probe_device_by_compat()
573 TEE_Result dt_driver_probe_device_by_node(const void *fdt, int nodeoffset, in dt_driver_probe_device_by_node() argument
584 count = fdt_stringlist_count(fdt, nodeoffset, "compatible"); in dt_driver_probe_device_by_node()
589 compat = fdt_stringlist_get(fdt, nodeoffset, "compatible", in dt_driver_probe_device_by_node()
594 res = probe_device_by_compat(fdt, nodeoffset, compat, type); in dt_driver_probe_device_by_node()
603 static TEE_Result process_probe_list(const void *fdt) in process_probe_list() argument
619 print_probe_list(fdt); in process_probe_list()
637 switch (probe_driver_node(fdt, elt)) { in process_probe_list()
678 static TEE_Result add_node_to_probe(const void *fdt, int node, in add_node_to_probe() argument
682 const char __maybe_unused *node_name = fdt_get_name(fdt, node, NULL); in add_node_to_probe()
715 print_probe_list(fdt); in add_node_to_probe()
730 static TEE_Result add_probe_node_by_compat(const void *fdt, int node, in add_probe_node_by_compat() argument
743 res = add_node_to_probe(fdt, node, dt_drv, dm); in add_probe_node_by_compat()
767 TEE_Result dt_driver_maybe_add_probe_node(const void *fdt, int node) in dt_driver_maybe_add_probe_node() argument
775 if (fdt_get_status(fdt, node) == DT_STATUS_DISABLED) in dt_driver_maybe_add_probe_node()
778 count = fdt_stringlist_count(fdt, node, "compatible"); in dt_driver_maybe_add_probe_node()
783 compat = fdt_stringlist_get(fdt, node, "compatible", idx, &len); in dt_driver_maybe_add_probe_node()
786 res = add_probe_node_by_compat(fdt, node, compat); in dt_driver_maybe_add_probe_node()
796 static void parse_node(const void *fdt, int node) in parse_node() argument
801 fdt_for_each_subnode(subnode, fdt, node) { in parse_node()
802 res = dt_driver_maybe_add_probe_node(fdt, subnode); in parse_node()
805 fdt_get_name(fdt, subnode, NULL), res); in parse_node()
815 if (fdt_get_status(fdt, subnode) == DT_STATUS_DISABLED) in parse_node()
818 parse_node(fdt, subnode); in parse_node()
830 const void *fdt = NULL; in probe_dt_drivers_early() local
832 fdt = get_secure_dt(); in probe_dt_drivers_early()
833 if (!fdt) in probe_dt_drivers_early()
836 parse_node(fdt, fdt_path_offset(fdt, "/")); in probe_dt_drivers_early()
838 res = process_probe_list(fdt); in probe_dt_drivers_early()
841 print_probe_list(fdt); in probe_dt_drivers_early()
851 const void *fdt = NULL; in probe_dt_drivers() local
853 fdt = get_secure_dt(); in probe_dt_drivers()
854 if (!fdt) in probe_dt_drivers()
857 res = process_probe_list(fdt); in probe_dt_drivers()
860 print_probe_list(fdt); in probe_dt_drivers()
876 const void *fdt = NULL; in release_probe_lists() local
878 fdt = get_secure_dt(); in release_probe_lists()
879 if (!fdt) in release_probe_lists()
882 assert(fdt && TAILQ_EMPTY(&dt_driver_probe_list)); in release_probe_lists()
901 static TEE_Result simple_bus_probe(const void *fdt, int node, in simple_bus_probe() argument
907 fdt_for_each_subnode(subnode, fdt, node) { in simple_bus_probe()
908 res = dt_driver_maybe_add_probe_node(fdt, subnode); in simple_bus_probe()
911 fdt_get_name(fdt, subnode, NULL), res); in simple_bus_probe()