]>
git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
1 #ifndef __NVKM_MMU_PRIV_H__
2 #define __NVKM_MMU_PRIV_H__
3 #define nvkm_mmu(p) container_of((p), struct nvkm_mmu, subdev)
4 #include <subdev/mmu.h>
6 void nvkm_mmu_ctor(const struct nvkm_mmu_func
*, struct nvkm_device
*,
7 int index
, struct nvkm_mmu
*);
8 int nvkm_mmu_new_(const struct nvkm_mmu_func
*, struct nvkm_device
*,
9 int index
, struct nvkm_mmu
**);
11 struct nvkm_mmu_func
{
12 void *(*dtor
)(struct nvkm_mmu
*);
13 int (*oneinit
)(struct nvkm_mmu
*);
14 void (*init
)(struct nvkm_mmu
*);
22 int (*create
)(struct nvkm_mmu
*, u64 offset
, u64 length
, u64 mm_offset
,
23 struct lock_class_key
*, struct nvkm_vm
**);
25 void (*map_pgt
)(struct nvkm_gpuobj
*pgd
, u32 pde
,
26 struct nvkm_memory
*pgt
[2]);
27 void (*map
)(struct nvkm_vma
*, struct nvkm_memory
*,
28 struct nvkm_mem
*, u32 pte
, u32 cnt
,
30 void (*map_sg
)(struct nvkm_vma
*, struct nvkm_memory
*,
31 struct nvkm_mem
*, u32 pte
, u32 cnt
, dma_addr_t
*);
32 void (*unmap
)(struct nvkm_vma
*, struct nvkm_memory
*pgt
,
34 void (*flush
)(struct nvkm_vm
*);
37 struct nvkm_sclass base
;
38 int (*ctor
)(struct nvkm_mmu
*, u64 addr
, u64 size
,
39 void *argv
, u32 argc
, struct lock_class_key
*,
40 const char *name
, struct nvkm_vmm
**);
45 int nvkm_vm_create(struct nvkm_mmu
*, u64
, u64
, u64
, u32
,
46 struct lock_class_key
*, struct nvkm_vm
**);
48 int nv50_vm_create(struct nvkm_mmu
*, u64
, u64
, u64
, struct lock_class_key
*,
50 void nv50_vm_map_pgt(struct nvkm_gpuobj
*, u32
, struct nvkm_memory
**);
51 void nv50_vm_map(struct nvkm_vma
*, struct nvkm_memory
*, struct nvkm_mem
*,
53 void nv50_vm_map_sg(struct nvkm_vma
*, struct nvkm_memory
*, struct nvkm_mem
*,
54 u32
, u32
, dma_addr_t
*);
55 void nv50_vm_unmap(struct nvkm_vma
*, struct nvkm_memory
*, u32
, u32
);
56 void nv50_vm_flush(struct nvkm_vm
*);
58 int gf100_vm_create(struct nvkm_mmu
*, u64
, u64
, u64
, struct lock_class_key
*,
60 void gf100_vm_map_pgt(struct nvkm_gpuobj
*, u32
, struct nvkm_memory
**);
61 void gf100_vm_map(struct nvkm_vma
*, struct nvkm_memory
*, struct nvkm_mem
*,
63 void gf100_vm_map_sg(struct nvkm_vma
*, struct nvkm_memory
*, struct nvkm_mem
*,
64 u32
, u32
, dma_addr_t
*);
65 void gf100_vm_unmap(struct nvkm_vma
*, struct nvkm_memory
*, u32
, u32
);
66 void gf100_vm_flush(struct nvkm_vm
*);
70 struct nvkm_mmu_ptc
*ptc
;
71 struct nvkm_mmu_ptp
*ptp
;
73 struct nvkm_memory
*memory
;
77 struct list_head head
;
80 void nvkm_mmu_ptc_dump(struct nvkm_mmu
*);
82 nvkm_mmu_ptc_get(struct nvkm_mmu
*, u32 size
, u32 align
, bool zero
);
83 void nvkm_mmu_ptc_put(struct nvkm_mmu
*, bool force
, struct nvkm_mmu_pt
**);