diff options
| -rw-r--r-- | drivers/base/platform.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 73d6e5d39e33..f437afa17f2b 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
| @@ -558,10 +558,15 @@ static int platform_drv_probe(struct device *_dev) | |||
| 558 | return ret; | 558 | return ret; |
| 559 | 559 | ||
| 560 | ret = dev_pm_domain_attach(_dev, true); | 560 | ret = dev_pm_domain_attach(_dev, true); |
| 561 | if (ret != -EPROBE_DEFER && drv->probe) { | 561 | if (ret != -EPROBE_DEFER) { |
| 562 | ret = drv->probe(dev); | 562 | if (drv->probe) { |
| 563 | if (ret) | 563 | ret = drv->probe(dev); |
| 564 | dev_pm_domain_detach(_dev, true); | 564 | if (ret) |
| 565 | dev_pm_domain_detach(_dev, true); | ||
| 566 | } else { | ||
| 567 | /* don't fail if just dev_pm_domain_attach failed */ | ||
| 568 | ret = 0; | ||
| 569 | } | ||
| 565 | } | 570 | } |
| 566 | 571 | ||
| 567 | if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) { | 572 | if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) { |
