drm/nouveau/fb: transition nvkm_ram away from being based on nvkm_object
authorBen Skeggs <bskeggs@redhat.com>
Thu, 20 Aug 2015 04:54:14 +0000 (14:54 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 28 Aug 2015 02:40:29 +0000 (12:40 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
59 files changed:
drivers/gpu/drm/nouveau/include/nvkm/core/mm.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h
drivers/gpu/drm/nouveau/nouveau_ttm.c
drivers/gpu/drm/nouveau/nvkm/core/mm.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv50.c
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/Kbuild
drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/g84.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr3.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr5.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk104.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm107.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gt215.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/mcp77.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/mcp89.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv04.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv10.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv1a.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv20.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv25.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv30.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv35.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv36.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.h [deleted file]
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv41.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv44.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv46.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv47.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv49.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv4e.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgk104.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgm107.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/rammcp77.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv04.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv10.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv20.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv41.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv44.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv49.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv4e.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.c
drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c
drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gf100.c
drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.c
drivers/gpu/drm/nouveau/nvkm/subdev/ltc/priv.h

index 096eb1a..d92fd41 100644 (file)
@@ -27,7 +27,7 @@ struct nvkm_mm {
 static inline bool
 nvkm_mm_initialised(struct nvkm_mm *mm)
 {
-       return mm->block_size != 0;
+       return mm->heap_nodes;
 }
 
 int  nvkm_mm_init(struct nvkm_mm *, u32 offset, u32 length, u32 block);
@@ -37,4 +37,5 @@ int  nvkm_mm_head(struct nvkm_mm *, u8 heap, u8 type, u32 size_max,
 int  nvkm_mm_tail(struct nvkm_mm *, u8 heap, u8 type, u32 size_max,
                  u32 size_min, u32 align, struct nvkm_mm_node **);
 void nvkm_mm_free(struct nvkm_mm *, struct nvkm_mm_node **);
+void nvkm_mm_dump(struct nvkm_mm *, const char *);
 #endif
index 344cc99..f102cf9 100644 (file)
@@ -18,7 +18,7 @@
 #define NV_MEM_TARGET_VM          3
 #define NV_MEM_TARGET_GART        4
 
-#define NV_MEM_TYPE_VM 0x7f
+#define NVKM_RAM_TYPE_VM 0x7f
 #define NV_MEM_COMP_VM 0x03
 
 struct nvkm_mem {
@@ -52,9 +52,6 @@ struct nvkm_fb {
 
        struct nvkm_ram *ram;
 
-       struct nvkm_mm vram;
-       struct nvkm_mm tags;
-
        struct {
                struct nvkm_fb_tile region[16];
                int regions;
@@ -112,36 +109,35 @@ struct nvkm_ram_data {
        u32 freq;
 };
 
+enum nvkm_ram_type {
+       NVKM_RAM_TYPE_UNKNOWN = 0,
+       NVKM_RAM_TYPE_STOLEN,
+       NVKM_RAM_TYPE_SGRAM,
+       NVKM_RAM_TYPE_SDRAM,
+       NVKM_RAM_TYPE_DDR1,
+       NVKM_RAM_TYPE_DDR2,
+       NVKM_RAM_TYPE_DDR3,
+       NVKM_RAM_TYPE_GDDR2,
+       NVKM_RAM_TYPE_GDDR3,
+       NVKM_RAM_TYPE_GDDR4,
+       NVKM_RAM_TYPE_GDDR5
+};
+
 struct nvkm_ram {
-       struct nvkm_object base;
-       enum {
-               NV_MEM_TYPE_UNKNOWN = 0,
-               NV_MEM_TYPE_STOLEN,
-               NV_MEM_TYPE_SGRAM,
-               NV_MEM_TYPE_SDRAM,
-               NV_MEM_TYPE_DDR1,
-               NV_MEM_TYPE_DDR2,
-               NV_MEM_TYPE_DDR3,
-               NV_MEM_TYPE_GDDR2,
-               NV_MEM_TYPE_GDDR3,
-               NV_MEM_TYPE_GDDR4,
-               NV_MEM_TYPE_GDDR5
-       } type;
-       u64 stolen;
+       const struct nvkm_ram_func *func;
+       struct nvkm_fb *fb;
+       enum nvkm_ram_type type;
        u64 size;
-       u32 tags;
+
+#define NVKM_RAM_MM_SHIFT 12
+       struct nvkm_mm vram;
+       struct nvkm_mm tags;
+       u64 stolen;
 
        int ranks;
        int parts;
        int part_mask;
 
-       int  (*get)(struct nvkm_fb *, u64 size, u32 align, u32 size_nc,
-                   u32 type, struct nvkm_mem **);
-       void (*put)(struct nvkm_fb *, struct nvkm_mem **);
-
-       int  (*calc)(struct nvkm_fb *, u32 freq);
-       int  (*prog)(struct nvkm_fb *);
-       void (*tidy)(struct nvkm_fb *);
        u32 freq;
        u32 mr[16];
        u32 mr1_nuts;
@@ -151,4 +147,17 @@ struct nvkm_ram {
        struct nvkm_ram_data xition;
        struct nvkm_ram_data target;
 };
+
+struct nvkm_ram_func {
+       void *(*dtor)(struct nvkm_ram *);
+       int (*init)(struct nvkm_ram *);
+
+       int (*get)(struct nvkm_ram *, u64 size, u32 align, u32 size_nc,
+                  u32 type, struct nvkm_mem **);
+       void (*put)(struct nvkm_ram *, struct nvkm_mem **);
+
+       int (*calc)(struct nvkm_ram *, u32 freq);
+       int (*prog)(struct nvkm_ram *);
+       void (*tidy)(struct nvkm_ram *);
+};
 #endif
Simple merge
diff --cc drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.h
Simple merge