diff options
Diffstat (limited to 'drivers/base/platform.c')
| -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)  		return ret;  	ret = dev_pm_domain_attach(_dev, true); -	if (ret != -EPROBE_DEFER && drv->probe) { -		ret = drv->probe(dev); -		if (ret) -			dev_pm_domain_detach(_dev, true); +	if (ret != -EPROBE_DEFER) { +		if (drv->probe) { +			ret = drv->probe(dev); +			if (ret) +				dev_pm_domain_detach(_dev, true); +		} else { +			/* don't fail if just dev_pm_domain_attach failed */ +			ret = 0; +		}  	}  	if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) { | 
