diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c | 27 |
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 | ||
59 | static struct nvkm_oclass | ||
60 | nv40_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 | |||
72 | static int | 59 | static int |
73 | nv40_fifo_init(struct nvkm_object *object) | 60 | nv40_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 | ||
116 | static const struct nvkm_fifo_func | ||
117 | nv40_fifo_func = { | ||
118 | .chan = { | ||
119 | &nv40_fifo_dma_oclass, | ||
120 | NULL | ||
121 | }, | ||
122 | }; | ||
123 | |||
129 | static int | 124 | static int |
130 | nv40_fifo_ctor(struct nvkm_object *parent, struct nvkm_object *engine, | 125 | nv40_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; |