Lines Matching refs:smmu

10 #include "arm-smmu.h"
20 * The third instance usage is through standard arm-smmu driver itself and
26 struct arm_smmu_device smmu;
30 static inline void __iomem *nvidia_smmu_page(struct arm_smmu_device *smmu,
35 nvidia_smmu = container_of(smmu, struct nvidia_smmu, smmu);
36 return nvidia_smmu->bases[inst] + (page << smmu->pgshift);
39 static u32 nvidia_smmu_read_reg(struct arm_smmu_device *smmu,
42 void __iomem *reg = nvidia_smmu_page(smmu, 0, page) + offset;
47 static void nvidia_smmu_write_reg(struct arm_smmu_device *smmu,
53 void __iomem *reg = nvidia_smmu_page(smmu, i, page) + offset;
59 static u64 nvidia_smmu_read_reg64(struct arm_smmu_device *smmu,
62 void __iomem *reg = nvidia_smmu_page(smmu, 0, page) + offset;
67 static void nvidia_smmu_write_reg64(struct arm_smmu_device *smmu,
73 void __iomem *reg = nvidia_smmu_page(smmu, i, page) + offset;
79 static void nvidia_smmu_tlb_sync(struct arm_smmu_device *smmu, int page,
84 arm_smmu_writel(smmu, page, sync, 0);
96 reg = nvidia_smmu_page(smmu, i, page) + status;
109 dev_err_ratelimited(smmu->dev,
113 static int nvidia_smmu_reset(struct arm_smmu_device *smmu)
119 void __iomem *reg = nvidia_smmu_page(smmu, i, ARM_SMMU_GR0) +
131 struct arm_smmu_device *smmu,
135 void __iomem *gr0_base = nvidia_smmu_page(smmu, inst, 0);
145 dev_err_ratelimited(smmu->dev,
147 dev_err_ratelimited(smmu->dev,
159 struct arm_smmu_device *smmu = dev;
164 irq_ret = nvidia_smmu_global_fault_inst(irq, smmu, inst);
173 struct arm_smmu_device *smmu,
178 void __iomem *gr1_base = nvidia_smmu_page(smmu, inst, 1);
179 void __iomem *cb_base = nvidia_smmu_page(smmu, inst, smmu->numpage + idx);
189 dev_err_ratelimited(smmu->dev,
202 struct arm_smmu_device *smmu;
207 smmu = smmu_domain->smmu;
216 for (idx = 0; idx < smmu->num_context_banks; idx++) {
217 irq_ret = nvidia_smmu_context_fault_bank(irq, smmu,
238 struct arm_smmu_device *nvidia_smmu_impl_init(struct arm_smmu_device *smmu)
241 struct device *dev = smmu->dev;
250 * Copy the data from struct arm_smmu_device *smmu allocated in
251 * arm-smmu.c. The smmu from struct nvidia_smmu replaces the smmu
252 * pointer used in arm-smmu.c once this function returns.
253 * This is necessary to derive nvidia_smmu from smmu pointer passed
256 nvidia_smmu->smmu = *smmu;
257 /* Instance 0 is ioremapped by arm-smmu.c. */
258 nvidia_smmu->bases[0] = smmu->base;
268 nvidia_smmu->smmu.impl = &nvidia_smmu_impl;
271 * Free the struct arm_smmu_device *smmu allocated in arm-smmu.c.
272 * Once this function returns, arm-smmu.c would use arm_smmu_device
275 devm_kfree(dev, smmu);
277 return &nvidia_smmu->smmu;