summaryrefslogtreecommitdiff
path: root/drm/nouveau/nvkm/subdev/mc/nv44.c
diff options
context:
space:
mode:
Diffstat (limited to 'drm/nouveau/nvkm/subdev/mc/nv44.c')
-rw-r--r--drm/nouveau/nvkm/subdev/mc/nv44.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/drm/nouveau/nvkm/subdev/mc/nv44.c b/drm/nouveau/nvkm/subdev/mc/nv44.c
index 36b3caaa0..e6795d1aa 100644
--- a/drm/nouveau/nvkm/subdev/mc/nv44.c
+++ b/drm/nouveau/nvkm/subdev/mc/nv44.c
@@ -21,12 +21,11 @@
*
* Authors: Ben Skeggs
*/
-#include "nv04.h"
+#include "priv.h"
-int
-nv44_mc_init(struct nvkm_object *object)
+void
+nv44_mc_init(struct nvkm_mc *mc)
{
- struct nvkm_mc *mc = (void *)object;
struct nvkm_device *device = mc->subdev.device;
u32 tmp = nvkm_rd32(device, 0x10020c);
@@ -36,19 +35,17 @@ nv44_mc_init(struct nvkm_object *object)
nvkm_wr32(device, 0x001704, 0);
nvkm_wr32(device, 0x001708, 0);
nvkm_wr32(device, 0x00170c, tmp);
-
- return nvkm_mc_init(mc);
}
-struct nvkm_oclass *
-nv44_mc_oclass = &(struct nvkm_mc_oclass) {
- .base.handle = NV_SUBDEV(MC, 0x44),
- .base.ofuncs = &(struct nvkm_ofuncs) {
- .ctor = nv04_mc_ctor,
- .dtor = _nvkm_mc_dtor,
- .init = nv44_mc_init,
- .fini = _nvkm_mc_fini,
- },
+static const struct nvkm_mc_func
+nv44_mc = {
+ .init = nv44_mc_init,
.intr = nv04_mc_intr,
.msi_rearm = nv40_mc_msi_rearm,
-}.base;
+};
+
+int
+nv44_mc_new(struct nvkm_device *device, int index, struct nvkm_mc **pmc)
+{
+ return nvkm_mc_new_(&nv44_mc, device, index, pmc);
+}