Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

of: Add for_each_compatible_node_scoped() helper

Just like looping through children and available children, add a scoped
helper for for_each_compatible_node() so error paths can drop
of_node_put() leading to simpler code.

Suggested-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Link: https://patch.msgid.link/20260109-of-for-each-compatible-scoped-v3-1-c22fa2c0749a@oss.qualcomm.com
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>

authored by

Krzysztof Kozlowski and committed by
Rob Herring (Arm)
620097c6 c75afcb4

+9
+1
.clang-format
··· 259 259 - 'for_each_collection' 260 260 - 'for_each_comp_order' 261 261 - 'for_each_compatible_node' 262 + - 'for_each_compatible_node_scoped' 262 263 - 'for_each_component_dais' 263 264 - 'for_each_component_dais_safe' 264 265 - 'for_each_conduit'
+7
include/linux/of.h
··· 1485 1485 #define for_each_compatible_node(dn, type, compatible) \ 1486 1486 for (dn = of_find_compatible_node(NULL, type, compatible); dn; \ 1487 1487 dn = of_find_compatible_node(dn, type, compatible)) 1488 + 1489 + #define for_each_compatible_node_scoped(dn, type, compatible) \ 1490 + for (struct device_node *dn __free(device_node) = \ 1491 + of_find_compatible_node(NULL, type, compatible); \ 1492 + dn; \ 1493 + dn = of_find_compatible_node(dn, type, compatible)) 1494 + 1488 1495 #define for_each_matching_node(dn, matches) \ 1489 1496 for (dn = of_find_matching_node(NULL, matches); dn; \ 1490 1497 dn = of_find_matching_node(dn, matches))
+1
scripts/dtc/dt-extract-compatibles
··· 72 72 compat_list += parse_of_functions(data, "_is_compatible") 73 73 compat_list += parse_of_functions(data, "of_find_compatible_node") 74 74 compat_list += parse_of_functions(data, "for_each_compatible_node") 75 + compat_list += parse_of_functions(data, "for_each_compatible_node_scoped") 75 76 compat_list += parse_of_functions(data, "of_get_compatible_child") 76 77 77 78 return compat_list