iommu/omap: Keep mmu enabled when requested
authorOmar Ramirez Luna <omar.luna@linaro.org>
Tue, 20 Nov 2012 01:05:49 +0000 (19:05 -0600)
committerJoerg Roedel <joro@8bytes.org>
Mon, 3 Dec 2012 17:48:01 +0000 (18:48 +0100)
The purpose of the mmu is to handle the memory accesses requested by
its users. Typically, the mmu is bundled with the processing unit in
a single IP block, which makes them to share the same clock to be
functional.

Currently, iommu code assumes that its user will be indirectly
clocking it, but being a separate mmu driver, it should handle
its own clocks, so as long as the mmu is requested it will be
powered ON and once detached it will be powered OFF.

The remaining clock handling out of iommu_enable and iommu_disable
corresponds to paths that can be accessed through debugfs, some of
them doesn't work if the module is not enabled first, but in future
if the mmu is idled withouth freeing, these are needed to debug.

Signed-off-by: Omar Ramirez Luna <omar.luna@linaro.org>
Tested-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
drivers/iommu/omap-iommu.c

index 6b1288cddaef4ad59522eac79e71c22e9a5cc88b..f8082da6179b3126c3abb67d516b18ec666cc271 100644 (file)
@@ -154,7 +154,6 @@ static int iommu_enable(struct omap_iommu *obj)
 
        err = arch_iommu->enable(obj);
 
-       clk_disable(obj->clk);
        return err;
 }
 
@@ -163,8 +162,6 @@ static void iommu_disable(struct omap_iommu *obj)
        if (!obj)
                return;
 
-       clk_enable(obj->clk);
-
        arch_iommu->disable(obj);
 
        clk_disable(obj->clk);