aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c
index 64be69fc9572..aca146377d36 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c
@@ -56,19 +56,6 @@ nv40_ramfc[] = {
56 {} 56 {}
57}; 57};
58 58
59static struct nvkm_oclass
60nv40_fifo_cclass = {
61 .handle = NV_ENGCTX(FIFO, 0x40),
62 .ofuncs = &(struct nvkm_ofuncs) {
63 .ctor = nv04_fifo_context_ctor,
64 .dtor = _nvkm_fifo_context_dtor,
65 .init = _nvkm_fifo_context_init,
66 .fini = _nvkm_fifo_context_fini,
67 .rd32 = _nvkm_fifo_context_rd32,
68 .wr32 = _nvkm_fifo_context_wr32,
69 },
70};
71
72static int 59static int
73nv40_fifo_init(struct nvkm_object *object) 60nv40_fifo_init(struct nvkm_object *object)
74{ 61{
@@ -115,7 +102,7 @@ nv40_fifo_init(struct nvkm_object *object)
115 break; 102 break;
116 } 103 }
117 104
118 nvkm_wr32(device, NV03_PFIFO_CACHE1_PUSH1, fifo->base.max); 105 nvkm_wr32(device, NV03_PFIFO_CACHE1_PUSH1, fifo->base.nr - 1);
119 106
120 nvkm_wr32(device, NV03_PFIFO_INTR_0, 0xffffffff); 107 nvkm_wr32(device, NV03_PFIFO_INTR_0, 0xffffffff);
121 nvkm_wr32(device, NV03_PFIFO_INTR_EN_0, 0xffffffff); 108 nvkm_wr32(device, NV03_PFIFO_INTR_EN_0, 0xffffffff);
@@ -126,6 +113,14 @@ nv40_fifo_init(struct nvkm_object *object)
126 return 0; 113 return 0;
127} 114}
128 115
116static const struct nvkm_fifo_func
117nv40_fifo_func = {
118 .chan = {
119 &nv40_fifo_dma_oclass,
120 NULL
121 },
122};
123
129static int 124static int
130nv40_fifo_ctor(struct nvkm_object *parent, struct nvkm_object *engine, 125nv40_fifo_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
131 struct nvkm_oclass *oclass, void *data, u32 size, 126 struct nvkm_oclass *oclass, void *data, u32 size,
@@ -139,10 +134,10 @@ nv40_fifo_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
139 if (ret) 134 if (ret)
140 return ret; 135 return ret;
141 136
137 fifo->base.func = &nv40_fifo_func;
138
142 nv_subdev(fifo)->unit = 0x00000100; 139 nv_subdev(fifo)->unit = 0x00000100;
143 nv_subdev(fifo)->intr = nv04_fifo_intr; 140 nv_subdev(fifo)->intr = nv04_fifo_intr;
144 nv_engine(fifo)->cclass = &nv40_fifo_cclass;
145 nv_engine(fifo)->sclass = nv40_fifo_sclass;
146 fifo->base.pause = nv04_fifo_pause; 141 fifo->base.pause = nv04_fifo_pause;
147 fifo->base.start = nv04_fifo_start; 142 fifo->base.start = nv04_fifo_start;
148 fifo->ramfc_desc = nv40_ramfc; 143 fifo->ramfc_desc = nv40_ramfc;