.fb       = { 0x00000001, gv100_fb_new },
        .fuse     = { 0x00000001, gm107_fuse_new },
        .gpio     = { 0x00000001, gk104_gpio_new },
-       .gsp = gv100_gsp_new,
+       .gsp      = { 0x00000001, gv100_gsp_new },
        .i2c = gm200_i2c_new,
        .ibus = gm200_ibus_new,
        .imem = nv50_instmem_new,
        .fb       = { 0x00000001, gv100_fb_new },
        .fuse     = { 0x00000001, gm107_fuse_new },
        .gpio     = { 0x00000001, gk104_gpio_new },
-       .gsp = gv100_gsp_new,
+       .gsp      = { 0x00000001, gv100_gsp_new },
        .i2c = gm200_i2c_new,
        .ibus = gm200_ibus_new,
        .imem = nv50_instmem_new,
        .fb       = { 0x00000001, gv100_fb_new },
        .fuse     = { 0x00000001, gm107_fuse_new },
        .gpio     = { 0x00000001, gk104_gpio_new },
-       .gsp = gv100_gsp_new,
+       .gsp      = { 0x00000001, gv100_gsp_new },
        .i2c = gm200_i2c_new,
        .ibus = gm200_ibus_new,
        .imem = nv50_instmem_new,
        .fb       = { 0x00000001, gv100_fb_new },
        .fuse     = { 0x00000001, gm107_fuse_new },
        .gpio     = { 0x00000001, gk104_gpio_new },
-       .gsp = gv100_gsp_new,
+       .gsp      = { 0x00000001, gv100_gsp_new },
        .i2c = gm200_i2c_new,
        .ibus = gm200_ibus_new,
        .imem = nv50_instmem_new,
        .fb       = { 0x00000001, gv100_fb_new },
        .fuse     = { 0x00000001, gm107_fuse_new },
        .gpio     = { 0x00000001, gk104_gpio_new },
-       .gsp = gv100_gsp_new,
+       .gsp      = { 0x00000001, gv100_gsp_new },
        .i2c = gm200_i2c_new,
        .ibus = gm200_ibus_new,
        .imem = nv50_instmem_new,
        .fb       = { 0x00000001, gv100_fb_new },
        .fuse     = { 0x00000001, gm107_fuse_new },
        .gpio     = { 0x00000001, gk104_gpio_new },
-       .gsp = gv100_gsp_new,
+       .gsp      = { 0x00000001, gv100_gsp_new },
        .i2c = gm200_i2c_new,
        .ibus = gm200_ibus_new,
        .imem = nv50_instmem_new,
 #include <core/layout.h>
 #undef NVKM_LAYOUT_INST
 #undef NVKM_LAYOUT_ONCE
-               _(NVKM_SUBDEV_GSP     ,      gsp);
                _(NVKM_SUBDEV_I2C     ,      i2c);
                _(NVKM_SUBDEV_IBUS    ,     ibus);
                _(NVKM_SUBDEV_ICCSENSE, iccsense);
 
 
 int
 nvkm_gsp_new_(const struct nvkm_gsp_fwif *fwif, struct nvkm_device *device,
-             int index, struct nvkm_gsp **pgsp)
+             enum nvkm_subdev_type type, int inst, struct nvkm_gsp **pgsp)
 {
        struct nvkm_gsp *gsp;
 
        if (!(gsp = *pgsp = kzalloc(sizeof(*gsp), GFP_KERNEL)))
                return -ENOMEM;
 
-       nvkm_subdev_ctor(&nvkm_gsp, device, index, &gsp->subdev);
+       nvkm_subdev_ctor(&nvkm_gsp, device, type, inst, &gsp->subdev);
 
        fwif = nvkm_firmware_load(&gsp->subdev, fwif, "Gsp", gsp);
        if (IS_ERR(fwif))