diff options
author | Marek Szyprowski <m.szyprowski@samsung.com> | 2016-02-18 09:12:54 -0500 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2016-02-25 09:32:10 -0500 |
commit | 83addecdb7c9a4a533205cf57cb4d5b5631a704b (patch) | |
tree | 9edad940181f201724860a747375746b4014bb43 | |
parent | d093fc7e8390c3e46294290c0d76de93422a601f (diff) |
iommu/exynos: Refactor init config code
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>
-rw-r--r-- | drivers/iommu/exynos-iommu.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 3a577a473f3c..15787a177a16 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c | |||
@@ -383,24 +383,17 @@ static bool __sysmmu_disable(struct sysmmu_drvdata *data) | |||
383 | 383 | ||
384 | static void __sysmmu_init_config(struct sysmmu_drvdata *data) | 384 | static void __sysmmu_init_config(struct sysmmu_drvdata *data) |
385 | { | 385 | { |
386 | unsigned int cfg = CFG_LRU | CFG_QOS(15); | 386 | unsigned int cfg; |
387 | unsigned int ver; | 387 | |
388 | 388 | data->version = MMU_RAW_VER(__raw_readl(data->sfrbase + REG_MMU_VERSION)); | |
389 | ver = MMU_RAW_VER(__raw_readl(data->sfrbase + REG_MMU_VERSION)); | 389 | if (data->version <= MAKE_MMU_VER(3, 1)) |
390 | if (MMU_MAJ_VER(ver) == 3) { | 390 | cfg = CFG_LRU | CFG_QOS(15); |
391 | if (MMU_MIN_VER(ver) >= 2) { | 391 | else if (data->version <= MAKE_MMU_VER(3, 2)) |
392 | cfg |= CFG_FLPDCACHE; | 392 | cfg = CFG_LRU | CFG_QOS(15) | CFG_FLPDCACHE | CFG_SYSSEL; |
393 | if (MMU_MIN_VER(ver) == 3) { | 393 | else |
394 | cfg |= CFG_ACGEN; | 394 | cfg = CFG_QOS(15) | CFG_FLPDCACHE | CFG_ACGEN; |
395 | cfg &= ~CFG_LRU; | ||
396 | } else { | ||
397 | cfg |= CFG_SYSSEL; | ||
398 | } | ||
399 | } | ||
400 | } | ||
401 | 395 | ||
402 | __raw_writel(cfg, data->sfrbase + REG_MMU_CFG); | 396 | __raw_writel(cfg, data->sfrbase + REG_MMU_CFG); |
403 | data->version = ver; | ||
404 | } | 397 | } |
405 | 398 | ||
406 | static void __sysmmu_enable_nocount(struct sysmmu_drvdata *data) | 399 | static void __sysmmu_enable_nocount(struct sysmmu_drvdata *data) |