From 45cfb9cf089cd56878b1cb5d15391d2470dbeb7c Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Mon, 20 Dec 2010 10:53:44 +1000 Subject: nouveau: split pushbuf macros specific to nv04-nv50 out, and add nvc0 Signed-off-by: Ben Skeggs --- nouveau/nouveau_grobj.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'nouveau/nouveau_grobj.c') diff --git a/nouveau/nouveau_grobj.c b/nouveau/nouveau_grobj.c index df2ffb91..c6b98f16 100644 --- a/nouveau/nouveau_grobj.c +++ b/nouveau/nouveau_grobj.c @@ -112,6 +112,7 @@ nouveau_grobj_free(struct nouveau_grobj **grobj) void nouveau_grobj_autobind(struct nouveau_grobj *grobj) { + struct nouveau_channel *chan = grobj->channel; struct nouveau_subchannel *subc = NULL; int i; @@ -134,7 +135,13 @@ nouveau_grobj_autobind(struct nouveau_grobj *grobj) subc->gr->bound = NOUVEAU_GROBJ_BOUND; subc->gr->subc = subc - &grobj->channel->subc[0]; - BEGIN_RING(grobj->channel, grobj, 0x0000, 1); - OUT_RING (grobj->channel, grobj->handle); + WAIT_RING(chan, 2); + if (chan->device->chipset < 0xc0) { + OUT_RING (chan, (1 << 18) | (grobj->subc << 13)); + OUT_RING (chan, grobj->handle); + } else { + OUT_RING (chan, (2 << 28) | (1 << 16) | (grobj->subc << 13)); + OUT_RING (chan, grobj->grclass); + } } -- cgit v1.2.3