|
@@ -279,10 +279,13 @@ static int i2c_device_probe(struct device *dev)
|
|
|
if (status < 0)
|
|
|
return status;
|
|
|
|
|
|
- acpi_dev_pm_attach(&client->dev, true);
|
|
|
- status = driver->probe(client, i2c_match_id(driver->id_table, client));
|
|
|
- if (status)
|
|
|
- acpi_dev_pm_detach(&client->dev, true);
|
|
|
+ status = dev_pm_domain_attach(&client->dev, true);
|
|
|
+ if (status != -EPROBE_DEFER) {
|
|
|
+ status = driver->probe(client, i2c_match_id(driver->id_table,
|
|
|
+ client));
|
|
|
+ if (status)
|
|
|
+ dev_pm_domain_detach(&client->dev, true);
|
|
|
+ }
|
|
|
|
|
|
return status;
|
|
|
}
|
|
@@ -302,7 +305,7 @@ static int i2c_device_remove(struct device *dev)
|
|
|
status = driver->remove(client);
|
|
|
}
|
|
|
|
|
|
- acpi_dev_pm_detach(&client->dev, true);
|
|
|
+ dev_pm_domain_detach(&client->dev, true);
|
|
|
return status;
|
|
|
}
|
|
|
|