fdt_node_of...y_compatible(9)
π fdt_node_offset_by_compatible π
okay so bestie, welcome to the Kernel API Manual β¨ β this one's short, sweet, and honestly iconic. The page header calls it fdt_node_of...y_compatible(9) (yeah they truncated it, the real star is fdt_node_offset_by_compatible), and we're about to find nodes by their vibes. π
πΈ NAME πΈ
fdt_node_offset_by_compatible β find nodes with a given 'compatible' value π¦
β¨ SYNOPSIS β¨
int fdt_node_offset_by_compatible (const void *fdt , int startoffset ,
const char *compatible );
π«Ά ARGUMENTS π«Ά
fdtβ pointer to the device tree blob π (yes, the whole tree, no cap)startoffsetβ only find nodes after this offset π like, don't look backward bestiecompatibleβ the compatible string we're shopping for π
π DESCRIPTION π
So fdt_node_offset_by_compatible returns the offset of the first node after startoffset that has a 'compatible' property listing the given compatible string. β¨ And if startoffset is -1, it gives you the very first such node in the whole tree. Like a fresh start, main character energy.
To iterate through all nodes matching the criterion, the following idiom can be used β literally just screenshot this:
offset = fdt_node_offset_by_compatible(fdt, -1,
compatible); while (offset != -FDT_ERR_NOTFOUND) { // other code here
offset = fdt_node_offset_by_compatible(fdt, offset, compatible); }
β οΈ bestie listen β note the-1in the first call to the function. If0is used here instead, the function will never locate the root node, even if it matches the criterion. π Not a vibe. Use-1. periodt.
π₯ RETURN π₯
- structure block offset of the located node (
>= 0,>startoffset), on success π slay -FDT_ERR_NOTFOUNDβ no node matching the criterion exists in the tree afterstartoffsetπ (it's not you, it's the tree)-FDT_ERR_BADOFFSETβnodeoffsetdoes not refer to aBEGIN_NODEtag π-FDT_ERR_BADMAGIC,-FDT_ERR_BADVERSION,-FDT_ERR_BADSTATE,-FDT_ERR_BADSTRUCTUREβ standard meanings π§ (iykyk)
π SEE ALSO π
Kernel file ./scripts/dtc/libfdt/libfdt.h β and honestly, the whole fdt squad showed up. Obsessed. π
fdt_offset_ptr(9)fdt_next_tag(9)fdt_first_subnode(9)fdt_next_subnode(9)fdt_for_each_subnode(9)fdt_header_size(9)fdt_header_size_(9)fdt_check_header(9)fdt_move(9)fdt_check_full(9)fdt_get_string(9)fdt_string(9)fdt_find_max_phandle(9)fdt_get_max_phandle(9)fdt_generate_phandle(9)fdt_num_mem_rsv(9)fdt_get_mem_rsv(9)fdt_subnode_offset_namelen(9)fdt_subnode_offset(9)fdt_path_offset_namelen(9)fdt_path_offset(9)fdt_get_name(9)fdt_first_property_offset(9)fdt_next_property_offset(9)fdt_for_each_property_offset(9)fdt_get_property_by_offset(9)fdt_get_property_namelen(9)fdt_get_property(9)fdt_getprop_by_offset(9)fdt_getprop_namelen(9)fdt_getprop(9)fdt_get_phandle(9)fdt_get_alias_namelen(9)fdt_get_alias(9)fdt_get_symbol_namelen(9)fdt_get_symbol(9)fdt_get_path(9)fdt_supernode_atdepth_offset(9)fdt_node_depth(9)fdt_parent_offset(9)fdt_node_offset_by_prop_value(9)fdt_node_offset_by_phandle(9)fdt_node_check_compatible(9)fdt_stringlist_contains(9)fdt_stringlist_count(9)fdt_stringlist_search(9)fdt_stringlist_get(9)FDT_MAX_NCELLS(9)fdt_address_cells(9)fdt_size_cells(9)fdt_setprop_inplace_namelen_partial(9)fdt_setprop_inplace(9)fdt_setprop_inplace_u32(9)fdt_setprop_inplace_u64(9)fdt_setprop_inplace_cell(9)fdt_nop_property(9)fdt_nop_node(9)fdt_create_with_flags(9)fdt_create(9)fdt_resize(9)fdt_add_reservemap_entry(9)fdt_finish_reservemap(9)fdt_begin_node(9)fdt_property(9)fdt_property_placeholder(9)fdt_end_node(9)fdt_finish(9)fdt_create_empty_tree(9)fdt_open_into(9)fdt_pack(9)fdt_add_mem_rsv(9)fdt_del_mem_rsv(9)fdt_set_name(9)fdt_setprop_namelen(9)fdt_setprop(9)fdt_setprop_placeholder_namelen(9)fdt_setprop_placeholder(9)fdt_setprop_u32(9)fdt_setprop_u64(9)fdt_setprop_cell(9)fdt_setprop_string(9)fdt_setprop_namelen_string(9)fdt_setprop_empty(9)fdt_appendprop(9)fdt_appendprop_u32(9)fdt_appendprop_u64(9)fdt_appendprop_cell(9)fdt_appendprop_string(9)fdt_appendprop_addrrange(9)fdt_delprop(9)fdt_add_subnode_namelen(9)fdt_add_subnode(9)fdt_del_node(9)fdt_overlay_apply(9)fdt_overlay_target_offset(9)fdt_strerror(9)
that's the whole page, bestie β go find ur nodes π β¨
π¦ cute sign-off time: this lil masterpiece lives in ./scripts/dtc/libfdt, dated October 2026, and it's filed under fdt_node_of...y_compatible(9) in the Kernel API Manual. mwah π π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms