iommu/omap: Allow enable/disable even without pdata
authorFlorian Vaussard <florian.vaussard@epfl.ch>
Fri, 28 Feb 2014 20:42:34 +0000 (14:42 -0600)
committerJoerg Roedel <joro@8bytes.org>
Tue, 4 Mar 2014 16:01:44 +0000 (17:01 +0100)
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: Florian Vaussard <florian.vaussard@epfl.ch>
Signed-off-by: Suman Anna <s-anna@ti.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
drivers/iommu/omap-iommu.c

index 647e4ba0df95698f671a355dd1d69e453b43be7f..217952b993e1e7df8d382655dbe4b84059501709 100644 (file)
@@ -146,13 +146,10 @@ static int iommu_enable(struct omap_iommu *obj)
        struct platform_device *pdev = to_platform_device(obj->dev);
        struct iommu_platform_data *pdata = pdev->dev.platform_data;
 
-       if (!pdata)
-               return -EINVAL;
-
        if (!arch_iommu)
                return -ENODEV;
 
-       if (pdata->deassert_reset) {
+       if (pdata && pdata->deassert_reset) {
                err = pdata->deassert_reset(pdev, pdata->reset_name);
                if (err) {
                        dev_err(obj->dev, "deassert_reset failed: %d\n", err);
@@ -172,14 +169,11 @@ static void iommu_disable(struct omap_iommu *obj)
        struct platform_device *pdev = to_platform_device(obj->dev);
        struct iommu_platform_data *pdata = pdev->dev.platform_data;
 
-       if (!pdata)
-               return;
-
        arch_iommu->disable(obj);
 
        pm_runtime_put_sync(obj->dev);
 
-       if (pdata->assert_reset)
+       if (pdata && pdata->assert_reset)
                pdata->assert_reset(pdev, pdata->reset_name);
 }