forked from Minki/linux
iommu/ipmmu-vmsa: Add helper functions for MMU "context" registers
Since we will have changed memory mapping of the IPMMU in the future, This patch adds helper functions ipmmu_ctx_{reg,read,write}() for MMU "context" registers. No behavior change. Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
df9828aaa4
commit
16d9454f5e
@ -190,29 +190,43 @@ static void ipmmu_write(struct ipmmu_vmsa_device *mmu, unsigned int offset,
|
||||
iowrite32(data, mmu->base + offset);
|
||||
}
|
||||
|
||||
static unsigned int ipmmu_ctx_reg(struct ipmmu_vmsa_device *mmu,
|
||||
unsigned int context_id, unsigned int reg)
|
||||
{
|
||||
return context_id * IM_CTX_SIZE + reg;
|
||||
}
|
||||
|
||||
static u32 ipmmu_ctx_read(struct ipmmu_vmsa_device *mmu,
|
||||
unsigned int context_id, unsigned int reg)
|
||||
{
|
||||
return ipmmu_read(mmu, ipmmu_ctx_reg(mmu, context_id, reg));
|
||||
}
|
||||
|
||||
static void ipmmu_ctx_write(struct ipmmu_vmsa_device *mmu,
|
||||
unsigned int context_id, unsigned int reg, u32 data)
|
||||
{
|
||||
ipmmu_write(mmu, ipmmu_ctx_reg(mmu, context_id, reg), data);
|
||||
}
|
||||
|
||||
static u32 ipmmu_ctx_read_root(struct ipmmu_vmsa_domain *domain,
|
||||
unsigned int reg)
|
||||
{
|
||||
return ipmmu_read(domain->mmu->root,
|
||||
domain->context_id * IM_CTX_SIZE + reg);
|
||||
return ipmmu_ctx_read(domain->mmu->root, domain->context_id, reg);
|
||||
}
|
||||
|
||||
static void ipmmu_ctx_write_root(struct ipmmu_vmsa_domain *domain,
|
||||
unsigned int reg, u32 data)
|
||||
{
|
||||
ipmmu_write(domain->mmu->root,
|
||||
domain->context_id * IM_CTX_SIZE + reg, data);
|
||||
ipmmu_ctx_write(domain->mmu->root, domain->context_id, reg, data);
|
||||
}
|
||||
|
||||
static void ipmmu_ctx_write_all(struct ipmmu_vmsa_domain *domain,
|
||||
unsigned int reg, u32 data)
|
||||
{
|
||||
if (domain->mmu != domain->mmu->root)
|
||||
ipmmu_write(domain->mmu,
|
||||
domain->context_id * IM_CTX_SIZE + reg, data);
|
||||
ipmmu_ctx_write(domain->mmu, domain->context_id, reg, data);
|
||||
|
||||
ipmmu_write(domain->mmu->root,
|
||||
domain->context_id * IM_CTX_SIZE + reg, data);
|
||||
ipmmu_ctx_write(domain->mmu->root, domain->context_id, reg, data);
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
@ -913,7 +927,7 @@ static void ipmmu_device_reset(struct ipmmu_vmsa_device *mmu)
|
||||
|
||||
/* Disable all contexts. */
|
||||
for (i = 0; i < mmu->num_ctx; ++i)
|
||||
ipmmu_write(mmu, i * IM_CTX_SIZE + IMCTR, 0);
|
||||
ipmmu_ctx_write(mmu, i, IMCTR, 0);
|
||||
}
|
||||
|
||||
static const struct ipmmu_features ipmmu_features_default = {
|
||||
|
Loading…
Reference in New Issue
Block a user