Commit 90e569c4 authored by Florian Vaussard's avatar Florian Vaussard Committed by Joerg Roedel

iommu/omap: Allow enable/disable even without pdata

When booting with a devicetree, no platform data is provided.
Do not prematurely exit iommu_enable() and iommu_disable() in
such a case.

Note: As OMAP do not yet has a proper reset controller driver,
IOMMUs requiring a reset signal should use pdata-quirks as a
transitional solution.
Signed-off-by: default avatarFlorian Vaussard <florian.vaussard@epfl.ch>
Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarJoerg Roedel <joro@8bytes.org>
parent 7ee08b9e
...@@ -146,13 +146,10 @@ static int iommu_enable(struct omap_iommu *obj) ...@@ -146,13 +146,10 @@ static int iommu_enable(struct omap_iommu *obj)
struct platform_device *pdev = to_platform_device(obj->dev); struct platform_device *pdev = to_platform_device(obj->dev);
struct iommu_platform_data *pdata = pdev->dev.platform_data; struct iommu_platform_data *pdata = pdev->dev.platform_data;
if (!pdata)
return -EINVAL;
if (!arch_iommu) if (!arch_iommu)
return -ENODEV; return -ENODEV;
if (pdata->deassert_reset) { if (pdata && pdata->deassert_reset) {
err = pdata->deassert_reset(pdev, pdata->reset_name); err = pdata->deassert_reset(pdev, pdata->reset_name);
if (err) { if (err) {
dev_err(obj->dev, "deassert_reset failed: %d\n", err); dev_err(obj->dev, "deassert_reset failed: %d\n", err);
...@@ -172,14 +169,11 @@ static void iommu_disable(struct omap_iommu *obj) ...@@ -172,14 +169,11 @@ static void iommu_disable(struct omap_iommu *obj)
struct platform_device *pdev = to_platform_device(obj->dev); struct platform_device *pdev = to_platform_device(obj->dev);
struct iommu_platform_data *pdata = pdev->dev.platform_data; struct iommu_platform_data *pdata = pdev->dev.platform_data;
if (!pdata)
return;
arch_iommu->disable(obj); arch_iommu->disable(obj);
pm_runtime_put_sync(obj->dev); pm_runtime_put_sync(obj->dev);
if (pdata->assert_reset) if (pdata && pdata->assert_reset)
pdata->assert_reset(pdev, pdata->reset_name); pdata->assert_reset(pdev, pdata->reset_name);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment