aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2012-08-14 00:53:51 -0400
committerBen Skeggs <bskeggs@redhat.com>2012-10-02 23:13:04 -0400
commit503b0f1cd66c54dd88e644fa1a521ebd764bf54e (patch)
treee22a7eaa0d517adfa4225fe7c3fdb89318020394 /drivers/gpu
parent72a148277701acf56bcec486a1124499600812e1 (diff)
drm/nouveau/fifo: separate object classes for dma channels
Future code will use the object class rather than chipset checks in order to identify available channel features. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c3
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c2
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c2
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c2
-rw-r--r--drivers/gpu/drm/nouveau/core/include/core/class.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_chan.c5
6 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c b/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c
index b0d3651fcab..848aa3bdacd 100644
--- a/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c
+++ b/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c
@@ -118,7 +118,10 @@ nv04_dmaobj_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
118 return ret; 118 return ret;
119 119
120 switch (nv_mclass(parent)) { 120 switch (nv_mclass(parent)) {
121 case 0x006b:
121 case 0x006e: 122 case 0x006e:
123 case 0x176e:
124 case 0x406e:
122 ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj); 125 ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj);
123 nouveau_object_ref(NULL, pobject); 126 nouveau_object_ref(NULL, pobject);
124 *pobject = nv_object(gpuobj); 127 *pobject = nv_object(gpuobj);
diff --git a/drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c b/drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c
index 7cd5d76dad2..ed771921e92 100644
--- a/drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c
+++ b/drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c
@@ -247,7 +247,7 @@ nv04_fifo_ofuncs = {
247 247
248static struct nouveau_oclass 248static struct nouveau_oclass
249nv04_fifo_sclass[] = { 249nv04_fifo_sclass[] = {
250 { 0x006e, &nv04_fifo_ofuncs }, 250 { 0x006b, &nv04_fifo_ofuncs },
251 {} 251 {}
252}; 252};
253 253
diff --git a/drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c b/drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c
index f223eb9c773..347b91e1347 100644
--- a/drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c
+++ b/drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c
@@ -113,7 +113,7 @@ nv17_fifo_ofuncs = {
113 113
114static struct nouveau_oclass 114static struct nouveau_oclass
115nv17_fifo_sclass[] = { 115nv17_fifo_sclass[] = {
116 { 0x006e, &nv17_fifo_ofuncs }, 116 { 0x176e, &nv17_fifo_ofuncs },
117 {} 117 {}
118}; 118};
119 119
diff --git a/drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c b/drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c
index ce97c5ee465..48114e6aa52 100644
--- a/drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c
+++ b/drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c
@@ -232,7 +232,7 @@ nv40_fifo_ofuncs = {
232 232
233static struct nouveau_oclass 233static struct nouveau_oclass
234nv40_fifo_sclass[] = { 234nv40_fifo_sclass[] = {
235 { 0x006e, &nv40_fifo_ofuncs }, 235 { 0x406e, &nv40_fifo_ofuncs },
236 {} 236 {}
237}; 237};
238 238
diff --git a/drivers/gpu/drm/nouveau/core/include/core/class.h b/drivers/gpu/drm/nouveau/core/include/core/class.h
index 9c6b0eba969..55b53ed8a0b 100644
--- a/drivers/gpu/drm/nouveau/core/include/core/class.h
+++ b/drivers/gpu/drm/nouveau/core/include/core/class.h
@@ -53,6 +53,7 @@ struct nv_dma_class {
53 53
54/* 006b: NV03_CHANNEL_DMA 54/* 006b: NV03_CHANNEL_DMA
55 * 006e: NV10_CHANNEL_DMA 55 * 006e: NV10_CHANNEL_DMA
56 * 176e: NV17_CHANNEL_DMA
56 * 406e: NV40_CHANNEL_DMA 57 * 406e: NV40_CHANNEL_DMA
57 */ 58 */
58 59
diff --git a/drivers/gpu/drm/nouveau/nouveau_chan.c b/drivers/gpu/drm/nouveau/nouveau_chan.c
index 62c7edf08e5..cf61dc0226a 100644
--- a/drivers/gpu/drm/nouveau/nouveau_chan.c
+++ b/drivers/gpu/drm/nouveau/nouveau_chan.c
@@ -221,7 +221,7 @@ static int
221nouveau_channel_dma(struct nouveau_drm *drm, struct nouveau_cli *cli, 221nouveau_channel_dma(struct nouveau_drm *drm, struct nouveau_cli *cli,
222 u32 parent, u32 handle, struct nouveau_channel **pchan) 222 u32 parent, u32 handle, struct nouveau_channel **pchan)
223{ 223{
224 static const u16 oclasses[] = { 0x006e, 0 }; 224 static const u16 oclasses[] = { 0x406e, 0x176e, 0x006e, 0x006b, 0 };
225 const u16 *oclass = oclasses; 225 const u16 *oclass = oclasses;
226 struct nv_channel_dma_class args; 226 struct nv_channel_dma_class args;
227 struct nouveau_channel *chan; 227 struct nouveau_channel *chan;
@@ -305,7 +305,8 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
305 } 305 }
306 306
307 /* initialise dma tracking parameters */ 307 /* initialise dma tracking parameters */
308 switch (nv_hclass(chan->object) & 0xffff) { 308 switch (nv_hclass(chan->object) & 0x00ff) {
309 case 0x006b:
309 case 0x006e: 310 case 0x006e:
310 chan->user_put = 0x40; 311 chan->user_put = 0x40;
311 chan->user_get = 0x44; 312 chan->user_get = 0x44;