17
17
18
18
bool intel_vrr_is_capable (struct intel_connector * connector )
19
19
{
20
+ struct intel_display * display = to_intel_display (connector );
20
21
const struct drm_display_info * info = & connector -> base .display_info ;
21
- struct drm_i915_private * i915 = to_i915 (connector -> base .dev );
22
22
struct intel_dp * intel_dp ;
23
23
24
24
/*
@@ -43,7 +43,7 @@ bool intel_vrr_is_capable(struct intel_connector *connector)
43
43
return false;
44
44
}
45
45
46
- return HAS_VRR (i915 ) &&
46
+ return HAS_VRR (display ) &&
47
47
info -> monitor_range .max_vfreq - info -> monitor_range .min_vfreq > 10 ;
48
48
}
49
49
@@ -89,10 +89,9 @@ intel_vrr_check_modeset(struct intel_atomic_state *state)
89
89
*/
90
90
static int intel_vrr_vblank_exit_length (const struct intel_crtc_state * crtc_state )
91
91
{
92
- struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
93
- struct drm_i915_private * i915 = to_i915 (crtc -> base .dev );
92
+ struct intel_display * display = to_intel_display (crtc_state );
94
93
95
- if (DISPLAY_VER (i915 ) >= 13 )
94
+ if (DISPLAY_VER (display ) >= 13 )
96
95
return crtc_state -> vrr .guardband ;
97
96
else
98
97
/* The hw imposes the extra scanline before frame start */
@@ -113,11 +112,11 @@ int intel_vrr_vmax_vblank_start(const struct intel_crtc_state *crtc_state)
113
112
static bool
114
113
is_cmrr_frac_required (struct intel_crtc_state * crtc_state )
115
114
{
115
+ struct intel_display * display = to_intel_display (crtc_state );
116
116
int calculated_refresh_k , actual_refresh_k , pixel_clock_per_line ;
117
117
struct drm_display_mode * adjusted_mode = & crtc_state -> hw .adjusted_mode ;
118
- struct drm_i915_private * i915 = to_i915 (crtc_state -> uapi .crtc -> dev );
119
118
120
- if (!HAS_CMRR (i915 ))
119
+ if (!HAS_CMRR (display ))
121
120
return false;
122
121
123
122
actual_refresh_k =
161
160
intel_vrr_compute_config (struct intel_crtc_state * crtc_state ,
162
161
struct drm_connector_state * conn_state )
163
162
{
164
- struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
165
- struct drm_i915_private * i915 = to_i915 (crtc -> base .dev );
163
+ struct intel_display * display = to_intel_display (crtc_state );
166
164
struct intel_connector * connector =
167
165
to_intel_connector (conn_state -> connector );
168
166
struct intel_dp * intel_dp = intel_attached_dp (connector );
@@ -186,7 +184,7 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
186
184
if (!crtc_state -> vrr .in_range )
187
185
return ;
188
186
189
- if (HAS_LRR (i915 ))
187
+ if (HAS_LRR (display ))
190
188
crtc_state -> update_lrr = true;
191
189
192
190
vmin = DIV_ROUND_UP (adjusted_mode -> crtc_clock * 1000 ,
@@ -246,7 +244,7 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
246
244
* For XE_LPD+, we use guardband and pipeline override
247
245
* is deprecated.
248
246
*/
249
- if (DISPLAY_VER (i915 ) >= 13 ) {
247
+ if (DISPLAY_VER (display ) >= 13 ) {
250
248
crtc_state -> vrr .guardband =
251
249
crtc_state -> vrr .vmin + 1 - adjusted_mode -> crtc_vblank_start ;
252
250
} else {
@@ -258,9 +256,9 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
258
256
259
257
static u32 trans_vrr_ctl (const struct intel_crtc_state * crtc_state )
260
258
{
261
- struct drm_i915_private * i915 = to_i915 (crtc_state -> uapi . crtc -> dev );
259
+ struct intel_display * display = to_intel_display (crtc_state );
262
260
263
- if (DISPLAY_VER (i915 ) >= 13 )
261
+ if (DISPLAY_VER (display ) >= 13 )
264
262
return VRR_CTL_IGN_MAX_SHIFT | VRR_CTL_FLIP_LINE_EN |
265
263
XELPD_VRR_CTL_VRR_GUARDBAND (crtc_state -> vrr .guardband );
266
264
else
@@ -271,141 +269,138 @@ static u32 trans_vrr_ctl(const struct intel_crtc_state *crtc_state)
271
269
272
270
void intel_vrr_set_transcoder_timings (const struct intel_crtc_state * crtc_state )
273
271
{
274
- struct drm_i915_private * dev_priv = to_i915 (crtc_state -> uapi . crtc -> dev );
272
+ struct intel_display * display = to_intel_display (crtc_state );
275
273
enum transcoder cpu_transcoder = crtc_state -> cpu_transcoder ;
276
274
277
275
/*
278
276
* This bit seems to have two meanings depending on the platform:
279
277
* TGL: generate VRR "safe window" for DSB vblank waits
280
278
* ADL/DG2: make TRANS_SET_CONTEXT_LATENCY effective with VRR
281
279
*/
282
- if (IS_DISPLAY_VER (dev_priv , 12 , 13 ))
283
- intel_de_rmw (dev_priv , CHICKEN_TRANS (cpu_transcoder ),
280
+ if (IS_DISPLAY_VER (display , 12 , 13 ))
281
+ intel_de_rmw (display , CHICKEN_TRANS (cpu_transcoder ),
284
282
0 , PIPE_VBLANK_WITH_DELAY );
285
283
286
284
if (!crtc_state -> vrr .flipline ) {
287
- intel_de_write (dev_priv ,
288
- TRANS_VRR_CTL (dev_priv , cpu_transcoder ), 0 );
285
+ intel_de_write (display ,
286
+ TRANS_VRR_CTL (display , cpu_transcoder ), 0 );
289
287
return ;
290
288
}
291
289
292
290
if (crtc_state -> cmrr .enable ) {
293
- intel_de_write (dev_priv , TRANS_CMRR_M_HI (dev_priv , cpu_transcoder ),
291
+ intel_de_write (display , TRANS_CMRR_M_HI (display , cpu_transcoder ),
294
292
upper_32_bits (crtc_state -> cmrr .cmrr_m ));
295
- intel_de_write (dev_priv , TRANS_CMRR_M_LO (dev_priv , cpu_transcoder ),
293
+ intel_de_write (display , TRANS_CMRR_M_LO (display , cpu_transcoder ),
296
294
lower_32_bits (crtc_state -> cmrr .cmrr_m ));
297
- intel_de_write (dev_priv , TRANS_CMRR_N_HI (dev_priv , cpu_transcoder ),
295
+ intel_de_write (display , TRANS_CMRR_N_HI (display , cpu_transcoder ),
298
296
upper_32_bits (crtc_state -> cmrr .cmrr_n ));
299
- intel_de_write (dev_priv , TRANS_CMRR_N_LO (dev_priv , cpu_transcoder ),
297
+ intel_de_write (display , TRANS_CMRR_N_LO (display , cpu_transcoder ),
300
298
lower_32_bits (crtc_state -> cmrr .cmrr_n ));
301
299
}
302
300
303
- intel_de_write (dev_priv , TRANS_VRR_VMIN (dev_priv , cpu_transcoder ),
301
+ intel_de_write (display , TRANS_VRR_VMIN (display , cpu_transcoder ),
304
302
crtc_state -> vrr .vmin - 1 );
305
- intel_de_write (dev_priv , TRANS_VRR_VMAX (dev_priv , cpu_transcoder ),
303
+ intel_de_write (display , TRANS_VRR_VMAX (display , cpu_transcoder ),
306
304
crtc_state -> vrr .vmax - 1 );
307
- intel_de_write (dev_priv , TRANS_VRR_CTL (dev_priv , cpu_transcoder ),
305
+ intel_de_write (display , TRANS_VRR_CTL (display , cpu_transcoder ),
308
306
trans_vrr_ctl (crtc_state ));
309
- intel_de_write (dev_priv , TRANS_VRR_FLIPLINE (dev_priv , cpu_transcoder ),
307
+ intel_de_write (display , TRANS_VRR_FLIPLINE (display , cpu_transcoder ),
310
308
crtc_state -> vrr .flipline - 1 );
311
309
}
312
310
313
311
void intel_vrr_send_push (const struct intel_crtc_state * crtc_state )
314
312
{
315
- struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
316
- struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
313
+ struct intel_display * display = to_intel_display (crtc_state );
317
314
enum transcoder cpu_transcoder = crtc_state -> cpu_transcoder ;
318
315
319
316
if (!crtc_state -> vrr .enable )
320
317
return ;
321
318
322
- intel_de_write (dev_priv , TRANS_PUSH (dev_priv , cpu_transcoder ),
319
+ intel_de_write (display , TRANS_PUSH (display , cpu_transcoder ),
323
320
TRANS_PUSH_EN | TRANS_PUSH_SEND );
324
321
}
325
322
326
323
bool intel_vrr_is_push_sent (const struct intel_crtc_state * crtc_state )
327
324
{
328
- struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
329
- struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
325
+ struct intel_display * display = to_intel_display (crtc_state );
330
326
enum transcoder cpu_transcoder = crtc_state -> cpu_transcoder ;
331
327
332
328
if (!crtc_state -> vrr .enable )
333
329
return false;
334
330
335
- return intel_de_read (dev_priv , TRANS_PUSH (dev_priv , cpu_transcoder )) & TRANS_PUSH_SEND ;
331
+ return intel_de_read (display , TRANS_PUSH (display , cpu_transcoder )) & TRANS_PUSH_SEND ;
336
332
}
337
333
338
334
void intel_vrr_enable (const struct intel_crtc_state * crtc_state )
339
335
{
340
- struct drm_i915_private * dev_priv = to_i915 (crtc_state -> uapi . crtc -> dev );
336
+ struct intel_display * display = to_intel_display (crtc_state );
341
337
enum transcoder cpu_transcoder = crtc_state -> cpu_transcoder ;
342
338
343
339
if (!crtc_state -> vrr .enable )
344
340
return ;
345
341
346
- intel_de_write (dev_priv , TRANS_PUSH (dev_priv , cpu_transcoder ),
342
+ intel_de_write (display , TRANS_PUSH (display , cpu_transcoder ),
347
343
TRANS_PUSH_EN );
348
344
349
- if (HAS_AS_SDP (dev_priv ))
350
- intel_de_write (dev_priv ,
351
- TRANS_VRR_VSYNC (dev_priv , cpu_transcoder ),
345
+ if (HAS_AS_SDP (display ))
346
+ intel_de_write (display ,
347
+ TRANS_VRR_VSYNC (display , cpu_transcoder ),
352
348
VRR_VSYNC_END (crtc_state -> vrr .vsync_end ) |
353
349
VRR_VSYNC_START (crtc_state -> vrr .vsync_start ));
354
350
355
351
if (crtc_state -> cmrr .enable ) {
356
- intel_de_write (dev_priv , TRANS_VRR_CTL (dev_priv , cpu_transcoder ),
352
+ intel_de_write (display , TRANS_VRR_CTL (display , cpu_transcoder ),
357
353
VRR_CTL_VRR_ENABLE | VRR_CTL_CMRR_ENABLE |
358
354
trans_vrr_ctl (crtc_state ));
359
355
} else {
360
- intel_de_write (dev_priv , TRANS_VRR_CTL (dev_priv , cpu_transcoder ),
356
+ intel_de_write (display , TRANS_VRR_CTL (display , cpu_transcoder ),
361
357
VRR_CTL_VRR_ENABLE | trans_vrr_ctl (crtc_state ));
362
358
}
363
359
}
364
360
365
361
void intel_vrr_disable (const struct intel_crtc_state * old_crtc_state )
366
362
{
367
- struct intel_crtc * crtc = to_intel_crtc (old_crtc_state -> uapi .crtc );
368
- struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
363
+ struct intel_display * display = to_intel_display (old_crtc_state );
369
364
enum transcoder cpu_transcoder = old_crtc_state -> cpu_transcoder ;
370
365
371
366
if (!old_crtc_state -> vrr .enable )
372
367
return ;
373
368
374
- intel_de_write (dev_priv , TRANS_VRR_CTL (dev_priv , cpu_transcoder ),
369
+ intel_de_write (display , TRANS_VRR_CTL (display , cpu_transcoder ),
375
370
trans_vrr_ctl (old_crtc_state ));
376
- intel_de_wait_for_clear (dev_priv ,
377
- TRANS_VRR_STATUS (dev_priv , cpu_transcoder ),
371
+ intel_de_wait_for_clear (display ,
372
+ TRANS_VRR_STATUS (display , cpu_transcoder ),
378
373
VRR_STATUS_VRR_EN_LIVE , 1000 );
379
- intel_de_write (dev_priv , TRANS_PUSH (dev_priv , cpu_transcoder ), 0 );
374
+ intel_de_write (display , TRANS_PUSH (display , cpu_transcoder ), 0 );
380
375
381
- if (HAS_AS_SDP (dev_priv ))
382
- intel_de_write (dev_priv ,
383
- TRANS_VRR_VSYNC (dev_priv , cpu_transcoder ), 0 );
376
+ if (HAS_AS_SDP (display ))
377
+ intel_de_write (display ,
378
+ TRANS_VRR_VSYNC (display , cpu_transcoder ), 0 );
384
379
}
385
380
386
381
void intel_vrr_get_config (struct intel_crtc_state * crtc_state )
387
382
{
388
- struct drm_i915_private * dev_priv = to_i915 (crtc_state -> uapi . crtc -> dev );
383
+ struct intel_display * display = to_intel_display (crtc_state );
389
384
enum transcoder cpu_transcoder = crtc_state -> cpu_transcoder ;
390
385
u32 trans_vrr_ctl , trans_vrr_vsync ;
391
386
392
- trans_vrr_ctl = intel_de_read (dev_priv ,
393
- TRANS_VRR_CTL (dev_priv , cpu_transcoder ));
387
+ trans_vrr_ctl = intel_de_read (display ,
388
+ TRANS_VRR_CTL (display , cpu_transcoder ));
394
389
395
390
crtc_state -> vrr .enable = trans_vrr_ctl & VRR_CTL_VRR_ENABLE ;
396
- if (HAS_CMRR (dev_priv ))
391
+ if (HAS_CMRR (display ))
397
392
crtc_state -> cmrr .enable = (trans_vrr_ctl & VRR_CTL_CMRR_ENABLE );
398
393
399
394
if (crtc_state -> cmrr .enable ) {
400
395
crtc_state -> cmrr .cmrr_n =
401
- intel_de_read64_2x32 (dev_priv , TRANS_CMRR_N_LO (dev_priv , cpu_transcoder ),
402
- TRANS_CMRR_N_HI (dev_priv , cpu_transcoder ));
396
+ intel_de_read64_2x32 (display , TRANS_CMRR_N_LO (display , cpu_transcoder ),
397
+ TRANS_CMRR_N_HI (display , cpu_transcoder ));
403
398
crtc_state -> cmrr .cmrr_m =
404
- intel_de_read64_2x32 (dev_priv , TRANS_CMRR_M_LO (dev_priv , cpu_transcoder ),
405
- TRANS_CMRR_M_HI (dev_priv , cpu_transcoder ));
399
+ intel_de_read64_2x32 (display , TRANS_CMRR_M_LO (display , cpu_transcoder ),
400
+ TRANS_CMRR_M_HI (display , cpu_transcoder ));
406
401
}
407
402
408
- if (DISPLAY_VER (dev_priv ) >= 13 )
403
+ if (DISPLAY_VER (display ) >= 13 )
409
404
crtc_state -> vrr .guardband =
410
405
REG_FIELD_GET (XELPD_VRR_CTL_VRR_GUARDBAND_MASK , trans_vrr_ctl );
411
406
else
@@ -414,21 +409,21 @@ void intel_vrr_get_config(struct intel_crtc_state *crtc_state)
414
409
REG_FIELD_GET (VRR_CTL_PIPELINE_FULL_MASK , trans_vrr_ctl );
415
410
416
411
if (trans_vrr_ctl & VRR_CTL_FLIP_LINE_EN ) {
417
- crtc_state -> vrr .flipline = intel_de_read (dev_priv ,
418
- TRANS_VRR_FLIPLINE (dev_priv , cpu_transcoder )) + 1 ;
419
- crtc_state -> vrr .vmax = intel_de_read (dev_priv ,
420
- TRANS_VRR_VMAX (dev_priv , cpu_transcoder )) + 1 ;
421
- crtc_state -> vrr .vmin = intel_de_read (dev_priv ,
422
- TRANS_VRR_VMIN (dev_priv , cpu_transcoder )) + 1 ;
412
+ crtc_state -> vrr .flipline = intel_de_read (display ,
413
+ TRANS_VRR_FLIPLINE (display , cpu_transcoder )) + 1 ;
414
+ crtc_state -> vrr .vmax = intel_de_read (display ,
415
+ TRANS_VRR_VMAX (display , cpu_transcoder )) + 1 ;
416
+ crtc_state -> vrr .vmin = intel_de_read (display ,
417
+ TRANS_VRR_VMIN (display , cpu_transcoder )) + 1 ;
423
418
}
424
419
425
420
if (crtc_state -> vrr .enable ) {
426
421
crtc_state -> mode_flags |= I915_MODE_FLAG_VRR ;
427
422
428
- if (HAS_AS_SDP (dev_priv )) {
423
+ if (HAS_AS_SDP (display )) {
429
424
trans_vrr_vsync =
430
- intel_de_read (dev_priv ,
431
- TRANS_VRR_VSYNC (dev_priv , cpu_transcoder ));
425
+ intel_de_read (display ,
426
+ TRANS_VRR_VSYNC (display , cpu_transcoder ));
432
427
crtc_state -> vrr .vsync_start =
433
428
REG_FIELD_GET (VRR_VSYNC_START_MASK , trans_vrr_vsync );
434
429
crtc_state -> vrr .vsync_end =
0 commit comments