diff options
| -rw-r--r-- | drivers/gpu/drm/tegra/sor.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c index 07a077bd73e4..ef8692b7075a 100644 --- a/drivers/gpu/drm/tegra/sor.c +++ b/drivers/gpu/drm/tegra/sor.c | |||
| @@ -3340,14 +3340,23 @@ static int tegra_sor_probe(struct platform_device *pdev) | |||
| 3340 | goto remove; | 3340 | goto remove; |
| 3341 | } | 3341 | } |
| 3342 | 3342 | ||
| 3343 | if (!pdev->dev.pm_domain) { | 3343 | sor->rst = devm_reset_control_get(&pdev->dev, "sor"); |
| 3344 | sor->rst = devm_reset_control_get(&pdev->dev, "sor"); | 3344 | if (IS_ERR(sor->rst)) { |
| 3345 | if (IS_ERR(sor->rst)) { | 3345 | err = PTR_ERR(sor->rst); |
| 3346 | err = PTR_ERR(sor->rst); | 3346 | |
| 3347 | if (err != -EBUSY || WARN_ON(!pdev->dev.pm_domain)) { | ||
| 3347 | dev_err(&pdev->dev, "failed to get reset control: %d\n", | 3348 | dev_err(&pdev->dev, "failed to get reset control: %d\n", |
| 3348 | err); | 3349 | err); |
| 3349 | goto remove; | 3350 | goto remove; |
| 3350 | } | 3351 | } |
| 3352 | |||
| 3353 | /* | ||
| 3354 | * At this point, the reset control is most likely being used | ||
| 3355 | * by the generic power domain implementation. With any luck | ||
| 3356 | * the power domain will have taken care of resetting the SOR | ||
| 3357 | * and we don't have to do anything. | ||
| 3358 | */ | ||
| 3359 | sor->rst = NULL; | ||
| 3351 | } | 3360 | } |
| 3352 | 3361 | ||
| 3353 | sor->clk = devm_clk_get(&pdev->dev, NULL); | 3362 | sor->clk = devm_clk_get(&pdev->dev, NULL); |
