diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2012-08-14 00:53:51 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2012-10-02 23:13:04 -0400 |
commit | 503b0f1cd66c54dd88e644fa1a521ebd764bf54e (patch) | |
tree | e22a7eaa0d517adfa4225fe7c3fdb89318020394 /drivers/gpu | |
parent | 72a148277701acf56bcec486a1124499600812e1 (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.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/include/core/class.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_chan.c | 5 |
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 | ||
248 | static struct nouveau_oclass | 248 | static struct nouveau_oclass |
249 | nv04_fifo_sclass[] = { | 249 | nv04_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 | ||
114 | static struct nouveau_oclass | 114 | static struct nouveau_oclass |
115 | nv17_fifo_sclass[] = { | 115 | nv17_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 | ||
233 | static struct nouveau_oclass | 233 | static struct nouveau_oclass |
234 | nv40_fifo_sclass[] = { | 234 | nv40_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 | |||
221 | nouveau_channel_dma(struct nouveau_drm *drm, struct nouveau_cli *cli, | 221 | nouveau_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; |