#include "nouveau_dma.h"
 #include "nouveau_drv.h"
 
+#include <nvif/push006c.h>
+
 static inline uint32_t
 nouveau_bo_mem_ctxdma(struct ttm_buffer_object *bo,
                      struct nouveau_channel *chan, struct ttm_mem_reg *reg)
 int
 nv04_bo_move_init(struct nouveau_channel *chan, u32 handle)
 {
-       int ret = RING_SPACE(chan, 4);
-       if (ret == 0) {
-               BEGIN_NV04(chan, NvSubCopy, 0x0000, 1);
-               OUT_RING  (chan, handle);
-               BEGIN_NV04(chan, NvSubCopy, 0x0180, 1);
-               OUT_RING  (chan, chan->drm->ntfy.handle);
-       }
+       struct nvif_push *push = chan->chan.push;
+       int ret;
 
-       return ret;
+       ret = PUSH_WAIT(push, 4);
+       if (ret)
+               return ret;
+
+       PUSH_NVSQ(push, NV039, 0x0000, handle);
+       PUSH_NVSQ(push, NV039, 0x0180, chan->drm->ntfy.handle);
+       return 0;
 }
 
 #include "nouveau_drv.h"
 #include "nouveau_mem.h"
 
+#include <nvif/push206e.h>
+
 int
 nv50_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
                  struct ttm_mem_reg *old_reg, struct ttm_mem_reg *new_reg)
 int
 nv50_bo_move_init(struct nouveau_channel *chan, u32 handle)
 {
-       int ret = RING_SPACE(chan, 6);
-       if (ret == 0) {
-               BEGIN_NV04(chan, NvSubCopy, 0x0000, 1);
-               OUT_RING  (chan, handle);
-               BEGIN_NV04(chan, NvSubCopy, 0x0180, 3);
-               OUT_RING  (chan, chan->drm->ntfy.handle);
-               OUT_RING  (chan, chan->vram.handle);
-               OUT_RING  (chan, chan->vram.handle);
-       }
+       struct nvif_push *push = chan->chan.push;
+       int ret;
 
-       return ret;
+       ret = PUSH_WAIT(push, 6);
+       if (ret)
+               return ret;
+
+       PUSH_NVSQ(push, NV5039, 0x0000, handle);
+       PUSH_NVSQ(push, NV5039, 0x0180, chan->drm->ntfy.handle,
+                               0x0184, chan->vram.handle,
+                               0x0188, chan->vram.handle);
+       return 0;
 }
 
 #include "nouveau_dma.h"
 #include "nouveau_mem.h"
 
+#include <nvif/push906f.h>
+
 int
 nvc0_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
                  struct ttm_mem_reg *old_reg, struct ttm_mem_reg *new_reg)
 int
 nvc0_bo_move_init(struct nouveau_channel *chan, u32 handle)
 {
-       int ret = RING_SPACE(chan, 2);
-       if (ret == 0) {
-               BEGIN_NVC0(chan, NvSubCopy, 0x0000, 1);
-               OUT_RING  (chan, handle);
-       }
-       return ret;
+       struct nvif_push *push = chan->chan.push;
+       int ret;
+
+       ret = PUSH_WAIT(push, 2);
+       if (ret)
+               return ret;
+
+       PUSH_NVSQ(push, NV9039, 0x0000, handle);
+       return 0;
 }
 
 #include "nouveau_dma.h"
 #include "nouveau_mem.h"
 
+#include <nvif/push906f.h>
+
 int
 nve0_bo_move_copy(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
                  struct ttm_mem_reg *old_reg, struct ttm_mem_reg *new_reg)
 int
 nve0_bo_move_init(struct nouveau_channel *chan, u32 handle)
 {
-       int ret = RING_SPACE(chan, 2);
-       if (ret == 0) {
-               BEGIN_NVC0(chan, NvSubCopy, 0x0000, 1);
-               OUT_RING  (chan, handle & 0x0000ffff);
-               FIRE_RING (chan);
-       }
-       return ret;
+       struct nvif_push *push = chan->chan.push;
+       int ret;
+
+       ret = PUSH_WAIT(push, 2);
+       if (ret)
+               return ret;
+
+       PUSH_NVSQ(push, NVA0B5, 0x0000, handle & 0x0000ffff);
+       return 0;
 }