mirror of https://gitee.com/openkylin/linux.git
iommu/ipmmu-vmsa: Calculate context registers' offset instead of a macro
Since we will have changed memory mapping of the IPMMU in the future, this patch uses ipmmu_features values instead of a macro to calculate context registers offset. 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
16d9454f5e
commit
3dc28d9f59
|
@ -50,6 +50,8 @@ struct ipmmu_features {
|
|||
bool twobit_imttbcr_sl0;
|
||||
bool reserved_context;
|
||||
bool cache_snoop;
|
||||
unsigned int ctx_offset_base;
|
||||
unsigned int ctx_offset_stride;
|
||||
};
|
||||
|
||||
struct ipmmu_vmsa_device {
|
||||
|
@ -99,8 +101,6 @@ static struct ipmmu_vmsa_device *to_ipmmu(struct device *dev)
|
|||
|
||||
#define IM_NS_ALIAS_OFFSET 0x800
|
||||
|
||||
#define IM_CTX_SIZE 0x40
|
||||
|
||||
/* MMU "context" registers */
|
||||
#define IMCTR 0x0000 /* R-Car Gen2/3 */
|
||||
#define IMCTR_INTEN (1 << 2) /* R-Car Gen2/3 */
|
||||
|
@ -193,7 +193,8 @@ static void ipmmu_write(struct ipmmu_vmsa_device *mmu, unsigned int 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;
|
||||
return mmu->features->ctx_offset_base +
|
||||
context_id * mmu->features->ctx_offset_stride + reg;
|
||||
}
|
||||
|
||||
static u32 ipmmu_ctx_read(struct ipmmu_vmsa_device *mmu,
|
||||
|
@ -939,6 +940,8 @@ static const struct ipmmu_features ipmmu_features_default = {
|
|||
.twobit_imttbcr_sl0 = false,
|
||||
.reserved_context = false,
|
||||
.cache_snoop = true,
|
||||
.ctx_offset_base = 0,
|
||||
.ctx_offset_stride = 0x40,
|
||||
};
|
||||
|
||||
static const struct ipmmu_features ipmmu_features_rcar_gen3 = {
|
||||
|
@ -950,6 +953,8 @@ static const struct ipmmu_features ipmmu_features_rcar_gen3 = {
|
|||
.twobit_imttbcr_sl0 = true,
|
||||
.reserved_context = true,
|
||||
.cache_snoop = false,
|
||||
.ctx_offset_base = 0,
|
||||
.ctx_offset_stride = 0x40,
|
||||
};
|
||||
|
||||
static const struct of_device_id ipmmu_of_ids[] = {
|
||||
|
|
Loading…
Reference in New Issue