diff --git a/drivers/i2c/i2c.c b/drivers/i2c/i2c.c index 9df5ee7..2fed624 100644 --- a/drivers/i2c/i2c.c +++ b/drivers/i2c/i2c.c @@ -556,6 +556,19 @@ return NULL; } +struct i2c_client *of_find_i2c_device_by_node(struct device_node *node) +{ + struct device_d *dev = of_find_device_by_node(node); + + if (!dev) + return NULL; + + if (dev->bus != &i2c_bus) + return NULL; + + return to_i2c_client(dev); +} + /** * i2c_parse_fw_timings - get I2C related timing parameters from firmware * @dev: The device to scan for I2C timing properties diff --git a/include/i2c/i2c.h b/include/i2c/i2c.h index a694e4a..56a887a 100644 --- a/include/i2c/i2c.h +++ b/include/i2c/i2c.h @@ -281,6 +281,7 @@ extern int i2c_add_numbered_adapter(struct i2c_adapter *adapter); struct i2c_adapter *i2c_get_adapter(int busnum); struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node *node); +struct i2c_client *of_find_i2c_device_by_node(struct device_node *node); void i2c_parse_fw_timings(struct device_d *dev, struct i2c_timings *t, bool use_defaults);