Skip to content

Commit 54d6a97

Browse files
author
Wolfram Sang
committed
Merge branch 'i2c/immutable/scoped_fwnode_child' into i2c/for-mergewindow
2 parents 958e55f + d32bb69 commit 54d6a97

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

drivers/i2c/i2c-core-slave.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,9 @@ bool i2c_detect_slave_mode(struct device *dev)
112112
struct fwnode_handle *fwnode = dev_fwnode(dev);
113113

114114
if (is_of_node(fwnode)) {
115-
struct fwnode_handle *child __free(fwnode_handle) = NULL;
116115
u32 reg;
117116

118-
fwnode_for_each_child_node(fwnode, child) {
117+
fwnode_for_each_child_node_scoped(fwnode, child) {
119118
fwnode_property_read_u32(child, "reg", &reg);
120119
if (reg & I2C_OWN_SLAVE_ADDRESS)
121120
return true;

include/linux/property.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,16 @@ struct fwnode_handle *fwnode_get_next_available_child_node(
176176
for (child = fwnode_get_next_available_child_node(fwnode, NULL); child;\
177177
child = fwnode_get_next_available_child_node(fwnode, child))
178178

179+
#define fwnode_for_each_child_node_scoped(fwnode, child) \
180+
for (struct fwnode_handle *child __free(fwnode_handle) = \
181+
fwnode_get_next_child_node(fwnode, NULL); \
182+
child; child = fwnode_get_next_child_node(fwnode, child))
183+
184+
#define fwnode_for_each_available_child_node_scoped(fwnode, child) \
185+
for (struct fwnode_handle *child __free(fwnode_handle) = \
186+
fwnode_get_next_available_child_node(fwnode, NULL); \
187+
child; child = fwnode_get_next_available_child_node(fwnode, child))
188+
179189
struct fwnode_handle *device_get_next_child_node(const struct device *dev,
180190
struct fwnode_handle *child);
181191

0 commit comments

Comments
 (0)