Skip to content

Commit dbf1b1e

Browse files
committed
drm/i915: Split wm sanitize from readout
I'll need to move the wm readout to an earlier point in the sequence (since the bw state readout will need ddb information from the wm readout). But (at least for now) the wm sanitation will need to stay put as it needs to also sanitize things for any pipes/planes we disable later during the hw state takeover. Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250306163420.3961-16-ville.syrjala@linux.intel.com
1 parent 003ec4c commit dbf1b1e

File tree

6 files changed

+16
-18
lines changed

6 files changed

+16
-18
lines changed

drivers/gpu/drm/i915/display/i9xx_wm.c

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3902,12 +3902,6 @@ static void g4x_wm_sanitize(struct drm_i915_private *dev_priv)
39023902
mutex_unlock(&dev_priv->display.wm.wm_mutex);
39033903
}
39043904

3905-
static void g4x_wm_get_hw_state_and_sanitize(struct drm_i915_private *i915)
3906-
{
3907-
g4x_wm_get_hw_state(i915);
3908-
g4x_wm_sanitize(i915);
3909-
}
3910-
39113905
static void vlv_wm_get_hw_state(struct drm_i915_private *dev_priv)
39123906
{
39133907
struct vlv_wm_values *wm = &dev_priv->display.wm.vlv;
@@ -4055,12 +4049,6 @@ static void vlv_wm_sanitize(struct drm_i915_private *dev_priv)
40554049
mutex_unlock(&dev_priv->display.wm.wm_mutex);
40564050
}
40574051

4058-
static void vlv_wm_get_hw_state_and_sanitize(struct drm_i915_private *i915)
4059-
{
4060-
vlv_wm_get_hw_state(i915);
4061-
vlv_wm_sanitize(i915);
4062-
}
4063-
40644052
/*
40654053
* FIXME should probably kill this and improve
40664054
* the real watermark readout/sanitation instead
@@ -4122,14 +4110,16 @@ static const struct intel_wm_funcs vlv_wm_funcs = {
41224110
.initial_watermarks = vlv_initial_watermarks,
41234111
.optimize_watermarks = vlv_optimize_watermarks,
41244112
.atomic_update_watermarks = vlv_atomic_update_fifo,
4125-
.get_hw_state = vlv_wm_get_hw_state_and_sanitize,
4113+
.get_hw_state = vlv_wm_get_hw_state,
4114+
.sanitize = vlv_wm_sanitize,
41264115
};
41274116

41284117
static const struct intel_wm_funcs g4x_wm_funcs = {
41294118
.compute_watermarks = g4x_compute_watermarks,
41304119
.initial_watermarks = g4x_initial_watermarks,
41314120
.optimize_watermarks = g4x_optimize_watermarks,
4132-
.get_hw_state = g4x_wm_get_hw_state_and_sanitize,
4121+
.get_hw_state = g4x_wm_get_hw_state,
4122+
.sanitize = g4x_wm_sanitize,
41334123
};
41344124

41354125
static const struct intel_wm_funcs pnv_wm_funcs = {

drivers/gpu/drm/i915/display/intel_display_core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ struct intel_wm_funcs {
9191
struct intel_crtc *crtc);
9292
int (*compute_global_watermarks)(struct intel_atomic_state *state);
9393
void (*get_hw_state)(struct drm_i915_private *i915);
94+
void (*sanitize)(struct drm_i915_private *i915);
9495
};
9596

9697
struct intel_audio_state {

drivers/gpu/drm/i915/display/intel_modeset_setup.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -991,6 +991,7 @@ void intel_modeset_setup_hw_state(struct drm_i915_private *i915,
991991
intel_dpll_sanitize_state(display);
992992

993993
intel_wm_get_hw_state(i915);
994+
intel_wm_sanitize(i915);
994995

995996
for_each_intel_crtc(&i915->drm, crtc) {
996997
struct intel_crtc_state *crtc_state =

drivers/gpu/drm/i915/display/intel_wm.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ void intel_wm_get_hw_state(struct drm_i915_private *i915)
108108
return i915->display.funcs.wm->get_hw_state(i915);
109109
}
110110

111+
void intel_wm_sanitize(struct drm_i915_private *i915)
112+
{
113+
if (i915->display.funcs.wm->sanitize)
114+
return i915->display.funcs.wm->sanitize(i915);
115+
}
116+
111117
bool intel_wm_plane_visible(const struct intel_crtc_state *crtc_state,
112118
const struct intel_plane_state *plane_state)
113119
{

drivers/gpu/drm/i915/display/intel_wm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ void intel_optimize_watermarks(struct intel_atomic_state *state,
2525
struct intel_crtc *crtc);
2626
int intel_compute_global_watermarks(struct intel_atomic_state *state);
2727
void intel_wm_get_hw_state(struct drm_i915_private *i915);
28+
void intel_wm_sanitize(struct drm_i915_private *i915);
2829
bool intel_wm_plane_visible(const struct intel_crtc_state *crtc_state,
2930
const struct intel_plane_state *plane_state);
3031
void intel_print_wm_latency(struct drm_i915_private *i915,

drivers/gpu/drm/i915/display/skl_watermark.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3837,10 +3837,8 @@ static void skl_dbuf_sanitize(struct drm_i915_private *i915)
38373837
}
38383838
}
38393839

3840-
static void skl_wm_get_hw_state_and_sanitize(struct drm_i915_private *i915)
3840+
static void skl_wm_sanitize(struct drm_i915_private *i915)
38413841
{
3842-
skl_wm_get_hw_state(i915);
3843-
38443842
skl_mbus_sanitize(i915);
38453843
skl_dbuf_sanitize(i915);
38463844
}
@@ -4016,7 +4014,8 @@ void intel_wm_state_verify(struct intel_atomic_state *state,
40164014

40174015
static const struct intel_wm_funcs skl_wm_funcs = {
40184016
.compute_global_watermarks = skl_compute_wm,
4019-
.get_hw_state = skl_wm_get_hw_state_and_sanitize,
4017+
.get_hw_state = skl_wm_get_hw_state,
4018+
.sanitize = skl_wm_sanitize,
40204019
};
40214020

40224021
void skl_wm_init(struct drm_i915_private *i915)

0 commit comments

Comments
 (0)