These are now specified directly in the MC subdev.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
 };
 
 int nvkm_engine_ctor(const struct nvkm_engine_func *, struct nvkm_device *,
-                    int index, u32 pmc_enable, bool enable,
-                    struct nvkm_engine *);
+                    int index, bool enable, struct nvkm_engine *);
 int nvkm_engine_new_(const struct nvkm_engine_func *, struct nvkm_device *,
-                    int index, u32 pmc_enable, bool enable,
-                    struct nvkm_engine **);
+                    int index, bool enable, struct nvkm_engine **);
 struct nvkm_engine *nvkm_engine_ref(struct nvkm_engine *);
 void nvkm_engine_unref(struct nvkm_engine **);
 void nvkm_engine_tile(struct nvkm_engine *, int region);
 
        const struct nvkm_subdev_func *func;
        struct nvkm_device *device;
        enum nvkm_devidx index;
-       u32 pmc_enable;
        struct mutex mutex;
        u32 debug;
 
 
 extern const char *nvkm_subdev_name[NVKM_SUBDEV_NR];
 void nvkm_subdev_ctor(const struct nvkm_subdev_func *, struct nvkm_device *,
-                     int index, u32 pmc_enable, struct nvkm_subdev *);
+                     int index, struct nvkm_subdev *);
 void nvkm_subdev_del(struct nvkm_subdev **);
 int  nvkm_subdev_preinit(struct nvkm_subdev *);
 int  nvkm_subdev_init(struct nvkm_subdev *);
 
                u32 *data;
                u32  size;
        } data;
