Skip to content

Commit

Permalink
drm/nouveau/fifo: separate object classes for dma channels
Browse files Browse the repository at this point in the history
Future code will use the object class rather than chipset checks in order to
identify available channel features.

Signed-off-by: Ben Skeggs <[email protected]>
  • Loading branch information
Ben Skeggs committed Oct 3, 2012
1 parent 72a1482 commit 503b0f1
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 5 deletions.
3 changes: 3 additions & 0 deletions drivers/gpu/drm/nouveau/core/engine/dmaobj/nv04.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,10 @@ nv04_dmaobj_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
return ret;

switch (nv_mclass(parent)) {
case 0x006b:
case 0x006e:
case 0x176e:
case 0x406e:
ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj);
nouveau_object_ref(NULL, pobject);
*pobject = nv_object(gpuobj);
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/nouveau/core/engine/fifo/nv04.c
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ nv04_fifo_ofuncs = {

static struct nouveau_oclass
nv04_fifo_sclass[] = {
{ 0x006e, &nv04_fifo_ofuncs },
{ 0x006b, &nv04_fifo_ofuncs },
{}
};

Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/nouveau/core/engine/fifo/nv17.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ nv17_fifo_ofuncs = {

static struct nouveau_oclass
nv17_fifo_sclass[] = {
{ 0x006e, &nv17_fifo_ofuncs },
{ 0x176e, &nv17_fifo_ofuncs },
{}
};

Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/nouveau/core/engine/fifo/nv40.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ nv40_fifo_ofuncs = {

static struct nouveau_oclass
nv40_fifo_sclass[] = {
{ 0x006e, &nv40_fifo_ofuncs },
{ 0x406e, &nv40_fifo_ofuncs },
{}
};

Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/nouveau/core/include/core/class.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ struct nv_dma_class {

/* 006b: NV03_CHANNEL_DMA
* 006e: NV10_CHANNEL_DMA
* 176e: NV17_CHANNEL_DMA
* 406e: NV40_CHANNEL_DMA
*/

Expand Down
5 changes: 3 additions & 2 deletions drivers/gpu/drm/nouveau/nouveau_chan.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ static int
nouveau_channel_dma(struct nouveau_drm *drm, struct nouveau_cli *cli,
u32 parent, u32 handle, struct nouveau_channel **pchan)
{
static const u16 oclasses[] = { 0x006e, 0 };
static const u16 oclasses[] = { 0x406e, 0x176e, 0x006e, 0x006b, 0 };
const u16 *oclass = oclasses;
struct nv_channel_dma_class args;
struct nouveau_channel *chan;
Expand Down Expand Up @@ -305,7 +305,8 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
}

/* initialise dma tracking parameters */
switch (nv_hclass(chan->object) & 0xffff) {
switch (nv_hclass(chan->object) & 0x00ff) {
case 0x006b:
case 0x006e:
chan->user_put = 0x40;
chan->user_get = 0x44;
Expand Down

0 comments on commit 503b0f1

Please sign in to comment.