]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
memory: tegra: Register SMMU after MC driver became ready
authorDmitry Osipenko <digetx@gmail.com>
Tue, 8 May 2018 16:55:30 +0000 (19:55 +0300)
committerThierry Reding <treding@nvidia.com>
Fri, 18 May 2018 10:31:55 +0000 (12:31 +0200)
Memory Controller driver invokes SMMU driver registration and MC's
registers mapping is shared with SMMU. This mapping goes away if MC
driver probing fails after SMMU registration.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/memory/tegra/mc.c

index c81d01caf1a87b8bfa533ece26a18a7c55217861..bb93cc53554e63cc279d58cf44c2733a46c28368 100644 (file)
@@ -672,15 +672,6 @@ static int tegra_mc_probe(struct platform_device *pdev)
                return err;
        }
 
-       if (IS_ENABLED(CONFIG_TEGRA_IOMMU_SMMU)) {
-               mc->smmu = tegra_smmu_probe(&pdev->dev, mc->soc->smmu, mc);
-               if (IS_ERR(mc->smmu)) {
-                       dev_err(&pdev->dev, "failed to probe SMMU: %ld\n",
-                               PTR_ERR(mc->smmu));
-                       return PTR_ERR(mc->smmu);
-               }
-       }
-
        err = tegra_mc_reset_setup(mc);
        if (err < 0) {
                dev_err(&pdev->dev, "failed to register reset controller: %d\n",
@@ -706,6 +697,15 @@ static int tegra_mc_probe(struct platform_device *pdev)
                return err;
        }
 
+       if (IS_ENABLED(CONFIG_TEGRA_IOMMU_SMMU)) {
+               mc->smmu = tegra_smmu_probe(&pdev->dev, mc->soc->smmu, mc);
+               if (IS_ERR(mc->smmu)) {
+                       dev_err(&pdev->dev, "failed to probe SMMU: %ld\n",
+                               PTR_ERR(mc->smmu));
+                       return PTR_ERR(mc->smmu);
+               }
+       }
+
        return 0;
 }