mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
iommu/exynos: Use proper readl/writel register interface
Drivers should use generic readl/writel calls to access HW registers, so replace all __raw_readl/writel with generic version. Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
dbf6c6efa7
commit
84bd042865
@ -268,18 +268,18 @@ static bool is_sysmmu_active(struct sysmmu_drvdata *data)
|
||||
|
||||
static void sysmmu_unblock(struct sysmmu_drvdata *data)
|
||||
{
|
||||
__raw_writel(CTRL_ENABLE, data->sfrbase + REG_MMU_CTRL);
|
||||
writel(CTRL_ENABLE, data->sfrbase + REG_MMU_CTRL);
|
||||
}
|
||||
|
||||
static bool sysmmu_block(struct sysmmu_drvdata *data)
|
||||
{
|
||||
int i = 120;
|
||||
|
||||
__raw_writel(CTRL_BLOCK, data->sfrbase + REG_MMU_CTRL);
|
||||
while ((i > 0) && !(__raw_readl(data->sfrbase + REG_MMU_STATUS) & 1))
|
||||
writel(CTRL_BLOCK, data->sfrbase + REG_MMU_CTRL);
|
||||
while ((i > 0) && !(readl(data->sfrbase + REG_MMU_STATUS) & 1))
|
||||
--i;
|
||||
|
||||
if (!(__raw_readl(data->sfrbase + REG_MMU_STATUS) & 1)) {
|
||||
if (!(readl(data->sfrbase + REG_MMU_STATUS) & 1)) {
|
||||
sysmmu_unblock(data);
|
||||
return false;
|
||||
}
|
||||
@ -290,9 +290,9 @@ static bool sysmmu_block(struct sysmmu_drvdata *data)
|
||||
static void __sysmmu_tlb_invalidate(struct sysmmu_drvdata *data)
|
||||
{
|
||||
if (MMU_MAJ_VER(data->version) < 5)
|
||||
__raw_writel(0x1, data->sfrbase + REG_MMU_FLUSH);
|
||||
writel(0x1, data->sfrbase + REG_MMU_FLUSH);
|
||||
else
|
||||
__raw_writel(0x1, data->sfrbase + REG_V5_MMU_FLUSH_ALL);
|
||||
writel(0x1, data->sfrbase + REG_V5_MMU_FLUSH_ALL);
|
||||
}
|
||||
|
||||
static void __sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data,
|
||||
@ -302,10 +302,10 @@ static void __sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data,
|
||||
|
||||
for (i = 0; i < num_inv; i++) {
|
||||
if (MMU_MAJ_VER(data->version) < 5)
|
||||
__raw_writel((iova & SPAGE_MASK) | 1,
|
||||
writel((iova & SPAGE_MASK) | 1,
|
||||
data->sfrbase + REG_MMU_FLUSH_ENTRY);
|
||||
else
|
||||
__raw_writel((iova & SPAGE_MASK) | 1,
|
||||
writel((iova & SPAGE_MASK) | 1,
|
||||
data->sfrbase + REG_V5_MMU_FLUSH_ENTRY);
|
||||
iova += SPAGE_SIZE;
|
||||
}
|
||||
@ -314,9 +314,9 @@ static void __sysmmu_tlb_invalidate_entry(struct sysmmu_drvdata *data,
|
||||
static void __sysmmu_set_ptbase(struct sysmmu_drvdata *data, phys_addr_t pgd)
|
||||
{
|
||||
if (MMU_MAJ_VER(data->version) < 5)
|
||||
__raw_writel(pgd, data->sfrbase + REG_PT_BASE_ADDR);
|
||||
writel(pgd, data->sfrbase + REG_PT_BASE_ADDR);
|
||||
else
|
||||
__raw_writel(pgd >> PAGE_SHIFT,
|
||||
writel(pgd >> PAGE_SHIFT,
|
||||
data->sfrbase + REG_V5_PT_BASE_PFN);
|
||||
|
||||
__sysmmu_tlb_invalidate(data);
|
||||
@ -331,7 +331,7 @@ static void __sysmmu_get_version(struct sysmmu_drvdata *data)
|
||||
clk_enable(data->pclk);
|
||||
clk_enable(data->aclk);
|
||||
|
||||
ver = __raw_readl(data->sfrbase + REG_MMU_VERSION);
|
||||
ver = readl(data->sfrbase + REG_MMU_VERSION);
|
||||
|
||||
/* controllers on some SoCs don't report proper version */
|
||||
if (ver == 0x80000001u)
|
||||
@ -392,7 +392,7 @@ static irqreturn_t exynos_sysmmu_irq(int irq, void *dev_id)
|
||||
|
||||
clk_enable(data->clk_master);
|
||||
|
||||
itype = __ffs(__raw_readl(data->sfrbase + reg_status));
|
||||
itype = __ffs(readl(data->sfrbase + reg_status));
|
||||
for (i = 0; i < n; i++, finfo++)
|
||||
if (finfo->bit == itype)
|
||||
break;
|
||||
@ -400,7 +400,7 @@ static irqreturn_t exynos_sysmmu_irq(int irq, void *dev_id)
|
||||
BUG_ON(i == n);
|
||||
|
||||
/* print debug message */
|
||||
fault_addr = __raw_readl(data->sfrbase + finfo->addr_reg);
|
||||
fault_addr = readl(data->sfrbase + finfo->addr_reg);
|
||||
show_fault_information(data, finfo, fault_addr);
|
||||
|
||||
if (data->domain)
|
||||
@ -409,7 +409,7 @@ static irqreturn_t exynos_sysmmu_irq(int irq, void *dev_id)
|
||||
/* fault is not recovered by fault handler */
|
||||
BUG_ON(ret != 0);
|
||||
|
||||
__raw_writel(1 << itype, data->sfrbase + reg_clear);
|
||||
writel(1 << itype, data->sfrbase + reg_clear);
|
||||
|
||||
sysmmu_unblock(data);
|
||||
|
||||
@ -424,8 +424,8 @@ static void __sysmmu_disable_nocount(struct sysmmu_drvdata *data)
|
||||
{
|
||||
clk_enable(data->clk_master);
|
||||
|
||||
__raw_writel(CTRL_DISABLE, data->sfrbase + REG_MMU_CTRL);
|
||||
__raw_writel(0, data->sfrbase + REG_MMU_CFG);
|
||||
writel(CTRL_DISABLE, data->sfrbase + REG_MMU_CTRL);
|
||||
writel(0, data->sfrbase + REG_MMU_CFG);
|
||||
|
||||
clk_disable(data->aclk);
|
||||
clk_disable(data->pclk);
|
||||
@ -470,7 +470,7 @@ static void __sysmmu_init_config(struct sysmmu_drvdata *data)
|
||||
else
|
||||
cfg = CFG_QOS(15) | CFG_FLPDCACHE | CFG_ACGEN;
|
||||
|
||||
__raw_writel(cfg, data->sfrbase + REG_MMU_CFG);
|
||||
writel(cfg, data->sfrbase + REG_MMU_CFG);
|
||||
}
|
||||
|
||||
static void __sysmmu_enable_nocount(struct sysmmu_drvdata *data)
|
||||
@ -480,13 +480,13 @@ static void __sysmmu_enable_nocount(struct sysmmu_drvdata *data)
|
||||
clk_enable(data->pclk);
|
||||
clk_enable(data->aclk);
|
||||
|
||||
__raw_writel(CTRL_BLOCK, data->sfrbase + REG_MMU_CTRL);
|
||||
writel(CTRL_BLOCK, data->sfrbase + REG_MMU_CTRL);
|
||||
|
||||
__sysmmu_init_config(data);
|
||||
|
||||
__sysmmu_set_ptbase(data, data->pgtable);
|
||||
|
||||
__raw_writel(CTRL_ENABLE, data->sfrbase + REG_MMU_CTRL);
|
||||
writel(CTRL_ENABLE, data->sfrbase + REG_MMU_CTRL);
|
||||
|
||||
clk_disable(data->clk_master);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user