if (stream_update->vline0_config && pipe_ctx->stream_res.tg->funcs->program_vline_interrupt)
                                pipe_ctx->stream_res.tg->funcs->program_vline_interrupt(
-                                       pipe_ctx->stream_res.tg, VLINE0, stream->vline0_config);
+                                       pipe_ctx->stream_res.tg, VLINE0, &stream->vline0_config);
 
                        if (stream_update->vline1_config && pipe_ctx->stream_res.tg->funcs->program_vline_interrupt)
                                pipe_ctx->stream_res.tg->funcs->program_vline_interrupt(
-                                       pipe_ctx->stream_res.tg, VLINE1, stream->vline1_config);
+                                       pipe_ctx->stream_res.tg, VLINE1, &stream->vline1_config);
 
                        if ((stream_update->hdr_static_metadata && !stream->use_dynamic_meta) ||
                                        stream_update->vrr_infopacket ||
 
 void optc1_program_vline_interrupt(
                struct timing_generator *optc,
                enum vline_select vline,
-               struct vline_config vline_config)
+               const struct vline_config *vline_config)
 {
        struct optc *optc1 = DCN10TG_FROM_TG(optc);
 
        switch (vline) {
        case VLINE0:
                REG_SET_2(OTG_VERTICAL_INTERRUPT0_POSITION, 0,
-                               OTG_VERTICAL_INTERRUPT0_LINE_START, vline_config.start_line,
-                               OTG_VERTICAL_INTERRUPT0_LINE_END, vline_config.end_line);
+                               OTG_VERTICAL_INTERRUPT0_LINE_START, vline_config->start_line,
+                               OTG_VERTICAL_INTERRUPT0_LINE_END, vline_config->end_line);
                break;
        case VLINE1:
                REG_SET(OTG_VERTICAL_INTERRUPT1_POSITION, 0,
-                                       OTG_VERTICAL_INTERRUPT1_LINE_START, vline_config.start_line);
+                                       OTG_VERTICAL_INTERRUPT1_LINE_START, vline_config->start_line);
                break;
        default:
                break;
 
 
 void optc1_program_vline_interrupt(struct timing_generator *optc,
                enum vline_select vline,
-               struct vline_config vline_config);
+               const struct vline_config *vline_config);
 
 void optc1_program_global_sync(
                struct timing_generator *optc);
 
                                                        bool use_vbios);
        void (*program_vline_interrupt)(struct timing_generator *optc,
                        enum vline_select vline,
-                       struct vline_config vline_config);
+                       const struct vline_config *vline_config);
        bool (*enable_crtc)(struct timing_generator *tg);
        bool (*disable_crtc)(struct timing_generator *tg);
        bool (*is_counter_moving)(struct timing_generator *tg);