{
struct i2c_client *client = i2c_verify_client(dev);
struct i2c_driver *driver;
- int status = 0;
if (!client || !dev->driver)
return 0;
driver = to_i2c_driver(dev->driver);
if (driver->remove) {
+ int status;
+
dev_dbg(dev, "remove\n");
+
status = driver->remove(client);
+ if (status)
+ dev_warn(dev, "remove failed (%pe), will be ignored\n", ERR_PTR(status));
}
dev_pm_domain_detach(&client->dev, true);
if (client->flags & I2C_CLIENT_HOST_NOTIFY)
pm_runtime_put(&client->adapter->dev);
- return status;
+ /* return always 0 because there is WIP to make remove-functions void */
+ return 0;
}
static void i2c_device_shutdown(struct device *dev)