-       u32 pmc_enable;
        void (*init)(struct nvkm_falcon *);
        void (*intr)(struct nvkm_falcon *, struct nvkm_fifo_chan *);
        struct nvkm_sclass sclass[];
 
                     int index, bool enable, u32 addr, struct nvkm_engine **);
 
 struct nvkm_xtensa_func {
-       u32 pmc_enable;
        u32 fifo_val;
        u32 unkd28;
        struct nvkm_sclass sclass[];
 
 
 int
 nvkm_engine_ctor(const struct nvkm_engine_func *func,
-                struct nvkm_device *device, int index, u32 pmc_enable,
-                bool enable, struct nvkm_engine *engine)
+                struct nvkm_device *device, int index, bool enable,
+                struct nvkm_engine *engine)
 {
-       nvkm_subdev_ctor(&nvkm_engine_func, device, index,
-                        pmc_enable, &engine->subdev);
+       nvkm_subdev_ctor(&nvkm_engine_func, device, index, &engine->subdev);
        engine->func = func;
 
        if (!nvkm_boolopt(device->cfgopt, nvkm_subdev_name[index], enable)) {
 
 int
 nvkm_engine_new_(const struct nvkm_engine_func *func,
-                struct nvkm_device *device, int index, u32 pmc_enable,
-                bool enable, struct nvkm_engine **pengine)
+                struct nvkm_device *device, int index, bool enable,
+                struct nvkm_engine **pengine)
 {
        if (!(*pengine = kzalloc(sizeof(**pengine), GFP_KERNEL)))
                return -ENOMEM;
-       return nvkm_engine_ctor(func, device, index, pmc_enable,
-                               enable, *pengine);
+       return nvkm_engine_ctor(func, device, index, enable, *pengine);
 }
 
 
 void
 nvkm_subdev_ctor(const struct nvkm_subdev_func *func,
-                struct nvkm_device *device, int index, u32 pmc_enable,
+                struct nvkm_device *device, int index,
                 struct nvkm_subdev *subdev)
 {
        const char *name = nvkm_subdev_name[index];
        subdev->func = func;
        subdev->device = device;
        subdev->index = index;
-       subdev->pmc_enable = pmc_enable;
 
        __mutex_init(&subdev->mutex, name, &nvkm_subdev_lock_class[index]);
        subdev->debug = nvkm_dbgopt(device->dbgopt, name);
 
 
 static const struct nvkm_xtensa_func
 g84_bsp = {
-       .pmc_enable = 0x04008000,
        .fifo_val = 0x1111,
        .unkd28 = 0x90044,
        .sclass = {
 
        .code.size = sizeof(gf100_ce_code),
        .data.data = gf100_ce_data,
        .data.size = sizeof(gf100_ce_data),
-       .pmc_enable = 0x00000040,
        .init = gf100_ce_init,
        .intr = gt215_ce_intr,
        .sclass = {
        .code.size = sizeof(gf100_ce_code),
        .data.data = gf100_ce_data,
        .data.size = sizeof(gf100_ce_data),
-       .pmc_enable = 0x00000080,
        .init = gf100_ce_init,
        .intr = gt215_ce_intr,
        .sclass = {
 
 gk104_ce_new(struct nvkm_device *device, int index,
             struct nvkm_engine **pengine)
 {
-       if (index == NVKM_ENGINE_CE0) {
-               return nvkm_engine_new_(&gk104_ce, device, index,
-                                       0x00000040, true, pengine);
-       } else
-       if (index == NVKM_ENGINE_CE1) {
-               return nvkm_engine_new_(&gk104_ce, device, index,
-                                       0x00000080, true, pengine);
-       } else
-       if (index == NVKM_ENGINE_CE2) {
-               return nvkm_engine_new_(&gk104_ce, device, index,
-                                       0x00200000, true, pengine);
-       }
-       return -ENODEV;
+       return nvkm_engine_new_(&gk104_ce, device, index, true, pengine);
 }
 
 gm107_ce_new(struct nvkm_device *device, int index,
             struct nvkm_engine **pengine)
 {
-       if (index == NVKM_ENGINE_CE0) {
-               return nvkm_engine_new_(&gm107_ce, device, index,
-                                       0x00000040, true, pengine);
-       } else
-       if (index == NVKM_ENGINE_CE1) {
-               return nvkm_engine_new_(&gm107_ce, device, index,
-                                       0x00000080, true, pengine);
-       } else
-       if (index == NVKM_ENGINE_CE2) {
-               return nvkm_engine_new_(&gm107_ce, device, index,
-                                       0x00200000, true, pengine);
-       }
-       return -ENODEV;
+       return nvkm_engine_new_(&gm107_ce, device, index, true, pengine);
 }
 
 gm200_ce_new(struct nvkm_device *device, int index,
             struct nvkm_engine **pengine)
 {
-       if (index == NVKM_ENGINE_CE0) {
-               return nvkm_engine_new_(&gm200_ce, device, index,
-                                       0x00000040, true, pengine);
-       } else
-       if (index == NVKM_ENGINE_CE1) {
-               return nvkm_engine_new_(&gm200_ce, device, index,
-                                       0x00000080, true, pengine);
-       } else
-       if (index == NVKM_ENGINE_CE2) {
-               return nvkm_engine_new_(&gm200_ce, device, index,
-                                       0x00200000, true, pengine);
-       }
-       return -ENODEV;
+       return nvkm_engine_new_(&gm200_ce, device, index, true, pengine);
 }
 
        .code.size = sizeof(gt215_ce_code),
        .data.data = gt215_ce_data,
        .data.size = sizeof(gt215_ce_data),
-       .pmc_enable = 0x00802000,
        .intr = gt215_ce_intr,
        .sclass = {
                { -1, -1, GT212_DMA },
 
 g84_cipher_new(struct nvkm_device *device, int index,
               struct nvkm_engine **pengine)
 {
-       return nvkm_engine_new_(&g84_cipher, device, index,
-                               0x00004000, true, pengine);
+       return nvkm_engine_new_(&g84_cipher, device, index, true, pengine);
 }
 
        disp->func = func;
        disp->head.nr = heads;
 
-       ret = nvkm_engine_ctor(&nvkm_disp, device, index, 0,
-                              true, &disp->engine);
+       ret = nvkm_engine_ctor(&nvkm_disp, device, index, true, &disp->engine);
        if (ret)
                return ret;
 
 
                return -ENOMEM;
        dma->func = func;
 
-       return nvkm_engine_ctor(&nvkm_dma, device, index,
-                               0, true, &dma->engine);
+       return nvkm_engine_ctor(&nvkm_dma, device, index, true, &dma->engine);
 }
 
        falcon->data.size = func->data.size;
        *pengine = &falcon->engine;
 
-       return nvkm_engine_ctor(&nvkm_falcon, device, index, func->pmc_enable,
+       return nvkm_engine_ctor(&nvkm_falcon, device, index,
                                enable, &falcon->engine);
 }
 
                fifo->nr = nr;
        bitmap_clear(fifo->mask, 0, fifo->nr);
 
-       ret = nvkm_engine_ctor(&nvkm_fifo, device, index, 0x00000100,
-                              true, &fifo->engine);
+       ret = nvkm_engine_ctor(&nvkm_fifo, device, index, true, &fifo->engine);
        if (ret)
                return ret;
 
 
 
 int
 nvkm_gr_ctor(const struct nvkm_gr_func *func, struct nvkm_device *device,
-            int index, u32 pmc_enable, bool enable, struct nvkm_gr *gr)
+            int index, bool enable, struct nvkm_gr *gr)
 {
        gr->func = func;
-       return nvkm_engine_ctor(&nvkm_gr, device, index, pmc_enable,
-                               enable, &gr->engine);
+       return nvkm_engine_ctor(&nvkm_gr, device, index, enable, &gr->engine);
 }
 
        gr->firmware = nvkm_boolopt(device->cfgopt, "NvGrUseFW",
                                    func->fecs.ucode == NULL);
 
-       ret = nvkm_gr_ctor(&gf100_gr_, device, index, 0x08001000,
+       ret = nvkm_gr_ctor(&gf100_gr_, device, index,
                           gr->firmware || func->fecs.ucode != NULL,
                           &gr->base);
        if (ret)
 
        spin_lock_init(&gr->lock);
        *pgr = &gr->base;
 
-       return nvkm_gr_ctor(&nv04_gr, device, index, 0x00001000,
-                           true, &gr->base);
+       return nvkm_gr_ctor(&nv04_gr, device, index, true, &gr->base);
 }
 
        spin_lock_init(&gr->lock);
        *pgr = &gr->base;
 
-       return nvkm_gr_ctor(func, device, index, 0x00001000, true, &gr->base);
+       return nvkm_gr_ctor(func, device, index, true, &gr->base);
 }
 
 static const struct nvkm_gr_func
 
                return -ENOMEM;
        *pgr = &gr->base;
 
-       return nvkm_gr_ctor(func, device, index, 0x00001000, true, &gr->base);
+       return nvkm_gr_ctor(func, device, index, true, &gr->base);
 }
 
 static const struct nvkm_gr_func
 
        *pgr = &gr->base;
        INIT_LIST_HEAD(&gr->chan);
 
-       return nvkm_gr_ctor(func, device, index, 0x00001000, true, &gr->base);
+       return nvkm_gr_ctor(func, device, index, true, &gr->base);
 }
 
 static const struct nvkm_gr_func
 
        spin_lock_init(&gr->lock);
        *pgr = &gr->base;
 
-       return nvkm_gr_ctor(func, device, index, 0x00201000, true, &gr->base);
+       return nvkm_gr_ctor(func, device, index, true, &gr->base);
 }
 
 static const struct nvkm_gr_func
 
 struct nvkm_fifo_chan;
 
 int nvkm_gr_ctor(const struct nvkm_gr_func *, struct nvkm_device *,
-                int index, u32 pmc_enable, bool enable,
-                struct nvkm_gr *);
+                int index, bool enable, struct nvkm_gr *);
 
 bool nv04_gr_idle(struct nvkm_gr *);
 
 
 int
 g84_mpeg_new(struct nvkm_device *device, int index, struct nvkm_engine **pmpeg)
 {
-       return nvkm_engine_new_(&g84_mpeg, device, index, 0x00000002,
-                               true, pmpeg);
+       return nvkm_engine_new_(&g84_mpeg, device, index, true, pmpeg);
 }
 
        mpeg->func = func;
        *pmpeg = &mpeg->engine;
 
