]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iommu/exynos: Fix master clock management for inactive SYSMMU
authorMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 23 May 2016 09:30:08 +0000 (11:30 +0200)
committerJoerg Roedel <jroedel@suse.de>
Wed, 15 Jun 2016 11:59:58 +0000 (13:59 +0200)
If SYSMMU controller is not active, there is no point in enabling master's
clock just for doing the the of internal state. This patch moves enabling
that clock to the block which actually does the register access.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/exynos-iommu.c

index 989365682d1492537680647ca9b94b6ca67d74ce..018bcd5d5edcf033233d130278616530f9d73d87 100644 (file)
@@ -524,16 +524,15 @@ static void sysmmu_tlb_invalidate_flpdcache(struct sysmmu_drvdata *data,
 {
        unsigned long flags;
 
-       clk_enable(data->clk_master);
 
        spin_lock_irqsave(&data->lock, flags);
-       if (is_sysmmu_active(data)) {
-               if (data->version >= MAKE_MMU_VER(3, 3))
-                       __sysmmu_tlb_invalidate_entry(data, iova, 1);
+       if (is_sysmmu_active(data) && data->version >= MAKE_MMU_VER(3, 3)) {
+               clk_enable(data->clk_master);
+               __sysmmu_tlb_invalidate_entry(data, iova, 1);
+               clk_disable(data->clk_master);
        }
        spin_unlock_irqrestore(&data->lock, flags);
 
-       clk_disable(data->clk_master);
 }
 
 static void sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data,