Lines Matching refs:etnaviv_domain
50 etnaviv_iommuv2_ensure_stlb(struct etnaviv_iommuv2_domain *etnaviv_domain, in etnaviv_iommuv2_ensure_stlb() argument
53 if (etnaviv_domain->stlb_cpu[stlb]) in etnaviv_iommuv2_ensure_stlb()
56 etnaviv_domain->stlb_cpu[stlb] = in etnaviv_iommuv2_ensure_stlb()
57 dma_alloc_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_ensure_stlb()
58 &etnaviv_domain->stlb_dma[stlb], in etnaviv_iommuv2_ensure_stlb()
61 if (!etnaviv_domain->stlb_cpu[stlb]) in etnaviv_iommuv2_ensure_stlb()
64 memset32(etnaviv_domain->stlb_cpu[stlb], MMUv2_PTE_EXCEPTION, in etnaviv_iommuv2_ensure_stlb()
67 etnaviv_domain->mtlb_cpu[stlb] = etnaviv_domain->stlb_dma[stlb] | in etnaviv_iommuv2_ensure_stlb()
76 struct etnaviv_iommuv2_domain *etnaviv_domain = in etnaviv_iommuv2_map() local
93 ret = etnaviv_iommuv2_ensure_stlb(etnaviv_domain, mtlb_entry); in etnaviv_iommuv2_map()
97 etnaviv_domain->stlb_cpu[mtlb_entry][stlb_entry] = entry; in etnaviv_iommuv2_map()
105 struct etnaviv_iommuv2_domain *etnaviv_domain = in etnaviv_iommuv2_unmap() local
115 etnaviv_domain->stlb_cpu[mtlb_entry][stlb_entry] = MMUv2_PTE_EXCEPTION; in etnaviv_iommuv2_unmap()
120 static int etnaviv_iommuv2_init(struct etnaviv_iommuv2_domain *etnaviv_domain) in etnaviv_iommuv2_init() argument
125 etnaviv_domain->base.bad_page_cpu = in etnaviv_iommuv2_init()
126 dma_alloc_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_init()
127 &etnaviv_domain->base.bad_page_dma, in etnaviv_iommuv2_init()
129 if (!etnaviv_domain->base.bad_page_cpu) { in etnaviv_iommuv2_init()
134 memset32(etnaviv_domain->base.bad_page_cpu, 0xdead55aa, in etnaviv_iommuv2_init()
137 etnaviv_domain->pta_cpu = dma_alloc_wc(etnaviv_domain->base.dev, in etnaviv_iommuv2_init()
138 SZ_4K, &etnaviv_domain->pta_dma, in etnaviv_iommuv2_init()
140 if (!etnaviv_domain->pta_cpu) { in etnaviv_iommuv2_init()
145 etnaviv_domain->mtlb_cpu = dma_alloc_wc(etnaviv_domain->base.dev, in etnaviv_iommuv2_init()
146 SZ_4K, &etnaviv_domain->mtlb_dma, in etnaviv_iommuv2_init()
148 if (!etnaviv_domain->mtlb_cpu) { in etnaviv_iommuv2_init()
153 memset32(etnaviv_domain->mtlb_cpu, MMUv2_PTE_EXCEPTION, in etnaviv_iommuv2_init()
159 if (etnaviv_domain->base.bad_page_cpu) in etnaviv_iommuv2_init()
160 dma_free_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_init()
161 etnaviv_domain->base.bad_page_cpu, in etnaviv_iommuv2_init()
162 etnaviv_domain->base.bad_page_dma); in etnaviv_iommuv2_init()
164 if (etnaviv_domain->pta_cpu) in etnaviv_iommuv2_init()
165 dma_free_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_init()
166 etnaviv_domain->pta_cpu, etnaviv_domain->pta_dma); in etnaviv_iommuv2_init()
168 if (etnaviv_domain->mtlb_cpu) in etnaviv_iommuv2_init()
169 dma_free_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_init()
170 etnaviv_domain->mtlb_cpu, etnaviv_domain->mtlb_dma); in etnaviv_iommuv2_init()
177 struct etnaviv_iommuv2_domain *etnaviv_domain = in etnaviv_iommuv2_domain_free() local
181 dma_free_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_domain_free()
182 etnaviv_domain->base.bad_page_cpu, in etnaviv_iommuv2_domain_free()
183 etnaviv_domain->base.bad_page_dma); in etnaviv_iommuv2_domain_free()
185 dma_free_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_domain_free()
186 etnaviv_domain->pta_cpu, etnaviv_domain->pta_dma); in etnaviv_iommuv2_domain_free()
188 dma_free_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_domain_free()
189 etnaviv_domain->mtlb_cpu, etnaviv_domain->mtlb_dma); in etnaviv_iommuv2_domain_free()
192 if (etnaviv_domain->stlb_cpu[i]) in etnaviv_iommuv2_domain_free()
193 dma_free_wc(etnaviv_domain->base.dev, SZ_4K, in etnaviv_iommuv2_domain_free()
194 etnaviv_domain->stlb_cpu[i], in etnaviv_iommuv2_domain_free()
195 etnaviv_domain->stlb_dma[i]); in etnaviv_iommuv2_domain_free()
198 vfree(etnaviv_domain); in etnaviv_iommuv2_domain_free()
203 struct etnaviv_iommuv2_domain *etnaviv_domain = in etnaviv_iommuv2_dump_size() local
209 if (etnaviv_domain->mtlb_cpu[i] & MMUv2_PTE_PRESENT) in etnaviv_iommuv2_dump_size()
217 struct etnaviv_iommuv2_domain *etnaviv_domain = in etnaviv_iommuv2_dump() local
221 memcpy(buf, etnaviv_domain->mtlb_cpu, SZ_4K); in etnaviv_iommuv2_dump()
224 if (etnaviv_domain->mtlb_cpu[i] & MMUv2_PTE_PRESENT) in etnaviv_iommuv2_dump()
225 memcpy(buf, etnaviv_domain->stlb_cpu[i], SZ_4K); in etnaviv_iommuv2_dump()
230 struct etnaviv_iommuv2_domain *etnaviv_domain = in etnaviv_iommuv2_restore_nonsec() local
239 (u32)etnaviv_domain->mtlb_dma, in etnaviv_iommuv2_restore_nonsec()
240 (u32)etnaviv_domain->base.bad_page_dma); in etnaviv_iommuv2_restore_nonsec()
250 struct etnaviv_iommuv2_domain *etnaviv_domain = in etnaviv_iommuv2_restore_sec() local
259 lower_32_bits(etnaviv_domain->pta_dma)); in etnaviv_iommuv2_restore_sec()
261 upper_32_bits(etnaviv_domain->pta_dma)); in etnaviv_iommuv2_restore_sec()
265 lower_32_bits(etnaviv_domain->base.bad_page_dma)); in etnaviv_iommuv2_restore_sec()
267 lower_32_bits(etnaviv_domain->base.bad_page_dma)); in etnaviv_iommuv2_restore_sec()
270 upper_32_bits(etnaviv_domain->base.bad_page_dma)) | in etnaviv_iommuv2_restore_sec()
272 upper_32_bits(etnaviv_domain->base.bad_page_dma))); in etnaviv_iommuv2_restore_sec()
274 etnaviv_domain->pta_cpu[0] = etnaviv_domain->mtlb_dma | in etnaviv_iommuv2_restore_sec()
312 struct etnaviv_iommuv2_domain *etnaviv_domain; in etnaviv_iommuv2_domain_alloc() local
316 etnaviv_domain = vzalloc(sizeof(*etnaviv_domain)); in etnaviv_iommuv2_domain_alloc()
317 if (!etnaviv_domain) in etnaviv_iommuv2_domain_alloc()
320 domain = &etnaviv_domain->base; in etnaviv_iommuv2_domain_alloc()
327 ret = etnaviv_iommuv2_init(etnaviv_domain); in etnaviv_iommuv2_domain_alloc()
331 return &etnaviv_domain->base; in etnaviv_iommuv2_domain_alloc()
334 vfree(etnaviv_domain); in etnaviv_iommuv2_domain_alloc()