-       return nvkm_engine_ctor(&nv31_mpeg_, device, index, 0x00000002,
+       return nvkm_engine_ctor(&nv31_mpeg_, device, index,
                                true, &mpeg->engine);
 }
 
 
        INIT_LIST_HEAD(&mpeg->chan);
        *pmpeg = &mpeg->engine;
 
-       return nvkm_engine_ctor(&nv44_mpeg, device, index, 0x00000002,
-                               true, &mpeg->engine);
+       return nvkm_engine_ctor(&nv44_mpeg, device, index, true, &mpeg->engine);
 }
 
 int
 nv50_mpeg_new(struct nvkm_device *device, int index, struct nvkm_engine **pmpeg)
 {
-       return nvkm_engine_new_(&nv50_mpeg, device, index, 0x00400002,
-                               true, pmpeg);
+       return nvkm_engine_new_(&nv50_mpeg, device, index, true, pmpeg);
 }
 
 
 static const struct nvkm_falcon_func
 g98_mspdec = {
-       .pmc_enable = 0x01020000,
        .init = g98_mspdec_init,
        .sclass = {
                { -1, -1, G98_MSPDEC },
 
 
 static const struct nvkm_falcon_func
 gf100_mspdec = {
-       .pmc_enable = 0x00020000,
        .init = gf100_mspdec_init,
        .sclass = {
                { -1, -1, GF100_MSPDEC },
 
 
 static const struct nvkm_falcon_func
 gk104_mspdec = {
-       .pmc_enable = 0x00020000,
        .init = gf100_mspdec_init,
        .sclass = {
                { -1, -1, GK104_MSPDEC },
 
 
 static const struct nvkm_falcon_func
 gt215_mspdec = {
-       .pmc_enable = 0x01020000,
        .init = g98_mspdec_init,
        .sclass = {
                { -1, -1, GT212_MSPDEC },
 
 
 static const struct nvkm_falcon_func
 g98_msppp = {
-       .pmc_enable = 0x00400002,
        .init = g98_msppp_init,
        .sclass = {
                { -1, -1, G98_MSPPP },
 
 
 static const struct nvkm_falcon_func
 gf100_msppp = {
-       .pmc_enable = 0x00000002,
        .init = gf100_msppp_init,
        .sclass = {
                { -1, -1, GF100_MSPPP },
 
 
 static const struct nvkm_falcon_func
 gt215_msppp = {
-       .pmc_enable = 0x00400002,
        .init = g98_msppp_init,
        .sclass = {
                { -1, -1, GT212_MSPPP },
 
 
 static const struct nvkm_falcon_func
 g98_msvld = {
-       .pmc_enable = 0x04008000,
        .init = g98_msvld_init,
        .sclass = {
                { -1, -1, G98_MSVLD },
 
 
 static const struct nvkm_falcon_func
 gf100_msvld = {
-       .pmc_enable = 0x00008000,
        .init = gf100_msvld_init,
        .sclass = {
                { -1, -1, GF100_MSVLD },
 
 
 static const struct nvkm_falcon_func
 gk104_msvld = {
-       .pmc_enable = 0x00008000,
        .init = gf100_msvld_init,
        .sclass = {
                { -1, -1, GK104_MSVLD },
 
 
 static const struct nvkm_falcon_func
 gt215_msvld = {
-       .pmc_enable = 0x04008000,
        .init = g98_msvld_init,
        .sclass = {
                { -1, -1, GT212_MSVLD },
 
 
 static const struct nvkm_falcon_func
 mcp89_msvld = {
-       .pmc_enable = 0x04008000,
        .init = g98_msvld_init,
        .sclass = {
                { -1, -1, IGT21A_MSVLD },
 
        pm->func = func;
        INIT_LIST_HEAD(&pm->domains);
        INIT_LIST_HEAD(&pm->sources);
-       return nvkm_engine_ctor(&nvkm_pm, device, index, 0, true, &pm->engine);
+       return nvkm_engine_ctor(&nvkm_pm, device, index, true, &pm->engine);
 }
 
        .code.size = sizeof(g98_sec_code),
        .data.data = g98_sec_data,
        .data.size = sizeof(g98_sec_data),
-       .pmc_enable = 0x00004000,
        .intr = g98_sec_intr,
        .sclass = {
                { -1, -1, G98_SEC },
 
        INIT_LIST_HEAD(&sw->chan);
        sw->func = func;
 
-       return nvkm_engine_ctor(&nvkm_sw, device, index, 0, true, &sw->engine);
+       return nvkm_engine_ctor(&nvkm_sw, device, index, true, &sw->engine);
 }
 
 
 static const struct nvkm_xtensa_func
 g84_vp = {
-       .pmc_enable = 0x01020000,
        .fifo_val = 0x111,
        .unkd28 = 0x9c544,
        .sclass = {
 
        xtensa->addr = addr;
        *pengine = &xtensa->engine;
 
-       return nvkm_engine_ctor(&nvkm_xtensa, device, index, func->pmc_enable,
+       return nvkm_engine_ctor(&nvkm_xtensa, device, index,
                                enable, &xtensa->engine);
 }
 
 nvkm_bar_ctor(const struct nvkm_bar_func *func, struct nvkm_device *device,
              int index, struct nvkm_bar *bar)
 {
-       nvkm_subdev_ctor(&nvkm_bar, device, index, 0, &bar->subdev);
+       nvkm_subdev_ctor(&nvkm_bar, device, index, &bar->subdev);
        bar->func = func;
        spin_lock_init(&bar->lock);
 }
 
 
        if (!(bios = *pbios = kzalloc(sizeof(*bios), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&nvkm_bios, device, index, 0, &bios->subdev);
+       nvkm_subdev_ctor(&nvkm_bios, device, index, &bios->subdev);
 
        ret = nvbios_shadow(bios);
        if (ret)
 
        struct nvkm_bus *bus;
        if (!(bus = *pbus = kzalloc(sizeof(*bus), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&nvkm_bus, device, index, 0, &bus->subdev);
+       nvkm_subdev_ctor(&nvkm_bus, device, index, &bus->subdev);
        bus->func = func;
        return 0;
 }
 
        int ret, idx, arglen;
        const char *mode;
 
-       nvkm_subdev_ctor(&nvkm_clk, device, index, 0, &clk->subdev);
+       nvkm_subdev_ctor(&nvkm_clk, device, index, &clk->subdev);
        clk->func = func;
        INIT_LIST_HEAD(&clk->states);
        clk->domains = func->domains;
 
                  struct nvkm_device *device, int index,
                  struct nvkm_devinit *init)
 {
-       nvkm_subdev_ctor(&nvkm_devinit, device, index, 0, &init->subdev);
+       nvkm_subdev_ctor(&nvkm_devinit, device, index, &init->subdev);
        init->func = func;
        init->force_post = nvkm_boolopt(device->cfgopt, "NvForcePost", false);
 }
 
 nvkm_fb_ctor(const struct nvkm_fb_func *func, struct nvkm_device *device,
             int index, struct nvkm_fb *fb)
 {
-       nvkm_subdev_ctor(&nvkm_fb, device, index, 0, &fb->subdev);
+       nvkm_subdev_ctor(&nvkm_fb, device, index, &fb->subdev);
        fb->func = func;
        fb->tile.regions = fb->func->tile.regions;
 }
 
        struct nvkm_fuse *fuse;
        if (!(fuse = *pfuse = kzalloc(sizeof(*fuse), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&nvkm_fuse, device, index, 0, &fuse->subdev);
+       nvkm_subdev_ctor(&nvkm_fuse, device, index, &fuse->subdev);
        fuse->func = func;
        spin_lock_init(&fuse->lock);
        return 0;
 
        if (!(gpio = *pgpio = kzalloc(sizeof(*gpio), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_gpio, device, index, 0, &gpio->subdev);
+       nvkm_subdev_ctor(&nvkm_gpio, device, index, &gpio->subdev);
        gpio->func = func;
 
        return nvkm_event_init(&nvkm_gpio_intr_func, 2, func->lines,
 
        if (!(i2c = *pi2c = kzalloc(sizeof(*i2c), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_i2c, device, index, 0, &i2c->subdev);
+       nvkm_subdev_ctor(&nvkm_i2c, device, index, &i2c->subdev);
        i2c->func = func;
        INIT_LIST_HEAD(&i2c->pad);
        INIT_LIST_HEAD(&i2c->bus);
 
        struct nvkm_subdev *ibus;
        if (!(ibus = *pibus = kzalloc(sizeof(*ibus), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&gf100_ibus, device, index, 0, ibus);
+       nvkm_subdev_ctor(&gf100_ibus, device, index, ibus);
        return 0;
 }
 
        struct nvkm_subdev *ibus;
        if (!(ibus = *pibus = kzalloc(sizeof(*ibus), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&gf117_ibus, device, index, 0, ibus);
+       nvkm_subdev_ctor(&gf117_ibus, device, index, ibus);
        return 0;
 }
 
        struct nvkm_subdev *ibus;
        if (!(ibus = *pibus = kzalloc(sizeof(*ibus), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&gk104_ibus, device, index, 0, ibus);
+       nvkm_subdev_ctor(&gk104_ibus, device, index, ibus);
        return 0;
 }
 
        struct nvkm_subdev *ibus;
        if (!(ibus = *pibus = kzalloc(sizeof(*ibus), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&gk20a_ibus, device, index, 0, ibus);
+       nvkm_subdev_ctor(&gk20a_ibus, device, index, ibus);
        return 0;
 }
 
        struct nvkm_subdev *ibus;
        if (!(ibus = *pibus = kzalloc(sizeof(*ibus), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&gm200_ibus, device, index, 0, ibus);
+       nvkm_subdev_ctor(&gm200_ibus, device, index, ibus);
        return 0;
 }
 
 nvkm_iccsense_ctor(struct nvkm_device *device, int index,
                   struct nvkm_iccsense *iccsense)
 {
-       nvkm_subdev_ctor(&iccsense_func, device, index, 0, &iccsense->subdev);
+       nvkm_subdev_ctor(&iccsense_func, device, index, &iccsense->subdev);
 }
 
 int
 
                  struct nvkm_device *device, int index,
                  struct nvkm_instmem *imem)
 {
-       nvkm_subdev_ctor(&nvkm_instmem, device, index, 0, &imem->subdev);
+       nvkm_subdev_ctor(&nvkm_instmem, device, index, &imem->subdev);
        imem->func = func;
        spin_lock_init(&imem->lock);
        INIT_LIST_HEAD(&imem->list);
 
        if (!(ltc = *pltc = kzalloc(sizeof(*ltc), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_ltc, device, index, 0, <c->subdev);
+       nvkm_subdev_ctor(&nvkm_ltc, device, index, <c->subdev);
        ltc->func = func;
        ltc->zbc_min = 1; /* reserve 0 for disabled */
        ltc->zbc_max = min(func->zbc, NVKM_LTC_MAX_ZBC_CNT) - 1;
 
                }
        }
 
-       if (!pmc_enable) {
-               struct nvkm_subdev *subdev = nvkm_device_subdev(device, devidx);
-               pmc_enable = subdev->pmc_enable;
-       }
-
        if (pmc_enable) {
                nvkm_mask(device, 0x000200, pmc_enable, 0x00000000);
                nvkm_mask(device, 0x000200, pmc_enable, pmc_enable);
        if (!(mc = *pmc = kzalloc(sizeof(*mc), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_mc, device, index, 0, &mc->subdev);
+       nvkm_subdev_ctor(&nvkm_mc, device, index, &mc->subdev);
        mc->func = func;
        return 0;
 }
 
 nvkm_mmu_ctor(const struct nvkm_mmu_func *func, struct nvkm_device *device,
              int index, struct nvkm_mmu *mmu)
 {
-       nvkm_subdev_ctor(&nvkm_mmu, device, index, 0, &mmu->subdev);
+       nvkm_subdev_ctor(&nvkm_mmu, device, index, &mmu->subdev);
        mmu->func = func;
        mmu->limit = func->limit;
        mmu->dma_bits = func->dma_bits;
 
        if (!(mxm = *pmxm = kzalloc(sizeof(*mxm), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_mxm, device, index, 0, &mxm->subdev);
+       nvkm_subdev_ctor(&nvkm_mxm, device, index, &mxm->subdev);
 
        data = mxm_table(bios, &ver, &len);
        if (!data || !(ver = nvbios_rd08(bios, data))) {
 
 
        if (!(pci = *ppci = kzalloc(sizeof(**ppci), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&nvkm_pci_func, device, index, 0, &pci->subdev);
+       nvkm_subdev_ctor(&nvkm_pci_func, device, index, &pci->subdev);
        pci->func = func;
        pci->pdev = device->func->pci(device)->pdev;
        pci->irq = -1;
 
        struct nvkm_pmu *pmu;
        if (!(pmu = *ppmu = kzalloc(sizeof(*pmu), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&nvkm_pmu, device, index, 0, &pmu->subdev);
+       nvkm_subdev_ctor(&nvkm_pmu, device, index, &pmu->subdev);
        pmu->func = func;
        INIT_WORK(&pmu->recv.work, nvkm_pmu_recv);
        init_waitqueue_head(&pmu->recv.wait);
 
        pmu->base.func = &func;
        *ppmu = &pmu->base;
 
-       nvkm_subdev_ctor(&gk20a_pmu, device, index, 0, &pmu->base.subdev);
+       nvkm_subdev_ctor(&gk20a_pmu, device, index, &pmu->base.subdev);
        pmu->data = &gk20a_dvfs_data;
        nvkm_alarm_init(&pmu->alarm, gk20a_pmu_dvfs_work);
        return 0;
 
 {
        unsigned long fid;
 
-       nvkm_subdev_ctor(&nvkm_secboot, device, index, 0, &sb->subdev);
+       nvkm_subdev_ctor(&nvkm_secboot, device, index, &sb->subdev);
        sb->func = func;
 
        /* setup the performing falcon's base address and masks */
 
        if (!(therm = *ptherm = kzalloc(sizeof(*therm), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_therm, device, index, 0, &therm->subdev);
+       nvkm_subdev_ctor(&nvkm_therm, device, index, &therm->subdev);
        therm->func = func;
 
        nvkm_alarm_init(&therm->alarm, nvkm_therm_alarm);
 
        if (!(tmr = *ptmr = kzalloc(sizeof(*tmr), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_timer, device, index, 0, &tmr->subdev);
+       nvkm_subdev_ctor(&nvkm_timer, device, index, &tmr->subdev);
        tmr->func = func;
        INIT_LIST_HEAD(&tmr->alarms);
        spin_lock_init(&tmr->lock);
 
        struct nvkm_top *top;
        if (!(top = *ptop = kzalloc(sizeof(*top), GFP_KERNEL)))
                return -ENOMEM;
-       nvkm_subdev_ctor(&nvkm_top, device, index, 0, &top->subdev);
+       nvkm_subdev_ctor(&nvkm_top, device, index, &top->subdev);
        top->func = func;
        INIT_LIST_HEAD(&top->device);
        return 0;
 
        struct nvkm_bios *bios = device->bios;
        int i;
 
-       nvkm_subdev_ctor(&nvkm_volt, device, index, 0, &volt->subdev);
+       nvkm_subdev_ctor(&nvkm_volt, device, index, &volt->subdev);
        volt->func = func;
 
        /* Assuming the non-bios device should build the voltage table later */