These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / gpu / drm / nouveau / nvkm / engine / gr / gf110.c
index ef76e2d..d081ee4 100644 (file)
 
 #include <nvif/class.h>
 
-/*******************************************************************************
- * Graphics object classes
- ******************************************************************************/
-
-struct nvkm_oclass
-gf110_gr_sclass[] = {
-       { FERMI_TWOD_A, &nvkm_object_ofuncs },
-       { FERMI_MEMORY_TO_MEMORY_FORMAT_A, &nvkm_object_ofuncs },
-       { FERMI_A, &gf100_fermi_ofuncs, gf100_gr_9097_omthds },
-       { FERMI_B, &gf100_fermi_ofuncs, gf100_gr_9097_omthds },
-       { FERMI_C, &gf100_fermi_ofuncs, gf100_gr_9097_omthds },
-       { FERMI_COMPUTE_A, &nvkm_object_ofuncs, gf100_gr_90c0_omthds },
-       {}
-};
-
 /*******************************************************************************
  * PGRAPH register lists
  ******************************************************************************/
@@ -99,18 +84,27 @@ gf110_gr_pack_mmio[] = {
  * PGRAPH engine/subdev functions
  ******************************************************************************/
 
-struct nvkm_oclass *
-gf110_gr_oclass = &(struct gf100_gr_oclass) {
-       .base.handle = NV_ENGINE(GR, 0xc8),
-       .base.ofuncs = &(struct nvkm_ofuncs) {
-               .ctor = gf100_gr_ctor,
-               .dtor = gf100_gr_dtor,
-               .init = gf100_gr_init,
-               .fini = _nvkm_gr_fini,
-       },
-       .cclass = &gf110_grctx_oclass,
-       .sclass = gf110_gr_sclass,
+static const struct gf100_gr_func
+gf110_gr = {
+       .init = gf100_gr_init,
        .mmio = gf110_gr_pack_mmio,
        .fecs.ucode = &gf100_gr_fecs_ucode,
        .gpccs.ucode = &gf100_gr_gpccs_ucode,
-}.base;
+       .grctx = &gf110_grctx,
+       .sclass = {
+               { -1, -1, FERMI_TWOD_A },
+               { -1, -1, FERMI_MEMORY_TO_MEMORY_FORMAT_A },
+               { -1, -1, FERMI_A, &gf100_fermi },
+               { -1, -1, FERMI_B, &gf100_fermi },
+               { -1, -1, FERMI_C, &gf100_fermi },
+               { -1, -1, FERMI_COMPUTE_A },
+               { -1, -1, FERMI_COMPUTE_B },
+               {}
+       }
+};
+
+int
+gf110_gr_new(struct nvkm_device *device, int index, struct nvkm_gr **pgr)
+{
+       return gf100_gr_new_(&gf110_gr, device, index, pgr);
+}