@@ -341,7 +341,7 @@ static int cgbc_i2c_probe(struct platform_device *pdev)
struct cgbc_device_data *cgbc = dev_get_drvdata(dev->parent);
struct cgbc_i2c_platform_data *pdata;
struct cgbc_i2c_data *i2c;
- int ret;
+ int ret, i;
i2c = devm_kzalloc(dev, sizeof(*i2c), GFP_KERNEL);
if (!i2c)
@@ -370,7 +370,15 @@ static int cgbc_i2c_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(i2c->dev, ret, "Failed to get I2C bus frequency");
- return i2c_add_numbered_adapter(&i2c->adap);
+ ret = i2c_add_numbered_adapter(&i2c->adap);
+ if (ret)
+ return ret;
+
+ /* Add known devices to the bus */
+ for (i = 0; i < pdata->nb_devices; i++)
+ i2c_new_client_device(&i2c->adap, pdata->devices + i);
+
+ return 0;
}
static void cgbc_i2c_remove(struct platform_device *pdev)
Register any I2C devices defined for the bus at probe time. Signed-off-by: Thomas Richard (congatec GmbH) <thomas.richard@bootlin.com> --- drivers/i2c/busses/i2c-cgbc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)