]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/i2c/i2c-core.c
Merge tag 'device-properties-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / drivers / i2c / i2c-core.c
index 1e52395e90a7417da1aceb97727ee6d6216b719d..bfb6ba7cac00f4fc22587b9241775197920e4cb7 100644 (file)
@@ -1336,15 +1336,29 @@ i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
        client->dev.fwnode = info->fwnode;
 
        i2c_dev_set_name(adap, client);
+
+       if (info->properties) {
+               status = device_add_properties(&client->dev, info->properties);
+               if (status) {
+                       dev_err(&adap->dev,
+                               "Failed to add properties to client %s: %d\n",
+                               client->name, status);
+                       goto out_err;
+               }
+       }
+
        status = device_register(&client->dev);
        if (status)
-               goto out_err;
+               goto out_free_props;
 
        dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
                client->name, dev_name(&client->dev));
 
        return client;
 
+out_free_props:
+       if (info->properties)
+               device_remove_properties(&client->dev);
 out_err:
        dev_err(&adap->dev,
                "Failed to register i2c client %s at 0x%02x (%d)\n",