FDT_MAX_NCELLS(9)
π FDT_MAX_NCELLS(9) π
okay bestie, welcome to the Kernel API Manual β yes the real one, we're doing libfdt lore today and honestly? it's a short one and it still eats π
β¨ NAME β¨
FDT_MAX_NCELLS β the absolute maximum value for #address-cells and #size-cells π
π¦ SYNOPSIS π¦
FDT_MAX_NCELLS
that's it. that's the whole synopsis. a single little constant living its best life, no arguments, no nothing, main character energy fr π₯
πΈ DESCRIPTION πΈ
so here's the vibe: this is the maximum value for #address-cells, #size-cells, and any similar properties that are gonna get processed by libfdt. that's the ceiling, the limit, the "no ma'am" line π
IEE1275 says OF implementations have to handle values up to 4. that's the requirement, non-negotiable, the baseline, the bare minimum the spec is willing to accept π
and like β implementations may support larger values than that. it's allowed! nobody's stopping you! but lowkey? in practice higher values just aren't used. nobody's out here flexing a #address-cells of 12, it's simply not the moment π«Ά
ngl bestie, the whole takeaway here is "4 is the number, don't be weird about it" β¨
π SEE ALSO π
okay so this little constant has a massive friend group β like genuinely, the whole libfdt extended universe showed up to the group chat π and yes, the Kernel file in question is ./scripts/dtc/libfdt/libfdt.h. every single one of these besties is invited:
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_node_offset_by_compatible(9)fdt_stringlist_contains(9)fdt_stringlist_count(9)fdt_stringlist_search(9)fdt_stringlist_get(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)
like I said. huge friend group. iykyk π§
and that's the whole page bestie!! this iconic little number lives over in ./scripts/dtc/libfdt and it's dated October 2026 β go off, calendar πβ¨π
π¦ 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