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);
 
 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;
        }
 
        /* 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;