These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / gpu / drm / nouveau / nvkm / engine / disp / rootg84.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2013 Red Hat Inc.
+ * Copyright 2012 Red Hat Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
  *
  * Authors: Ben Skeggs
  */
-#include "gf100.h"
+#include "rootnv50.h"
+#include "dmacnv50.h"
 
-static int
-gk110_pm_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
-             struct nvkm_oclass *oclass, void *data, u32 size,
-             struct nvkm_object **pobject)
-{
-       struct gf100_pm_priv *priv;
-       int ret;
-
-       ret = nvkm_pm_create(parent, engine, oclass, &priv);
-       *pobject = nv_object(priv);
-       if (ret)
-               return ret;
+#include <nvif/class.h>
 
-       ret = nvkm_perfdom_new(&priv->base, "pwr", 0, 0, 0, 0, gk104_pm_pwr);
-       if (ret)
-               return ret;
+static const struct nv50_disp_root_func
+g84_disp_root = {
+       .init = nv50_disp_root_init,
+       .fini = nv50_disp_root_fini,
+       .dmac = {
+               &g84_disp_core_oclass,
+               &g84_disp_base_oclass,
+               &g84_disp_ovly_oclass,
+       },
+       .pioc = {
+               &g84_disp_oimm_oclass,
+               &g84_disp_curs_oclass,
+       },
+};
 
-       nv_engine(priv)->cclass = &nvkm_pm_cclass;
-       nv_engine(priv)->sclass =  nvkm_pm_sclass;
-       return 0;
+static int
+g84_disp_root_new(struct nvkm_disp *disp, const struct nvkm_oclass *oclass,
+                 void *data, u32 size, struct nvkm_object **pobject)
+{
+       return nv50_disp_root_new_(&g84_disp_root, disp, oclass,
+                                  data, size, pobject);
 }
 
-struct nvkm_oclass
-gk110_pm_oclass = {
-       .handle = NV_ENGINE(PM, 0xf0),
-       .ofuncs = &(struct nvkm_ofuncs) {
-               .ctor = gk110_pm_ctor,
-               .dtor = _nvkm_pm_dtor,
-               .init = _nvkm_pm_init,
-               .fini = gf100_pm_fini,
-       },
+const struct nvkm_disp_oclass
+g84_disp_root_oclass = {
+       .base.oclass = G82_DISP,
+       .base.minver = -1,
+       .base.maxver = -1,
+       .ctor = g84_disp_root_new,
 };