aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2016-05-23 05:30:08 -0400
committerJoerg Roedel <jroedel@suse.de>2016-06-15 07:59:58 -0400
commit01324ab2c990bbd39ec0ef388b7c311a54452a0b (patch)
treea9e180fa5d086b8c4ebc2c34b83a882a74eb3ea1 /drivers/iommu
parent0c2b063f1813ac99238b9c61edb58752eb7762cf (diff)
iommu/exynos: Fix master clock management for inactive SYSMMU
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>
Diffstat (limited to 'drivers/iommu')
-rw-r--r--drivers/iommu/exynos-iommu.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
index 989365682d14..018bcd5d5edc 100644
--- a/drivers/iommu/exynos-iommu.c
+++ b/drivers/iommu/exynos-iommu.c
@@ -524,16 +524,15 @@ static void sysmmu_tlb_invalidate_flpdcache(struct sysmmu_drvdata *data,
524{ 524{
525 unsigned long flags; 525 unsigned long flags;
526 526
527 clk_enable(data->clk_master);
528 527
529 spin_lock_irqsave(&data->lock, flags); 528 spin_lock_irqsave(&data->lock, flags);
530 if (is_sysmmu_active(data)) { 529 if (is_sysmmu_active(data) && data->version >= MAKE_MMU_VER(3, 3)) {
531 if (data->version >= MAKE_MMU_VER(3, 3)) 530 clk_enable(data->clk_master);
532 __sysmmu_tlb_invalidate_entry(data, iova, 1); 531 __sysmmu_tlb_invalidate_entry(data, iova, 1);
532 clk_disable(data->clk_master);
533 } 533 }
534 spin_unlock_irqrestore(&data->lock, flags); 534 spin_unlock_irqrestore(&data->lock, flags);
535 535
536 clk_disable(data->clk_master);
537} 536}
538 537
539static void sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data, 538static void sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data,