@@ -501,6 +501,23 @@ void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc)
501
501
wait_for_pipe_scanline_moving (crtc , true);
502
502
}
503
503
504
+ static void intel_crtc_active_timings (struct drm_display_mode * mode ,
505
+ int * vmax_vblank_start ,
506
+ const struct intel_crtc_state * crtc_state ,
507
+ bool vrr_enable )
508
+ {
509
+ drm_mode_init (mode , & crtc_state -> hw .adjusted_mode );
510
+ * vmax_vblank_start = 0 ;
511
+
512
+ if (!vrr_enable )
513
+ return ;
514
+
515
+ mode -> crtc_vtotal = intel_vrr_vmax_vtotal (crtc_state );
516
+ mode -> crtc_vblank_end = intel_vrr_vmax_vtotal (crtc_state );
517
+ mode -> crtc_vblank_start = intel_vrr_vmin_vblank_start (crtc_state );
518
+ * vmax_vblank_start = intel_vrr_vmax_vblank_start (crtc_state );
519
+ }
520
+
504
521
void intel_crtc_update_active_timings (const struct intel_crtc_state * crtc_state ,
505
522
bool vrr_enable )
506
523
{
@@ -511,19 +528,13 @@ void intel_crtc_update_active_timings(const struct intel_crtc_state *crtc_state,
511
528
int vmax_vblank_start = 0 ;
512
529
unsigned long irqflags ;
513
530
514
- drm_mode_init (& adjusted_mode , & crtc_state -> hw .adjusted_mode );
515
-
516
- if (vrr_enable ) {
517
- drm_WARN_ON (display -> drm ,
518
- (mode_flags & I915_MODE_FLAG_VRR ) == 0 );
531
+ intel_crtc_active_timings (& adjusted_mode , & vmax_vblank_start ,
532
+ crtc_state , vrr_enable );
519
533
520
- adjusted_mode .crtc_vtotal = intel_vrr_vmax_vtotal (crtc_state );
521
- adjusted_mode .crtc_vblank_end = intel_vrr_vmax_vtotal (crtc_state );
522
- adjusted_mode .crtc_vblank_start = intel_vrr_vmin_vblank_start (crtc_state );
523
- vmax_vblank_start = intel_vrr_vmax_vblank_start (crtc_state );
524
- } else {
534
+ if (vrr_enable )
535
+ drm_WARN_ON (display -> drm , (mode_flags & I915_MODE_FLAG_VRR ) == 0 );
536
+ else
525
537
mode_flags &= ~I915_MODE_FLAG_VRR ;
526
- }
527
538
528
539
/*
529
540
* Belts and suspenders locking to guarantee everyone sees 100%
0 commit comments