diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2015-01-27 15:13:45 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-02-03 16:56:54 -0500 |
commit | b472c2faf471b72e7f3ffe35200dfb3d227487b7 (patch) | |
tree | 5dd778d65af07b3f4ae74d931e3bd4ac7a03ad5d | |
parent | f104e1e5ef5788f02de2053bfbd0f02d629b6036 (diff) |
PM / Domains: Handle errors from genpd's ->attach_dev() callback
The optional genpd's ->attach_dev() callback is invoked from
__pm_genpd_add_device(). Let's add error handling from the response
from this callback and propagate the error code.
When __pm_genpd_add_device() is invoked through the generic OF-based PM
domain look-up path, the device is being probed. Returning an error
will mean the device won't be attached to its PM domain. Errors of
-EPROBE_DEFER get special treatment and is propagated to the driver
core.
Therefore this change also enables the ->attach_dev() callback to
be able to request for a deferred probe sequence.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/base/power/domain.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 0fd5ee127c30..ba4abbe4693c 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c | |||
@@ -1467,8 +1467,9 @@ int __pm_genpd_add_device(struct generic_pm_domain *genpd, struct device *dev, | |||
1467 | goto out; | 1467 | goto out; |
1468 | } | 1468 | } |
1469 | 1469 | ||
1470 | if (genpd->attach_dev) | 1470 | ret = genpd->attach_dev ? genpd->attach_dev(genpd, dev) : 0; |
1471 | genpd->attach_dev(genpd, dev); | 1471 | if (ret) |
1472 | goto out; | ||
1472 | 1473 | ||
1473 | genpd->device_count++; | 1474 | genpd->device_count++; |
1474 | genpd->max_off_time_changed = true; | 1475 | genpd->max_off_time_changed = true; |