aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_vm.h
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2010-12-15 11:04:39 +1000
committerBen Skeggs <bskeggs@redhat.com>2010-12-21 17:17:01 +1000
commit3ee0128140eed7d32b785a335099a2ec38258283 (patch)
tree073b55ee965a27e521ad4d4ae6ac7deecbb903c9 /drivers/gpu/drm/nouveau/nouveau_vm.h
parent147dc38e976f4dd6d888d585649e724a3e82a9b2 (diff)
downloadkernel_samsung_aries-3ee0128140eed7d32b785a335099a2ec38258283.zip
kernel_samsung_aries-3ee0128140eed7d32b785a335099a2ec38258283.tar.gz
kernel_samsung_aries-3ee0128140eed7d32b785a335099a2ec38258283.tar.bz2
drm/nouveau: modify vm to accomodate dual page tables for nvc0
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_vm.h')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_vm.h16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_vm.h b/drivers/gpu/drm/nouveau/nouveau_vm.h
index b6755cf..105b6f6 100644
--- a/drivers/gpu/drm/nouveau/nouveau_vm.h
+++ b/drivers/gpu/drm/nouveau/nouveau_vm.h
@@ -31,9 +31,8 @@
#include "nouveau_mm.h"
struct nouveau_vm_pgt {
- struct nouveau_gpuobj *obj;
- u32 page_shift;
- u32 refcount;
+ struct nouveau_gpuobj *obj[2];
+ u32 refcount[2];
};
struct nouveau_vm_pgd {
@@ -65,9 +64,8 @@ struct nouveau_vm {
u8 spg_shift;
u8 lpg_shift;
- void (*map_pgt)(struct nouveau_gpuobj *pgd, u32 type, u32 pde,
- struct nouveau_gpuobj *pgt);
- void (*unmap_pgt)(struct nouveau_gpuobj *pgd, u32 pde);
+ void (*map_pgt)(struct nouveau_gpuobj *pgd, u32 pde,
+ struct nouveau_gpuobj *pgt[2]);
void (*map)(struct nouveau_vma *, struct nouveau_gpuobj *,
struct nouveau_vram *, u32 pte, u32 cnt, u64 phys);
void (*map_sg)(struct nouveau_vma *, struct nouveau_gpuobj *,
@@ -78,7 +76,6 @@ struct nouveau_vm {
/* nouveau_vm.c */
int nouveau_vm_new(struct drm_device *, u64 offset, u64 length, u64 mm_offset,
- u8 pgt_bits, u8 spg_shift, u8 lpg_shift,
struct nouveau_vm **);
int nouveau_vm_ref(struct nouveau_vm *, struct nouveau_vm **,
struct nouveau_gpuobj *pgd);
@@ -93,9 +90,8 @@ void nouveau_vm_map_sg(struct nouveau_vma *, u64 offset, u64 length,
dma_addr_t *);
/* nv50_vm.c */
-void nv50_vm_map_pgt(struct nouveau_gpuobj *pgd, u32 type, u32 pde,
- struct nouveau_gpuobj *pgt);
-void nv50_vm_unmap_pgt(struct nouveau_gpuobj *pgd, u32 pde);
+void nv50_vm_map_pgt(struct nouveau_gpuobj *pgd, u32 pde,
+ struct nouveau_gpuobj *pgt[2]);
void nv50_vm_map(struct nouveau_vma *, struct nouveau_gpuobj *,
struct nouveau_vram *, u32 pte, u32 cnt, u64 phys);
void nv50_vm_map_sg(struct nouveau_vma *, struct nouveau_gpuobj *,