43
43
44
44
#include "gem/i915_gem_object.h"
45
45
#include "i915_config.h"
46
- #include "i915_drv.h"
47
46
#include "i915_scheduler_types.h"
48
47
#include "i915_vma.h"
49
48
#include "i9xx_plane_regs.h"
@@ -169,10 +168,10 @@ intel_plane_destroy_state(struct drm_plane *plane,
169
168
170
169
bool intel_plane_needs_physical (struct intel_plane * plane )
171
170
{
172
- struct drm_i915_private * i915 = to_i915 (plane -> base . dev );
171
+ struct intel_display * display = to_intel_display (plane );
173
172
174
173
return plane -> id == PLANE_CURSOR &&
175
- DISPLAY_INFO (i915 )-> cursor_needs_physical ;
174
+ DISPLAY_INFO (display )-> cursor_needs_physical ;
176
175
}
177
176
178
177
bool intel_plane_can_async_flip (struct intel_plane * plane , u64 modifier )
@@ -277,7 +276,7 @@ int intel_plane_calc_min_cdclk(struct intel_atomic_state *state,
277
276
struct intel_plane * plane ,
278
277
bool * need_cdclk_calc )
279
278
{
280
- struct drm_i915_private * dev_priv = to_i915 (plane -> base . dev );
279
+ struct intel_display * display = to_intel_display (plane );
281
280
const struct intel_plane_state * plane_state =
282
281
intel_atomic_get_new_plane_state (state , plane );
283
282
struct intel_crtc * crtc = to_intel_crtc (plane_state -> hw .crtc );
@@ -322,7 +321,7 @@ int intel_plane_calc_min_cdclk(struct intel_atomic_state *state,
322
321
cdclk_state -> min_cdclk [crtc -> pipe ])
323
322
return 0 ;
324
323
325
- drm_dbg_kms (& dev_priv -> drm ,
324
+ drm_dbg_kms (display -> drm ,
326
325
"[PLANE:%d:%s] min cdclk (%d kHz) > [CRTC:%d:%s] min cdclk (%d kHz)\n" ,
327
326
plane -> base .base .id , plane -> base .name ,
328
327
new_crtc_state -> min_cdclk [plane -> id ],
@@ -435,7 +434,7 @@ static bool intel_plane_do_async_flip(struct intel_plane *plane,
435
434
const struct intel_crtc_state * old_crtc_state ,
436
435
const struct intel_crtc_state * new_crtc_state )
437
436
{
438
- struct drm_i915_private * i915 = to_i915 (plane -> base . dev );
437
+ struct intel_display * display = to_intel_display (plane );
439
438
440
439
if (!plane -> async_flip )
441
440
return false;
@@ -456,7 +455,7 @@ static bool intel_plane_do_async_flip(struct intel_plane *plane,
456
455
* extend this so other scanout parameters (stride/etc) could
457
456
* be changed as well...
458
457
*/
459
- return DISPLAY_VER (i915 ) < 9 || old_crtc_state -> uapi .async_flip ;
458
+ return DISPLAY_VER (display ) < 9 || old_crtc_state -> uapi .async_flip ;
460
459
}
461
460
462
461
static bool i9xx_must_disable_cxsr (const struct intel_crtc_state * new_crtc_state ,
@@ -560,16 +559,16 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
560
559
const struct intel_plane_state * old_plane_state ,
561
560
struct intel_plane_state * new_plane_state )
562
561
{
562
+ struct intel_display * display = to_intel_display (new_crtc_state );
563
563
struct intel_crtc * crtc = to_intel_crtc (new_crtc_state -> uapi .crtc );
564
564
struct intel_plane * plane = to_intel_plane (new_plane_state -> uapi .plane );
565
- struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
566
565
bool mode_changed = intel_crtc_needs_modeset (new_crtc_state );
567
566
bool was_crtc_enabled = old_crtc_state -> hw .active ;
568
567
bool is_crtc_enabled = new_crtc_state -> hw .active ;
569
568
bool turn_off , turn_on , visible , was_visible ;
570
569
int ret ;
571
570
572
- if (DISPLAY_VER (dev_priv ) >= 9 && plane -> id != PLANE_CURSOR ) {
571
+ if (DISPLAY_VER (display ) >= 9 && plane -> id != PLANE_CURSOR ) {
573
572
ret = skl_update_scaler_plane (new_crtc_state , new_plane_state );
574
573
if (ret )
575
574
return ret ;
@@ -578,7 +577,7 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
578
577
was_visible = old_plane_state -> uapi .visible ;
579
578
visible = new_plane_state -> uapi .visible ;
580
579
581
- if (!was_crtc_enabled && drm_WARN_ON (& dev_priv -> drm , was_visible ))
580
+ if (!was_crtc_enabled && drm_WARN_ON (display -> drm , was_visible ))
582
581
was_visible = false;
583
582
584
583
/*
@@ -602,7 +601,7 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
602
601
turn_off = was_visible && (!visible || mode_changed );
603
602
turn_on = visible && (!was_visible || mode_changed );
604
603
605
- drm_dbg_atomic (& dev_priv -> drm ,
604
+ drm_dbg_atomic (display -> drm ,
606
605
"[CRTC:%d:%s] with [PLANE:%d:%s] visible %i -> %i, off %i, on %i, ms %i\n" ,
607
606
crtc -> base .base .id , crtc -> base .name ,
608
607
plane -> base .base .id , plane -> base .name ,
@@ -612,11 +611,11 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
612
611
if (visible || was_visible )
613
612
new_crtc_state -> fb_bits |= plane -> frontbuffer_bit ;
614
613
615
- if (HAS_GMCH (dev_priv ) &&
614
+ if (HAS_GMCH (display ) &&
616
615
i9xx_must_disable_cxsr (new_crtc_state , old_plane_state , new_plane_state ))
617
616
new_crtc_state -> disable_cxsr = true;
618
617
619
- if ((IS_IRONLAKE ( dev_priv ) || IS_SANDYBRIDGE ( dev_priv ) || IS_IVYBRIDGE ( dev_priv ) ) &&
618
+ if ((display -> platform . ironlake || display -> platform . sandybridge || display -> platform . ivybridge ) &&
620
619
ilk_must_disable_cxsr (new_crtc_state , old_plane_state , new_plane_state ))
621
620
new_crtc_state -> disable_cxsr = true;
622
621
@@ -709,10 +708,10 @@ int intel_plane_atomic_check_with_state(const struct intel_crtc_state *old_crtc_
709
708
struct intel_plane *
710
709
intel_crtc_get_plane (struct intel_crtc * crtc , enum plane_id plane_id )
711
710
{
712
- struct drm_i915_private * i915 = to_i915 (crtc -> base . dev );
711
+ struct intel_display * display = to_intel_display (crtc );
713
712
struct intel_plane * plane ;
714
713
715
- for_each_intel_plane_on_crtc (& i915 -> drm , crtc , plane ) {
714
+ for_each_intel_plane_on_crtc (display -> drm , crtc , plane ) {
716
715
if (plane -> id == plane_id )
717
716
return plane ;
718
717
}
@@ -961,9 +960,9 @@ void intel_crtc_planes_update_arm(struct intel_dsb *dsb,
961
960
struct intel_atomic_state * state ,
962
961
struct intel_crtc * crtc )
963
962
{
964
- struct drm_i915_private * i915 = to_i915 (state -> base . dev );
963
+ struct intel_display * display = to_intel_display (state );
965
964
966
- if (DISPLAY_VER (i915 ) >= 9 )
965
+ if (DISPLAY_VER (display ) >= 9 )
967
966
skl_crtc_planes_update_arm (dsb , state , crtc );
968
967
else
969
968
i9xx_crtc_planes_update_arm (dsb , state , crtc );
@@ -974,7 +973,7 @@ int intel_atomic_plane_check_clipping(struct intel_plane_state *plane_state,
974
973
int min_scale , int max_scale ,
975
974
bool can_position )
976
975
{
977
- struct drm_i915_private * i915 = to_i915 (plane_state -> uapi . plane -> dev );
976
+ struct intel_display * display = to_intel_display (plane_state );
978
977
struct intel_plane * plane = to_intel_plane (plane_state -> uapi .plane );
979
978
struct drm_framebuffer * fb = plane_state -> hw .fb ;
980
979
struct drm_rect * src = & plane_state -> uapi .src ;
@@ -994,7 +993,7 @@ int intel_atomic_plane_check_clipping(struct intel_plane_state *plane_state,
994
993
hscale = drm_rect_calc_hscale (src , dst , min_scale , max_scale );
995
994
vscale = drm_rect_calc_vscale (src , dst , min_scale , max_scale );
996
995
if (hscale < 0 || vscale < 0 ) {
997
- drm_dbg_kms (& i915 -> drm ,
996
+ drm_dbg_kms (display -> drm ,
998
997
"[PLANE:%d:%s] invalid scaling " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT "\n" ,
999
998
plane -> base .base .id , plane -> base .name ,
1000
999
DRM_RECT_FP_ARG (src ), DRM_RECT_ARG (dst ));
@@ -1011,7 +1010,7 @@ int intel_atomic_plane_check_clipping(struct intel_plane_state *plane_state,
1011
1010
1012
1011
if (!can_position && plane_state -> uapi .visible &&
1013
1012
!drm_rect_equals (dst , clip )) {
1014
- drm_dbg_kms (& i915 -> drm ,
1013
+ drm_dbg_kms (display -> drm ,
1015
1014
"[PLANE:%d:%s] plane (" DRM_RECT_FMT ") must cover entire CRTC (" DRM_RECT_FMT ")\n" ,
1016
1015
plane -> base .base .id , plane -> base .name ,
1017
1016
DRM_RECT_ARG (dst ), DRM_RECT_ARG (clip ));
@@ -1026,7 +1025,7 @@ int intel_atomic_plane_check_clipping(struct intel_plane_state *plane_state,
1026
1025
1027
1026
int intel_plane_check_src_coordinates (struct intel_plane_state * plane_state )
1028
1027
{
1029
- struct drm_i915_private * i915 = to_i915 (plane_state -> uapi . plane -> dev );
1028
+ struct intel_display * display = to_intel_display (plane_state );
1030
1029
struct intel_plane * plane = to_intel_plane (plane_state -> uapi .plane );
1031
1030
const struct drm_framebuffer * fb = plane_state -> hw .fb ;
1032
1031
struct drm_rect * src = & plane_state -> uapi .src ;
@@ -1060,18 +1059,18 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
1060
1059
if (fb -> format -> format == DRM_FORMAT_RGB565 && rotated ) {
1061
1060
hsub = 2 ;
1062
1061
vsub = 2 ;
1063
- } else if (DISPLAY_VER (i915 ) >= 20 &&
1062
+ } else if (DISPLAY_VER (display ) >= 20 &&
1064
1063
intel_format_info_is_yuv_semiplanar (fb -> format , fb -> modifier )) {
1065
1064
/*
1066
1065
* This allows NV12 and P0xx formats to have odd size and/or odd
1067
- * source coordinates on DISPLAY_VER(i915 ) >= 20
1066
+ * source coordinates on DISPLAY_VER(display ) >= 20
1068
1067
*/
1069
1068
hsub = 1 ;
1070
1069
vsub = 1 ;
1071
1070
1072
1071
/* Wa_16023981245 */
1073
- if ((DISPLAY_VERx100 (i915 ) == 2000 ||
1074
- DISPLAY_VERx100 (i915 ) == 3000 ) &&
1072
+ if ((DISPLAY_VERx100 (display ) == 2000 ||
1073
+ DISPLAY_VERx100 (display ) == 3000 ) &&
1075
1074
src_x % 2 != 0 )
1076
1075
hsub = 2 ;
1077
1076
} else {
@@ -1083,15 +1082,15 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
1083
1082
hsub = vsub = max (hsub , vsub );
1084
1083
1085
1084
if (src_x % hsub || src_w % hsub ) {
1086
- drm_dbg_kms (& i915 -> drm ,
1085
+ drm_dbg_kms (display -> drm ,
1087
1086
"[PLANE:%d:%s] src x/w (%u, %u) must be a multiple of %u (rotated: %s)\n" ,
1088
1087
plane -> base .base .id , plane -> base .name ,
1089
1088
src_x , src_w , hsub , str_yes_no (rotated ));
1090
1089
return - EINVAL ;
1091
1090
}
1092
1091
1093
1092
if (src_y % vsub || src_h % vsub ) {
1094
- drm_dbg_kms (& i915 -> drm ,
1093
+ drm_dbg_kms (display -> drm ,
1095
1094
"[PLANE:%d:%s] src y/h (%u, %u) must be a multiple of %u (rotated: %s)\n" ,
1096
1095
plane -> base .base .id , plane -> base .name ,
1097
1096
src_y , src_h , vsub , str_yes_no (rotated ));
@@ -1336,14 +1335,13 @@ static int icl_check_nv12_planes(struct intel_atomic_state *state,
1336
1335
struct intel_crtc * crtc )
1337
1336
{
1338
1337
struct intel_display * display = to_intel_display (state );
1339
- struct drm_i915_private * dev_priv = to_i915 (state -> base .dev );
1340
1338
struct intel_crtc_state * crtc_state =
1341
1339
intel_atomic_get_new_crtc_state (state , crtc );
1342
1340
struct intel_plane_state * plane_state ;
1343
1341
struct intel_plane * plane ;
1344
1342
int i ;
1345
1343
1346
- if (DISPLAY_VER (dev_priv ) < 11 )
1344
+ if (DISPLAY_VER (display ) < 11 )
1347
1345
return 0 ;
1348
1346
1349
1347
/*
@@ -1371,7 +1369,7 @@ static int icl_check_nv12_planes(struct intel_atomic_state *state,
1371
1369
if ((crtc_state -> nv12_planes & BIT (plane -> id )) == 0 )
1372
1370
continue ;
1373
1371
1374
- for_each_intel_plane_on_crtc (& dev_priv -> drm , crtc , y_plane ) {
1372
+ for_each_intel_plane_on_crtc (display -> drm , crtc , y_plane ) {
1375
1373
if (!icl_is_nv12_y_plane (display , y_plane -> id ))
1376
1374
continue ;
1377
1375
@@ -1386,7 +1384,7 @@ static int icl_check_nv12_planes(struct intel_atomic_state *state,
1386
1384
}
1387
1385
1388
1386
if (!y_plane_state ) {
1389
- drm_dbg_kms (& dev_priv -> drm ,
1387
+ drm_dbg_kms (display -> drm ,
1390
1388
"[CRTC:%d:%s] need %d free Y planes for planar YUV\n" ,
1391
1389
crtc -> base .base .id , crtc -> base .name ,
1392
1390
hweight8 (crtc_state -> nv12_planes ));
@@ -1403,10 +1401,10 @@ static int intel_crtc_add_planes_to_state(struct intel_atomic_state *state,
1403
1401
struct intel_crtc * crtc ,
1404
1402
u8 plane_ids_mask )
1405
1403
{
1406
- struct drm_i915_private * dev_priv = to_i915 (state -> base . dev );
1404
+ struct intel_display * display = to_intel_display (state );
1407
1405
struct intel_plane * plane ;
1408
1406
1409
- for_each_intel_plane_on_crtc (& dev_priv -> drm , crtc , plane ) {
1407
+ for_each_intel_plane_on_crtc (display -> drm , crtc , plane ) {
1410
1408
struct intel_plane_state * plane_state ;
1411
1409
1412
1410
if ((plane_ids_mask & BIT (plane -> id )) == 0 )
@@ -1433,12 +1431,12 @@ int intel_atomic_add_affected_planes(struct intel_atomic_state *state,
1433
1431
new_crtc_state -> enabled_planes );
1434
1432
}
1435
1433
1436
- static bool active_planes_affects_min_cdclk (struct drm_i915_private * dev_priv )
1434
+ static bool active_planes_affects_min_cdclk (struct intel_display * display )
1437
1435
{
1438
1436
/* See {hsw,vlv,ivb}_plane_ratio() */
1439
- return IS_BROADWELL ( dev_priv ) || IS_HASWELL ( dev_priv ) ||
1440
- IS_CHERRYVIEW ( dev_priv ) || IS_VALLEYVIEW ( dev_priv ) ||
1441
- IS_IVYBRIDGE ( dev_priv ) ;
1437
+ return display -> platform . broadwell || display -> platform . haswell ||
1438
+ display -> platform . cherryview || display -> platform . valleyview ||
1439
+ display -> platform . ivybridge ;
1442
1440
}
1443
1441
1444
1442
static u8 intel_joiner_affected_planes (struct intel_atomic_state * state ,
@@ -1517,7 +1515,7 @@ static int intel_add_affected_planes(struct intel_atomic_state *state)
1517
1515
1518
1516
int intel_atomic_check_planes (struct intel_atomic_state * state )
1519
1517
{
1520
- struct drm_i915_private * dev_priv = to_i915 (state -> base . dev );
1518
+ struct intel_display * display = to_intel_display (state );
1521
1519
struct intel_crtc_state * old_crtc_state , * new_crtc_state ;
1522
1520
struct intel_plane_state __maybe_unused * plane_state ;
1523
1521
struct intel_plane * plane ;
@@ -1531,7 +1529,7 @@ int intel_atomic_check_planes(struct intel_atomic_state *state)
1531
1529
for_each_new_intel_plane_in_state (state , plane , plane_state , i ) {
1532
1530
ret = intel_plane_atomic_check (state , plane );
1533
1531
if (ret ) {
1534
- drm_dbg_atomic (& dev_priv -> drm ,
1532
+ drm_dbg_atomic (display -> drm ,
1535
1533
"[PLANE:%d:%s] atomic driver check failed\n" ,
1536
1534
plane -> base .base .id , plane -> base .name );
1537
1535
return ret ;
@@ -1551,7 +1549,7 @@ int intel_atomic_check_planes(struct intel_atomic_state *state)
1551
1549
* the planes' minimum cdclk calculation. Add such planes
1552
1550
* to the state before we compute the minimum cdclk.
1553
1551
*/
1554
- if (!active_planes_affects_min_cdclk (dev_priv ))
1552
+ if (!active_planes_affects_min_cdclk (display ))
1555
1553
continue ;
1556
1554
1557
1555
old_active_planes = old_crtc_state -> active_planes & ~BIT (PLANE_CURSOR );
0 commit comments