]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
c9582455 BS |
2 | #ifndef __NVKM_MMU_PRIV_H__ |
3 | #define __NVKM_MMU_PRIV_H__ | |
4 | #define nvkm_mmu(p) container_of((p), struct nvkm_mmu, subdev) | |
5 | #include <subdev/mmu.h> | |
6 | ||
7 | void nvkm_mmu_ctor(const struct nvkm_mmu_func *, struct nvkm_device *, | |
8 | int index, struct nvkm_mmu *); | |
9 | int nvkm_mmu_new_(const struct nvkm_mmu_func *, struct nvkm_device *, | |
10 | int index, struct nvkm_mmu **); | |
11 | ||
12 | struct nvkm_mmu_func { | |
13 | void *(*dtor)(struct nvkm_mmu *); | |
14 | int (*oneinit)(struct nvkm_mmu *); | |
15 | void (*init)(struct nvkm_mmu *); | |
16 | ||
17 | u64 limit; | |
18 | u8 dma_bits; | |
19 | u32 pgt_bits; | |
20 | u8 spg_shift; | |
21 | u8 lpg_shift; | |
22 | ||
23 | int (*create)(struct nvkm_mmu *, u64 offset, u64 length, u64 mm_offset, | |
24 | struct lock_class_key *, struct nvkm_vm **); | |
25 | ||
26 | void (*map_pgt)(struct nvkm_gpuobj *pgd, u32 pde, | |
27 | struct nvkm_memory *pgt[2]); | |
28 | void (*map)(struct nvkm_vma *, struct nvkm_memory *, | |
29 | struct nvkm_mem *, u32 pte, u32 cnt, | |
30 | u64 phys, u64 delta); | |
31 | void (*map_sg)(struct nvkm_vma *, struct nvkm_memory *, | |
32 | struct nvkm_mem *, u32 pte, u32 cnt, dma_addr_t *); | |
33 | void (*unmap)(struct nvkm_vma *, struct nvkm_memory *pgt, | |
34 | u32 pte, u32 cnt); | |
35 | void (*flush)(struct nvkm_vm *); | |
36 | }; | |
37 | ||
38 | int nvkm_vm_create(struct nvkm_mmu *, u64, u64, u64, u32, | |
39 | struct lock_class_key *, struct nvkm_vm **); | |
40 | #endif |