#define nvkm_output_dp nvkm_dp
 
 struct nvkm_output_dp_func {
-       void (*vcpi)(struct nvkm_output_dp *, int head, u8 start_slot,
-                    u8 num_slots, u16 pbn, u16 aligned_pbn);
 };
 
 int nvkm_output_dp_train(struct nvkm_output *, u32 rate);
 
 int gf119_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
                     struct nvkm_output **);
-void gf119_sor_dp_vcpi(struct nvkm_dp *, int, u8, u8, u16, u16);
 
 int gm107_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
                     struct nvkm_output **);
 
                void (*pattern)(struct nvkm_ior *, int pattern);
                void (*drive)(struct nvkm_ior *, int ln, int pc,
                              int dc, int pe, int tx_pu);
+               void (*vcpi)(struct nvkm_ior *, int head, u8 slot,
+                            u8 slot_nr, u16 pbn, u16 aligned);
                void (*audio)(struct nvkm_ior *, int head, bool enable);
        } dp;
 
 int gf119_sor_dp_links(struct nvkm_ior *, struct nvkm_i2c_aux *);
 void gf119_sor_dp_pattern(struct nvkm_ior *, int);
 void gf119_sor_dp_drive(struct nvkm_ior *, int, int, int, int, int);
+void gf119_sor_dp_vcpi(struct nvkm_ior *, int, u8, u8, u16, u16);
 void gf119_sor_dp_audio(struct nvkm_ior *, int, bool);
 
 void gm107_sor_dp_pattern(struct nvkm_ior *, int);
 
        }
                break;
        case NV50_DISP_MTHD_V1_SOR_DP_MST_VCPI: {
-               struct nvkm_output_dp *outpdp = nvkm_output_dp(outp);
                union {
                        struct nv50_disp_sor_dp_mst_vcpi_v0 v0;
                } *args = data;
                                   args->v0.version, args->v0.start_slot,
                                   args->v0.num_slots, args->v0.pbn,
                                   args->v0.aligned_pbn);
-                       if (!outpdp->func->vcpi)
+                       if (!outp->ior->func->dp.vcpi)
                                return -ENODEV;
-                       outpdp->func->vcpi(outpdp, hidx, args->v0.start_slot,
-                                          args->v0.num_slots, args->v0.pbn,
-                                          args->v0.aligned_pbn);
+                       outp->ior->func->dp.vcpi(outp->ior, hidx,
+                                                args->v0.start_slot,
+                                                args->v0.num_slots,
+                                                args->v0.pbn,
+                                                args->v0.aligned_pbn);
                        return 0;
                } else
                        return ret;
 
 }
 
 void
-gf119_sor_dp_vcpi(struct nvkm_output_dp *outp, int head, u8 slot,
-                 u8 slot_nr, u16 pbn, u16 aligned)
+gf119_sor_dp_vcpi(struct nvkm_ior *sor, int head,
+                 u8 slot, u8 slot_nr, u16 pbn, u16 aligned)
 {
-       struct nvkm_device *device = outp->base.disp->engine.subdev.device;
+       struct nvkm_device *device = sor->disp->engine.subdev.device;
        const u32 hoff = head * 0x800;
 
        nvkm_mask(device, 0x616588 + hoff, 0x00003f3f, (slot_nr << 8) | slot);
 
 static const struct nvkm_output_dp_func
 gf119_sor_dp_func = {
-       .vcpi = gf119_sor_dp_vcpi,
 };
 
 int
                .links = gf119_sor_dp_links,
                .power = g94_sor_dp_power,
                .pattern = gf119_sor_dp_pattern,
+               .vcpi = gf119_sor_dp_vcpi,
                .audio = gf119_sor_dp_audio,
        },
        .hda = {
 
                .power = g94_sor_dp_power,
                .pattern = gf119_sor_dp_pattern,
                .drive = gf119_sor_dp_drive,
+               .vcpi = gf119_sor_dp_vcpi,
                .audio = gf119_sor_dp_audio,
        },
        .hda = {
 
 
 static const struct nvkm_output_dp_func
 gm107_sor_dp_func = {
-       .vcpi = gf119_sor_dp_vcpi,
 };
 
 int
                .power = g94_sor_dp_power,
                .pattern = gm107_sor_dp_pattern,
                .drive = gf119_sor_dp_drive,
+               .vcpi = gf119_sor_dp_vcpi,
                .audio = gf119_sor_dp_audio,
        },
        .hda = {
 
 
 static const struct nvkm_output_dp_func
 gm200_sor_dp_func = {
-       .vcpi = gf119_sor_dp_vcpi,
 };
 
 int
                .power = g94_sor_dp_power,
                .pattern = gm107_sor_dp_pattern,
                .drive = gm200_sor_dp_drive,
+               .vcpi = gf119_sor_dp_vcpi,
                .audio = gf119_sor_dp_audio,
        },
        .hda = {