Skip to content

Commit 9990581

Browse files
committed
drm/i915: move icl_sagv_{pre, post}_plane_update() to intel_bw.c
Prefer only looking at struct intel_bw_state internals inside intel_bw.c. To that effect, move icl_sagv_{pre,post}_plane_update() there. Reviewed-by: Imre Deak <imre.deak@intel.com> Link: https://lore.kernel.org/r/dedcbeb3389ecd50195aa37de75e9992fae5d197.1750847509.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
1 parent 4822cb8 commit 9990581

3 files changed

Lines changed: 68 additions & 68 deletions

File tree

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

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ static bool is_sagv_enabled(struct intel_display *display, u16 points_mask)
153153
ICL_PCODE_REQ_QGV_PT_MASK);
154154
}
155155

156-
int icl_pcode_restrict_qgv_points(struct intel_display *display,
157-
u32 points_mask)
156+
static int icl_pcode_restrict_qgv_points(struct intel_display *display,
157+
u32 points_mask)
158158
{
159159
int ret;
160160

@@ -981,6 +981,70 @@ static void icl_force_disable_sagv(struct intel_display *display,
981981
icl_pcode_restrict_qgv_points(display, bw_state->qgv_points_mask);
982982
}
983983

984+
void icl_sagv_pre_plane_update(struct intel_atomic_state *state)
985+
{
986+
struct intel_display *display = to_intel_display(state);
987+
const struct intel_bw_state *old_bw_state =
988+
intel_atomic_get_old_bw_state(state);
989+
const struct intel_bw_state *new_bw_state =
990+
intel_atomic_get_new_bw_state(state);
991+
u16 old_mask, new_mask;
992+
993+
if (!new_bw_state)
994+
return;
995+
996+
old_mask = old_bw_state->qgv_points_mask;
997+
new_mask = old_bw_state->qgv_points_mask | new_bw_state->qgv_points_mask;
998+
999+
if (old_mask == new_mask)
1000+
return;
1001+
1002+
WARN_ON(!new_bw_state->base.changed);
1003+
1004+
drm_dbg_kms(display->drm, "Restricting QGV points: 0x%x -> 0x%x\n",
1005+
old_mask, new_mask);
1006+
1007+
/*
1008+
* Restrict required qgv points before updating the configuration.
1009+
* According to BSpec we can't mask and unmask qgv points at the same
1010+
* time. Also masking should be done before updating the configuration
1011+
* and unmasking afterwards.
1012+
*/
1013+
icl_pcode_restrict_qgv_points(display, new_mask);
1014+
}
1015+
1016+
void icl_sagv_post_plane_update(struct intel_atomic_state *state)
1017+
{
1018+
struct intel_display *display = to_intel_display(state);
1019+
const struct intel_bw_state *old_bw_state =
1020+
intel_atomic_get_old_bw_state(state);
1021+
const struct intel_bw_state *new_bw_state =
1022+
intel_atomic_get_new_bw_state(state);
1023+
u16 old_mask, new_mask;
1024+
1025+
if (!new_bw_state)
1026+
return;
1027+
1028+
old_mask = old_bw_state->qgv_points_mask | new_bw_state->qgv_points_mask;
1029+
new_mask = new_bw_state->qgv_points_mask;
1030+
1031+
if (old_mask == new_mask)
1032+
return;
1033+
1034+
WARN_ON(!new_bw_state->base.changed);
1035+
1036+
drm_dbg_kms(display->drm, "Relaxing QGV points: 0x%x -> 0x%x\n",
1037+
old_mask, new_mask);
1038+
1039+
/*
1040+
* Allow required qgv points after updating the configuration.
1041+
* According to BSpec we can't mask and unmask qgv points at the same
1042+
* time. Also masking should be done before updating the configuration
1043+
* and unmasking afterwards.
1044+
*/
1045+
icl_pcode_restrict_qgv_points(display, new_mask);
1046+
}
1047+
9841048
static int mtl_find_qgv_points(struct intel_display *display,
9851049
unsigned int data_rate,
9861050
unsigned int num_active_planes,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ intel_atomic_get_bw_state(struct intel_atomic_state *state);
6767
void intel_bw_init_hw(struct intel_display *display);
6868
int intel_bw_init(struct intel_display *display);
6969
int intel_bw_atomic_check(struct intel_atomic_state *state, bool any_ms);
70-
int icl_pcode_restrict_qgv_points(struct intel_display *display,
71-
u32 points_mask);
7270
int intel_bw_calc_min_cdclk(struct intel_atomic_state *state,
7371
bool *need_cdclk_calc);
7472
int intel_bw_min_cdclk(struct intel_display *display,
@@ -79,5 +77,7 @@ void intel_bw_crtc_disable_noatomic(struct intel_crtc *crtc);
7977
bool intel_bw_pmdemand_needs_update(struct intel_atomic_state *state);
8078
bool intel_bw_can_enable_sagv(struct intel_display *display,
8179
const struct intel_bw_state *bw_state);
80+
void icl_sagv_pre_plane_update(struct intel_atomic_state *state);
81+
void icl_sagv_post_plane_update(struct intel_atomic_state *state);
8282

8383
#endif /* __INTEL_BW_H__ */

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

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -265,70 +265,6 @@ static void skl_sagv_post_plane_update(struct intel_atomic_state *state)
265265
skl_sagv_enable(display);
266266
}
267267

268-
static void icl_sagv_pre_plane_update(struct intel_atomic_state *state)
269-
{
270-
struct intel_display *display = to_intel_display(state);
271-
const struct intel_bw_state *old_bw_state =
272-
intel_atomic_get_old_bw_state(state);
273-
const struct intel_bw_state *new_bw_state =
274-
intel_atomic_get_new_bw_state(state);
275-
u16 old_mask, new_mask;
276-
277-
if (!new_bw_state)
278-
return;
279-
280-
old_mask = old_bw_state->qgv_points_mask;
281-
new_mask = old_bw_state->qgv_points_mask | new_bw_state->qgv_points_mask;
282-
283-
if (old_mask == new_mask)
284-
return;
285-
286-
WARN_ON(!new_bw_state->base.changed);
287-
288-
drm_dbg_kms(display->drm, "Restricting QGV points: 0x%x -> 0x%x\n",
289-
old_mask, new_mask);
290-
291-
/*
292-
* Restrict required qgv points before updating the configuration.
293-
* According to BSpec we can't mask and unmask qgv points at the same
294-
* time. Also masking should be done before updating the configuration
295-
* and unmasking afterwards.
296-
*/
297-
icl_pcode_restrict_qgv_points(display, new_mask);
298-
}
299-
300-
static void icl_sagv_post_plane_update(struct intel_atomic_state *state)
301-
{
302-
struct intel_display *display = to_intel_display(state);
303-
const struct intel_bw_state *old_bw_state =
304-
intel_atomic_get_old_bw_state(state);
305-
const struct intel_bw_state *new_bw_state =
306-
intel_atomic_get_new_bw_state(state);
307-
u16 old_mask, new_mask;
308-
309-
if (!new_bw_state)
310-
return;
311-
312-
old_mask = old_bw_state->qgv_points_mask | new_bw_state->qgv_points_mask;
313-
new_mask = new_bw_state->qgv_points_mask;
314-
315-
if (old_mask == new_mask)
316-
return;
317-
318-
WARN_ON(!new_bw_state->base.changed);
319-
320-
drm_dbg_kms(display->drm, "Relaxing QGV points: 0x%x -> 0x%x\n",
321-
old_mask, new_mask);
322-
323-
/*
324-
* Allow required qgv points after updating the configuration.
325-
* According to BSpec we can't mask and unmask qgv points at the same
326-
* time. Also masking should be done before updating the configuration
327-
* and unmasking afterwards.
328-
*/
329-
icl_pcode_restrict_qgv_points(display, new_mask);
330-
}
331-
332268
void intel_sagv_pre_plane_update(struct intel_atomic_state *state)
333269
{
334270
struct intel_display *display = to_intel_display(state);

0 commit comments

Comments
 (0)