iommu/tegra: gart: Integrate with Memory Controller driver
The device-tree binding has been changed. There is no separate GART device anymore, it is squashed into the Memory Controller. Integrate GART module with the MC in a way it is done for the SMMU on Tegra30+. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:

committed by
Joerg Roedel

parent
45594c683e
commit
ce2785a75d
@@ -702,13 +702,56 @@ static int tegra_mc_probe(struct platform_device *pdev)
|
||||
PTR_ERR(mc->smmu));
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_TEGRA_IOMMU_GART) && !mc->soc->smmu) {
|
||||
mc->gart = tegra_gart_probe(&pdev->dev, mc);
|
||||
if (IS_ERR(mc->gart)) {
|
||||
dev_err(&pdev->dev, "failed to probe GART: %ld\n",
|
||||
PTR_ERR(mc->gart));
|
||||
mc->gart = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tegra_mc_suspend(struct device *dev)
|
||||
{
|
||||
struct tegra_mc *mc = dev_get_drvdata(dev);
|
||||
int err;
|
||||
|
||||
if (IS_ENABLED(CONFIG_TEGRA_IOMMU_GART) && mc->gart) {
|
||||
err = tegra_gart_suspend(mc->gart);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tegra_mc_resume(struct device *dev)
|
||||
{
|
||||
struct tegra_mc *mc = dev_get_drvdata(dev);
|
||||
int err;
|
||||
|
||||
if (IS_ENABLED(CONFIG_TEGRA_IOMMU_GART) && mc->gart) {
|
||||
err = tegra_gart_resume(mc->gart);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct dev_pm_ops tegra_mc_pm_ops = {
|
||||
.suspend = tegra_mc_suspend,
|
||||
.resume = tegra_mc_resume,
|
||||
};
|
||||
|
||||
static struct platform_driver tegra_mc_driver = {
|
||||
.driver = {
|
||||
.name = "tegra-mc",
|
||||
.of_match_table = tegra_mc_of_match,
|
||||
.pm = &tegra_mc_pm_ops,
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.prevent_deferred_probe = true,
|
||||
|
Reference in New Issue
Block a user