drm/nve0/ce: create engine object for ce2
authorBen Skeggs <bskeggs@redhat.com>
Sun, 28 Apr 2013 23:31:05 +0000 (09:31 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 1 Jul 2013 03:43:23 +0000 (13:43 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/engine/copy/nve0.c
drivers/gpu/drm/nouveau/core/engine/device/nve0.c
drivers/gpu/drm/nouveau/core/include/core/device.h
drivers/gpu/drm/nouveau/core/include/engine/copy.h

index dbbe9e8..db351c9 100644 (file)
@@ -113,6 +113,26 @@ nve0_copy1_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
        return 0;
 }
 
+static int
+nve0_copy2_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
+               struct nouveau_oclass *oclass, void *data, u32 size,
+               struct nouveau_object **pobject)
+{
+       struct nve0_copy_priv *priv;
+       int ret;
+
+       ret = nouveau_engine_create(parent, engine, oclass, true,
+                                   "PCE2", "copy2", &priv);
+       *pobject = nv_object(priv);
+       if (ret)
+               return ret;
+
+       nv_subdev(priv)->unit = 0x00200000;
+       nv_engine(priv)->cclass = &nve0_copy_cclass;
+       nv_engine(priv)->sclass = nve0_copy_sclass;
+       return 0;
+}
+
 struct nouveau_oclass
 nve0_copy0_oclass = {
        .handle = NV_ENGINE(COPY0, 0xe0),
@@ -134,3 +154,14 @@ nve0_copy1_oclass = {
                .fini = _nouveau_engine_fini,
        },
 };
+
+struct nouveau_oclass
+nve0_copy2_oclass = {
+       .handle = NV_ENGINE(COPY2, 0xe0),
+       .ofuncs = &(struct nouveau_ofuncs) {
+               .ctor = nve0_copy2_ctor,
+               .dtor = _nouveau_engine_dtor,
+               .init = _nouveau_engine_init,
+               .fini = _nouveau_engine_fini,
+       },
+};
index a354e40..8a84d52 100644 (file)
@@ -79,6 +79,7 @@ nve0_identify(struct nouveau_device *device)
                device->oclass[NVDEV_ENGINE_DISP   ] = &nve0_disp_oclass;
                device->oclass[NVDEV_ENGINE_COPY0  ] = &nve0_copy0_oclass;
                device->oclass[NVDEV_ENGINE_COPY1  ] = &nve0_copy1_oclass;
+               device->oclass[NVDEV_ENGINE_COPY2  ] = &nve0_copy2_oclass;
                device->oclass[NVDEV_ENGINE_BSP    ] = &nve0_bsp_oclass;
                device->oclass[NVDEV_ENGINE_VP     ] = &nve0_vp_oclass;
                device->oclass[NVDEV_ENGINE_PPP    ] = &nvc0_ppp_oclass;
@@ -108,6 +109,7 @@ nve0_identify(struct nouveau_device *device)
                device->oclass[NVDEV_ENGINE_DISP   ] = &nve0_disp_oclass;
                device->oclass[NVDEV_ENGINE_COPY0  ] = &nve0_copy0_oclass;
                device->oclass[NVDEV_ENGINE_COPY1  ] = &nve0_copy1_oclass;
+               device->oclass[NVDEV_ENGINE_COPY2  ] = &nve0_copy2_oclass;
                device->oclass[NVDEV_ENGINE_BSP    ] = &nve0_bsp_oclass;
                device->oclass[NVDEV_ENGINE_VP     ] = &nve0_vp_oclass;
                device->oclass[NVDEV_ENGINE_PPP    ] = &nvc0_ppp_oclass;
@@ -137,6 +139,7 @@ nve0_identify(struct nouveau_device *device)
                device->oclass[NVDEV_ENGINE_DISP   ] = &nve0_disp_oclass;
                device->oclass[NVDEV_ENGINE_COPY0  ] = &nve0_copy0_oclass;
                device->oclass[NVDEV_ENGINE_COPY1  ] = &nve0_copy1_oclass;
+               device->oclass[NVDEV_ENGINE_COPY2  ] = &nve0_copy2_oclass;
                device->oclass[NVDEV_ENGINE_BSP    ] = &nve0_bsp_oclass;
                device->oclass[NVDEV_ENGINE_VP     ] = &nve0_vp_oclass;
                device->oclass[NVDEV_ENGINE_PPP    ] = &nvc0_ppp_oclass;
index 05840f3..cb6b4cc 100644 (file)
@@ -49,6 +49,7 @@ enum nv_subdev_type {
        NVDEV_ENGINE_PPP,
        NVDEV_ENGINE_COPY0,
        NVDEV_ENGINE_COPY1,
+       NVDEV_ENGINE_COPY2,
        NVDEV_ENGINE_UNK1C1,
        NVDEV_ENGINE_VENC,
        NVDEV_ENGINE_DISP,
index 8cad2cf..316a28a 100644 (file)
@@ -8,5 +8,6 @@ extern struct nouveau_oclass nvc0_copy0_oclass;
 extern struct nouveau_oclass nvc0_copy1_oclass;
 extern struct nouveau_oclass nve0_copy0_oclass;
 extern struct nouveau_oclass nve0_copy1_oclass;
+extern struct nouveau_oclass nve0_copy2_oclass;
 
 #endif