__of_device_is_compatible(9)
π __of_device_is_compatible β the Kernel API Manual glow-up π
okay so bestie, welcome to the kernel API manual, where we're checking if a node matches constraints and honestly? it's giving matchmaker energy. let's get into it π
β¨ NAME β¨
__of_device_is_compatible β literally just checks if the node matches the constraints you gave it, no cap π¦
πΈ SYNOPSIS πΈ
int __of_device_is_compatible (const struct device_node *device , const
char *compat , const char *type , const char *name );
π ARGUMENTS π
deviceβ pointer to node, like the actual thing we're vibe-checking πcompatβ the required compatible string. passNULLor""and it's like "any match works bestie" β¨typeβ the requireddevice_typevalue. again,NULLor""means any match, we're flexible like that π«Άnameβ the required node name. yep,NULLor""= any match, main character energy π
π DESCRIPTION π
So what it does is, it checks if the given compat, type and name strings match the properties of the given device. Any one of the constraints can be skipped entirely by passing NULL or an empty string as that constraint β lowkey iconic of it honestly π
It returns 0 for no match, and a positive integer on match. and here's the slay part: that return value is a relative score, and larger values mean better matches π₯
The score is weighted so the most specific compatible value gets the highest score. after that comes matching type, and then matching name. Practically speaking, this gives you the following priority order for matches, bestie:
- specific compatible && type && name π
- specific compatible && type
- specific compatible && name
- specific compatible
- general compatible && type && name
- general compatible && type
- general compatible && name
- general compatible
- type && name
- type
- name
like, the ranking ate, fr fr πβ¨
π¦ SEE ALSO π¦
kernel file ./drivers/of/base.c β and the whole friend group π
of_find_all_nodes(9)of_machine_compatible_match(9)of_machine_read_compatible(9)of_machine_read_model(9)of_machine_get_match(9)of_machine_get_match_data(9)__of_device_is_available(9)__of_device_is_reserved(9)of_device_is_available(9)__of_device_is_fail(9)of_device_is_big_endian(9)of_get_parent(9)of_get_next_parent(9)of_get_next_child(9)of_get_next_child_with_prefix(9)of_get_next_available_child(9)of_get_next_reserved_child(9)of_get_next_cpu_node(9)of_get_compatible_child(9)of_get_child_by_name(9)of_get_available_child_by_name(9)of_find_node_opts_by_path(9)of_find_node_by_name(9)of_find_node_by_type(9)of_find_compatible_node(9)of_find_node_with_property(9)of_match_node(9)of_find_matching_node_and_match(9)of_alias_from_compatible(9)of_find_node_by_phandle(9)of_parse_phandle_with_args_map(9)of_count_phandle_with_args(9)__of_add_property(9)of_add_property(9)of_remove_property(9)of_alias_scan(9)of_alias_get_id(9)of_alias_get_highest_id(9)of_console_check(9)of_find_next_cache_node(9)of_find_last_cache_level(9)of_map_id(9)of_map_iommu_id(9)of_map_msi_id(9)
and that's the whole page!! π§ this one lives in ./drivers/of, dated October 2026 β mwah, go read some device tree nodes, ily, bye ππ
π¦ 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