Home
last modified time | relevance | path

Searched refs:smmu (Results 1 – 25 of 55) sorted by relevance

123

/Linux-v5.10/drivers/iommu/arm/arm-smmu/
Darm-smmu.c74 static inline int arm_smmu_rpm_get(struct arm_smmu_device *smmu) in arm_smmu_rpm_get() argument
76 if (pm_runtime_enabled(smmu->dev)) in arm_smmu_rpm_get()
77 return pm_runtime_get_sync(smmu->dev); in arm_smmu_rpm_get()
82 static inline void arm_smmu_rpm_put(struct arm_smmu_device *smmu) in arm_smmu_rpm_put() argument
84 if (pm_runtime_enabled(smmu->dev)) in arm_smmu_rpm_put()
85 pm_runtime_put_autosuspend(smmu->dev); in arm_smmu_rpm_put()
135 struct arm_smmu_device **smmu) in arm_smmu_register_legacy_master() argument
178 *smmu = dev_get_drvdata(smmu_dev); in arm_smmu_register_legacy_master()
200 struct arm_smmu_device **smmu) in arm_smmu_register_legacy_master() argument
212 static void __arm_smmu_tlb_sync(struct arm_smmu_device *smmu, int page, in __arm_smmu_tlb_sync() argument
[all …]
Darm-smmu-impl.c28 static u32 arm_smmu_read_ns(struct arm_smmu_device *smmu, int page, in arm_smmu_read_ns() argument
33 return readl_relaxed(arm_smmu_page(smmu, page) + offset); in arm_smmu_read_ns()
36 static void arm_smmu_write_ns(struct arm_smmu_device *smmu, int page, in arm_smmu_write_ns() argument
41 writel_relaxed(val, arm_smmu_page(smmu, page) + offset); in arm_smmu_write_ns()
52 struct arm_smmu_device smmu; member
56 static int cavium_cfg_probe(struct arm_smmu_device *smmu) in cavium_cfg_probe() argument
59 struct cavium_smmu *cs = container_of(smmu, struct cavium_smmu, smmu); in cavium_cfg_probe()
65 cs->id_base = atomic_fetch_add(smmu->num_context_banks, &context_count); in cavium_cfg_probe()
66 dev_notice(smmu->dev, "\tenabling workaround for Cavium erratum 27704\n"); in cavium_cfg_probe()
74 struct cavium_smmu *cs = container_of(smmu_domain->smmu, in cavium_init_context()
[all …]
Darm-smmu-nvidia.c26 struct arm_smmu_device smmu; member
30 static inline void __iomem *nvidia_smmu_page(struct arm_smmu_device *smmu, in nvidia_smmu_page() argument
35 nvidia_smmu = container_of(smmu, struct nvidia_smmu, smmu); in nvidia_smmu_page()
36 return nvidia_smmu->bases[inst] + (page << smmu->pgshift); in nvidia_smmu_page()
39 static u32 nvidia_smmu_read_reg(struct arm_smmu_device *smmu, in nvidia_smmu_read_reg() argument
42 void __iomem *reg = nvidia_smmu_page(smmu, 0, page) + offset; in nvidia_smmu_read_reg()
47 static void nvidia_smmu_write_reg(struct arm_smmu_device *smmu, in nvidia_smmu_write_reg() argument
53 void __iomem *reg = nvidia_smmu_page(smmu, i, page) + offset; in nvidia_smmu_write_reg()
59 static u64 nvidia_smmu_read_reg64(struct arm_smmu_device *smmu, in nvidia_smmu_read_reg64() argument
62 void __iomem *reg = nvidia_smmu_page(smmu, 0, page) + offset; in nvidia_smmu_read_reg64()
[all …]
Darm-smmu-qcom.c12 struct arm_smmu_device smmu; member
34 static int qcom_sdm845_smmu500_reset(struct arm_smmu_device *smmu) in qcom_sdm845_smmu500_reset() argument
46 dev_warn(smmu->dev, "Failed to turn off SAFE logic\n"); in qcom_sdm845_smmu500_reset()
51 static int qcom_smmu500_reset(struct arm_smmu_device *smmu) in qcom_smmu500_reset() argument
53 const struct device_node *np = smmu->dev->of_node; in qcom_smmu500_reset()
55 arm_mmu500_reset(smmu); in qcom_smmu500_reset()
58 return qcom_sdm845_smmu500_reset(smmu); in qcom_smmu500_reset()
68 struct arm_smmu_device *qcom_smmu_impl_init(struct arm_smmu_device *smmu) in qcom_smmu_impl_init() argument
76 qsmmu = devm_kzalloc(smmu->dev, sizeof(*qsmmu), GFP_KERNEL); in qcom_smmu_impl_init()
80 qsmmu->smmu = *smmu; in qcom_smmu_impl_init()
[all …]
Darm-smmu.h364 struct arm_smmu_device *smmu; member
376 struct arm_smmu_device *smmu; member
421 u32 (*read_reg)(struct arm_smmu_device *smmu, int page, int offset);
422 void (*write_reg)(struct arm_smmu_device *smmu, int page, int offset,
424 u64 (*read_reg64)(struct arm_smmu_device *smmu, int page, int offset);
425 void (*write_reg64)(struct arm_smmu_device *smmu, int page, int offset,
427 int (*cfg_probe)(struct arm_smmu_device *smmu);
428 int (*reset)(struct arm_smmu_device *smmu);
431 void (*tlb_sync)(struct arm_smmu_device *smmu, int page, int sync,
437 struct arm_smmu_device *smmu,
[all …]
DMakefile4 arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-nvidia.o arm-smmu-qcom.o
/Linux-v5.10/drivers/iommu/
Dtegra-smmu.c23 struct tegra_smmu *smmu; member
53 struct tegra_smmu *smmu; member
69 static inline void smmu_writel(struct tegra_smmu *smmu, u32 value, in smmu_writel() argument
72 writel(value, smmu->regs + offset); in smmu_writel()
75 static inline u32 smmu_readl(struct tegra_smmu *smmu, unsigned long offset) in smmu_readl() argument
77 return readl(smmu->regs + offset); in smmu_readl()
86 #define SMMU_TLB_CONFIG_ACTIVE_LINES(smmu) \ argument
87 ((smmu)->soc->num_tlb_lines & (smmu)->tlb_mask)
165 static bool smmu_dma_addr_valid(struct tegra_smmu *smmu, dma_addr_t addr) in smmu_dma_addr_valid() argument
168 return (addr & smmu->pfn_mask) == addr; in smmu_dma_addr_valid()
[all …]
/Linux-v5.10/drivers/iommu/arm/arm-smmu-v3/
Darm-smmu-v3.c86 struct arm_smmu_device *smmu) in arm_smmu_page1_fixup() argument
89 return smmu->page1 + offset - SZ_64K; in arm_smmu_page1_fixup()
91 return smmu->base + offset; in arm_smmu_page1_fixup()
99 static void parse_driver_options(struct arm_smmu_device *smmu) in parse_driver_options() argument
104 if (of_property_read_bool(smmu->dev->of_node, in parse_driver_options()
106 smmu->options |= arm_smmu_options[i].opt; in parse_driver_options()
107 dev_notice(smmu->dev, "option %s\n", in parse_driver_options()
190 static void queue_poll_init(struct arm_smmu_device *smmu, in queue_poll_init() argument
195 qp->wfe = !!(smmu->features & ARM_SMMU_FEAT_SEV); in queue_poll_init()
338 static void arm_smmu_cmdq_build_sync_cmd(u64 *cmd, struct arm_smmu_device *smmu, in arm_smmu_cmdq_build_sync_cmd() argument
[all …]
Darm-smmu-v3-sva.c25 struct arm_smmu_device *smmu; in arm_smmu_share_asid() local
41 smmu = smmu_domain->smmu; in arm_smmu_share_asid()
44 XA_LIMIT(1, (1 << smmu->asid_bits) - 1), GFP_KERNEL); in arm_smmu_share_asid()
61 arm_smmu_tlb_inv_asid(smmu, asid); in arm_smmu_share_asid()
158 bool arm_smmu_sva_supported(struct arm_smmu_device *smmu) in arm_smmu_sva_supported() argument
168 if ((smmu->features & feat_mask) != feat_mask) in arm_smmu_sva_supported()
171 if (!(smmu->pgsize_bitmap & PAGE_SIZE)) in arm_smmu_sva_supported()
182 if (smmu->oas < oas) in arm_smmu_sva_supported()
188 if (smmu->asid_bits < asid_bits) in arm_smmu_sva_supported()
197 dev_dbg(smmu->dev, "%d shared contexts\n", (1 << asid_bits) - in arm_smmu_sva_supported()
[all …]
DMakefile3 arm_smmu_v3-objs-y += arm-smmu-v3.o
4 arm_smmu_v3-objs-$(CONFIG_ARM_SMMU_V3_SVA) += arm-smmu-v3-sva.o
Darm-smmu-v3.h643 struct arm_smmu_device *smmu; member
664 struct arm_smmu_device *smmu; member
688 void arm_smmu_tlb_inv_asid(struct arm_smmu_device *smmu, u16 asid);
692 bool arm_smmu_sva_supported(struct arm_smmu_device *smmu);
698 static inline bool arm_smmu_sva_supported(struct arm_smmu_device *smmu) in arm_smmu_sva_supported() argument
/Linux-v5.10/drivers/memory/tegra/
Dtegra210.c19 .smmu = {
33 .smmu = {
47 .smmu = {
61 .smmu = {
75 .smmu = {
89 .smmu = {
103 .smmu = {
117 .smmu = {
131 .smmu = {
145 .smmu = {
[all …]
Dtegra30.c43 .smmu = {
57 .smmu = {
71 .smmu = {
85 .smmu = {
99 .smmu = {
113 .smmu = {
127 .smmu = {
141 .smmu = {
155 .smmu = {
169 .smmu = {
[all …]
Dtegra114.c22 .smmu = {
36 .smmu = {
50 .smmu = {
64 .smmu = {
78 .smmu = {
92 .smmu = {
106 .smmu = {
120 .smmu = {
134 .smmu = {
148 .smmu = {
[all …]
Dtegra124.c22 .smmu = {
36 .smmu = {
50 .smmu = {
64 .smmu = {
78 .smmu = {
92 .smmu = {
106 .smmu = {
120 .smmu = {
134 .smmu = {
148 .smmu = {
[all …]
Dmc.c684 if (IS_ENABLED(CONFIG_TEGRA_IOMMU_SMMU) && mc->soc->smmu) { in tegra_mc_probe()
685 mc->smmu = tegra_smmu_probe(&pdev->dev, mc->soc->smmu, mc); in tegra_mc_probe()
686 if (IS_ERR(mc->smmu)) { in tegra_mc_probe()
688 PTR_ERR(mc->smmu)); in tegra_mc_probe()
689 mc->smmu = NULL; in tegra_mc_probe()
693 if (IS_ENABLED(CONFIG_TEGRA_IOMMU_GART) && !mc->soc->smmu) { in tegra_mc_probe()
/Linux-v5.10/arch/arm64/boot/dts/marvell/
Darmada-8040.dtsi18 &smmu {
24 <0x0 &smmu 0x480 0x20>,
25 <0x100 &smmu 0x4a0 0x20>,
26 <0x200 &smmu 0x4c0 0x20>;
40 iommus = <&smmu 0x444>;
44 iommus = <&smmu 0x445>;
48 iommus = <&smmu 0x440>;
52 iommus = <&smmu 0x441>;
56 iommus = <&smmu 0x454>;
60 iommus = <&smmu 0x450>;
[all …]
Darmada-7040.dtsi18 &smmu {
24 <0x0 &smmu 0x480 0x20>,
25 <0x100 &smmu 0x4a0 0x20>,
26 <0x200 &smmu 0x4c0 0x20>;
31 iommus = <&smmu 0x444>;
35 iommus = <&smmu 0x445>;
39 iommus = <&smmu 0x440>;
43 iommus = <&smmu 0x441>;
/Linux-v5.10/drivers/acpi/arm64/
Diort.c407 struct acpi_iort_smmu_v3 *smmu; in iort_get_id_mapping_index() local
419 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in iort_get_id_mapping_index()
424 if (smmu->event_gsiv && smmu->pri_gsiv && smmu->gerr_gsiv in iort_get_id_mapping_index()
425 && smmu->sync_gsiv) in iort_get_id_mapping_index()
428 if (smmu->id_mapping_index >= node->mapping_count) { in iort_get_id_mapping_index()
434 return smmu->id_mapping_index; in iort_get_id_mapping_index()
799 struct acpi_iort_smmu_v3 *smmu; in iort_get_msi_resv_iommu() local
801 smmu = (struct acpi_iort_smmu_v3 *)iommu->node_data; in iort_get_msi_resv_iommu()
802 if (smmu->model == ACPI_IORT_SMMU_V3_HISILICON_HI161X) in iort_get_msi_resv_iommu()
1209 struct acpi_iort_smmu_v3 *smmu; in arm_smmu_v3_count_resources() local
[all …]
/Linux-v5.10/Documentation/devicetree/bindings/display/
Darm,komeda.txt15 devicetree/bindings/iommu/arm,smmu-v3.txt,
49 iommus = <&smmu 0>, <&smmu 1>, <&smmu 2>, <&smmu 3>,
50 <&smmu 4>, <&smmu 5>, <&smmu 6>, <&smmu 7>,
51 <&smmu 8>, <&smmu 9>;
/Linux-v5.10/include/soc/tegra/
Dmc.h43 struct tegra_smmu_enable smmu; member
84 void tegra_smmu_remove(struct tegra_smmu *smmu);
93 static inline void tegra_smmu_remove(struct tegra_smmu *smmu) in tegra_smmu_remove() argument
156 const struct tegra_smmu_soc *smmu; member
167 struct tegra_smmu *smmu; member
/Linux-v5.10/Documentation/devicetree/bindings/iommu/
Dnvidia,tegra30-smmu.txt4 - compatible : "nvidia,tegra30-smmu"
13 smmu {
14 compatible = "nvidia,tegra30-smmu";
/Linux-v5.10/drivers/iommu/arm/
DMakefile2 obj-y += arm-smmu/ arm-smmu-v3/
/Linux-v5.10/arch/arm64/boot/dts/altera/
Dsocfpga_stratix10.dtsi153 iommus = <&smmu 1>;
171 iommus = <&smmu 2>;
189 iommus = <&smmu 3>;
301 iommus = <&smmu 5>;
353 smmu: iommu@fa000000 { label
354 compatible = "arm,mmu-500", "arm,smmu-v2";
487 iommus = <&smmu 6>;
500 iommus = <&smmu 7>;
/Linux-v5.10/arch/arm64/boot/dts/intel/
Dsocfpga_agilex.dtsi150 iommus = <&smmu 1>;
168 iommus = <&smmu 2>;
186 iommus = <&smmu 3>;
300 iommus = <&smmu 5>;
352 smmu: iommu@fa000000 { label
353 compatible = "arm,mmu-500", "arm,smmu-v2";
487 iommus = <&smmu 6>;
499 iommus = <&smmu 7>;

123