iommu/exynos: Refactor init config code
authorMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 18 Feb 2016 14:12:54 +0000 (15:12 +0100)
committerJoerg Roedel <jroedel@suse.de>
Thu, 25 Feb 2016 14:32:10 +0000 (15:32 +0100)
This patch rewrites sysmmu_init_config function to make it easier to read
and understand.

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

index 3a577a4..15787a1 100644 (file)
@@ -383,24 +383,17 @@ static bool __sysmmu_disable(struct sysmmu_drvdata *data)
 
 static void __sysmmu_init_config(struct sysmmu_drvdata *data)
 {
-       unsigned int cfg = CFG_LRU | CFG_QOS(15);
-       unsigned int ver;
-
-       ver = MMU_RAW_VER(__raw_readl(data->sfrbase + REG_MMU_VERSION));
-       if (MMU_MAJ_VER(ver) == 3) {
-               if (MMU_MIN_VER(ver) >= 2) {
-                       cfg |= CFG_FLPDCACHE;
-                       if (MMU_MIN_VER(ver) == 3) {
-                               cfg |= CFG_ACGEN;
-                               cfg &= ~CFG_LRU;
-                       } else {
-                               cfg |= CFG_SYSSEL;
-                       }
-               }
-       }
+       unsigned int cfg;
+
+       data->version = MMU_RAW_VER(__raw_readl(data->sfrbase + REG_MMU_VERSION));
+       if (data->version <= MAKE_MMU_VER(3, 1))
+               cfg = CFG_LRU | CFG_QOS(15);
+       else if (data->version <= MAKE_MMU_VER(3, 2))
+               cfg = CFG_LRU | CFG_QOS(15) | CFG_FLPDCACHE | CFG_SYSSEL;
+       else
+               cfg = CFG_QOS(15) | CFG_FLPDCACHE | CFG_ACGEN;
 
        __raw_writel(cfg, data->sfrbase + REG_MMU_CFG);
-       data->version = ver;
 }
 
 static void __sysmmu_enable_nocount(struct sysmmu_drvdata *data)