drm/nouveau/device: enable proper constructor/destructor
authorBen Skeggs <bskeggs@redhat.com>
Thu, 25 Apr 2013 01:35:18 +0000 (11:35 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 26 Apr 2013 05:38:12 +0000 (15:38 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/engine/device/base.c

index 30723ee8114c294e3f5b420d11374f56ac7645b6..497d5f60a195d5b884f88a16f8304662ebdeeea1 100644 (file)
@@ -419,6 +419,20 @@ nouveau_device_sclass[] = {
        {}
 };
 
+static int
+nouveau_device_fini(struct nouveau_object *object, bool suspend)
+{
+       struct nouveau_device *device = (void *)object;
+       return nouveau_subdev_fini(&device->base, suspend);
+}
+
+static int
+nouveau_device_init(struct nouveau_object *object)
+{
+       struct nouveau_device *device = (void *)object;
+       return nouveau_subdev_init(&device->base);
+}
+
 static void
 nouveau_device_dtor(struct nouveau_object *object)
 {
@@ -439,6 +453,8 @@ nouveau_device_oclass = {
        .handle = NV_ENGINE(DEVICE, 0x00),
        .ofuncs = &(struct nouveau_ofuncs) {
                .dtor = nouveau_device_dtor,
+               .init = nouveau_device_init,
+               .fini = nouveau_device_fini,
        },
 };
 
@@ -462,7 +478,6 @@ nouveau_device_create_(struct pci_dev *pdev, u64 name, const char *sname,
        if (ret)
                goto done;
 
-       atomic_set(&nv_object(device)->usecount, 2);
        device->pdev = pdev;
        device->handle = name;
        device->cfgopt = cfg;