|
@@ -119,6 +119,7 @@ static int exynos_rng_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
struct exynos_rng *exynos_rng;
|
|
|
struct resource *res;
|
|
|
+ int ret;
|
|
|
|
|
|
exynos_rng = devm_kzalloc(&pdev->dev, sizeof(struct exynos_rng),
|
|
|
GFP_KERNEL);
|
|
@@ -146,7 +147,13 @@ static int exynos_rng_probe(struct platform_device *pdev)
|
|
|
pm_runtime_use_autosuspend(&pdev->dev);
|
|
|
pm_runtime_enable(&pdev->dev);
|
|
|
|
|
|
- return devm_hwrng_register(&pdev->dev, &exynos_rng->rng);
|
|
|
+ ret = devm_hwrng_register(&pdev->dev, &exynos_rng->rng);
|
|
|
+ if (ret) {
|
|
|
+ pm_runtime_dont_use_autosuspend(&pdev->dev);
|
|
|
+ pm_runtime_disable(&pdev->dev);
|
|
|
+ }
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int __maybe_unused exynos_rng_runtime_suspend(struct device *dev)
|