Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/bw: relocate intel_can_enable_sagv() and rename to intel_bw_can_enable_sagv()

Prefer only looking at struct intel_bw_state internals inside
intel_bw.c. To that effect, move intel_can_enable_sagv() there, and
rename to intel_bw_can_enable_sagv() to have consistent naming.

Reviewed-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/dd6e3857bd1343c07a36826e99c1c04f7dd5ddb5.1750847509.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

+21 -22
+16 -6
drivers/gpu/drm/i915/display/intel_bw.c
··· 1001 1001 * for qgv peak bw in PM Demand request. So assign UINT_MAX if SAGV is 1002 1002 * not enabled. PM Demand code will clamp the value for the register 1003 1003 */ 1004 - if (!intel_can_enable_sagv(display, new_bw_state)) { 1004 + if (!intel_bw_can_enable_sagv(display, new_bw_state)) { 1005 1005 new_bw_state->qgv_point_peakbw = U16_MAX; 1006 1006 drm_dbg_kms(display->drm, "No SAGV, use UINT_MAX as peak bw."); 1007 1007 return 0; ··· 1114 1114 * we can't enable SAGV due to the increased memory latency it may 1115 1115 * cause. 1116 1116 */ 1117 - if (!intel_can_enable_sagv(display, new_bw_state)) { 1117 + if (!intel_bw_can_enable_sagv(display, new_bw_state)) { 1118 1118 qgv_points = icl_max_bw_qgv_point_mask(display, num_active_planes); 1119 1119 drm_dbg_kms(display->drm, "No SAGV, using single QGV point mask 0x%x\n", 1120 1120 qgv_points); ··· 1481 1481 if (!new_bw_state) 1482 1482 return 0; 1483 1483 1484 - if (intel_can_enable_sagv(display, new_bw_state) != 1485 - intel_can_enable_sagv(display, old_bw_state)) { 1484 + if (intel_bw_can_enable_sagv(display, new_bw_state) != 1485 + intel_bw_can_enable_sagv(display, old_bw_state)) { 1486 1486 ret = intel_atomic_serialize_global_state(&new_bw_state->base); 1487 1487 if (ret) 1488 1488 return ret; ··· 1528 1528 new_bw_state = intel_atomic_get_new_bw_state(state); 1529 1529 1530 1530 if (new_bw_state && 1531 - intel_can_enable_sagv(display, old_bw_state) != 1532 - intel_can_enable_sagv(display, new_bw_state)) 1531 + intel_bw_can_enable_sagv(display, old_bw_state) != 1532 + intel_bw_can_enable_sagv(display, new_bw_state)) 1533 1533 changed = true; 1534 1534 1535 1535 /* ··· 1664 1664 return true; 1665 1665 1666 1666 return false; 1667 + } 1668 + 1669 + bool intel_bw_can_enable_sagv(struct intel_display *display, 1670 + const struct intel_bw_state *bw_state) 1671 + { 1672 + if (DISPLAY_VER(display) < 11 && 1673 + bw_state->active_pipes && !is_power_of_2(bw_state->active_pipes)) 1674 + return false; 1675 + 1676 + return bw_state->pipe_sagv_reject == 0; 1667 1677 }
+2
drivers/gpu/drm/i915/display/intel_bw.h
··· 77 77 void intel_bw_crtc_disable_noatomic(struct intel_crtc *crtc); 78 78 79 79 bool intel_bw_pmdemand_needs_update(struct intel_atomic_state *state); 80 + bool intel_bw_can_enable_sagv(struct intel_display *display, 81 + const struct intel_bw_state *bw_state); 80 82 81 83 #endif /* __INTEL_BW_H__ */
+3 -13
drivers/gpu/drm/i915/display/skl_watermark.c
··· 248 248 if (!new_bw_state) 249 249 return; 250 250 251 - if (!intel_can_enable_sagv(display, new_bw_state)) 251 + if (!intel_bw_can_enable_sagv(display, new_bw_state)) 252 252 skl_sagv_disable(display); 253 253 } 254 254 ··· 261 261 if (!new_bw_state) 262 262 return; 263 263 264 - if (intel_can_enable_sagv(display, new_bw_state)) 264 + if (intel_bw_can_enable_sagv(display, new_bw_state)) 265 265 skl_sagv_enable(display); 266 266 } 267 267 ··· 460 460 return tgl_crtc_can_enable_sagv(crtc_state); 461 461 else 462 462 return skl_crtc_can_enable_sagv(crtc_state); 463 - } 464 - 465 - bool intel_can_enable_sagv(struct intel_display *display, 466 - const struct intel_bw_state *bw_state) 467 - { 468 - if (DISPLAY_VER(display) < 11 && 469 - bw_state->active_pipes && !is_power_of_2(bw_state->active_pipes)) 470 - return false; 471 - 472 - return bw_state->pipe_sagv_reject == 0; 473 463 } 474 464 475 465 static u16 skl_ddb_entry_init(struct skl_ddb_entry *entry, ··· 3025 3035 * drm_atomic_check_only() gets upset if we pull more crtcs 3026 3036 * into the state, so we have to calculate this based on the 3027 3037 * individual intel_crtc_can_enable_sagv() rather than 3028 - * the overall intel_can_enable_sagv(). Otherwise the 3038 + * the overall intel_bw_can_enable_sagv(). Otherwise the 3029 3039 * crtcs not included in the commit would not switch to the 3030 3040 * SAGV watermarks when we are about to enable SAGV, and that 3031 3041 * would lead to underruns. This does mean extra power draw
-3
drivers/gpu/drm/i915/display/skl_watermark.h
··· 10 10 11 11 enum plane_id; 12 12 struct intel_atomic_state; 13 - struct intel_bw_state; 14 13 struct intel_crtc; 15 14 struct intel_crtc_state; 16 15 struct intel_dbuf_state; ··· 25 26 void intel_sagv_pre_plane_update(struct intel_atomic_state *state); 26 27 void intel_sagv_post_plane_update(struct intel_atomic_state *state); 27 28 bool intel_crtc_can_enable_sagv(const struct intel_crtc_state *crtc_state); 28 - bool intel_can_enable_sagv(struct intel_display *display, 29 - const struct intel_bw_state *bw_state); 30 29 bool intel_has_sagv(struct intel_display *display); 31 30 32 31 u32 skl_ddb_dbuf_slice_mask(struct intel_display *display,