Skip to content

Commit c93b9b2

Browse files
StanFox1984Manasi Navare
authored andcommitted
drm/i915: Decouple cdclk calculation from modeset checks
We need to calculate cdclk after watermarks/ddb has been calculated as with recent hw CDCLK needs to be adjusted accordingly to DBuf requirements, which is not possible with current code organization. Setting CDCLK according to DBuf BW requirements and not just rejecting if it doesn't satisfy BW requirements, will allow us to save power when it is possible and gain additional bandwidth when it's needed - i.e boosting both our power management and perfomance capabilities. This patch is preparation for that, first we now extract modeset calculation from modeset checks, in order to call it after wm/ddb has been calculated. v2: - Extract only intel_modeset_calc_cdclk from intel_modeset_checks (Ville Syrjälä) v3: - Clear plls after intel_modeset_calc_cdclk v4: - Added r-b from previous revision to commit message Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200519131117.17190-2-stanislav.lisovskiy@intel.com
1 parent aedbe0a commit c93b9b2

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

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

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14567,12 +14567,6 @@ static int intel_modeset_checks(struct intel_atomic_state *state)
1456714567
return ret;
1456814568
}
1456914569

14570-
ret = intel_modeset_calc_cdclk(state);
14571-
if (ret)
14572-
return ret;
14573-
14574-
intel_modeset_clear_plls(state);
14575-
1457614570
if (IS_HASWELL(dev_priv))
1457714571
return hsw_mode_set_planes_workaround(state);
1457814572

@@ -14904,10 +14898,6 @@ static int intel_atomic_check(struct drm_device *dev,
1490414898
goto fail;
1490514899
}
1490614900

14907-
ret = intel_atomic_check_crtcs(state);
14908-
if (ret)
14909-
goto fail;
14910-
1491114901
intel_fbc_choose_crtc(dev_priv, state);
1491214902
ret = calc_watermark_data(state);
1491314903
if (ret)
@@ -14917,6 +14907,18 @@ static int intel_atomic_check(struct drm_device *dev,
1491714907
if (ret)
1491814908
goto fail;
1491914909

14910+
if (any_ms) {
14911+
ret = intel_modeset_calc_cdclk(state);
14912+
if (ret)
14913+
return ret;
14914+
14915+
intel_modeset_clear_plls(state);
14916+
}
14917+
14918+
ret = intel_atomic_check_crtcs(state);
14919+
if (ret)
14920+
goto fail;
14921+
1492014922
for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
1492114923
new_crtc_state, i) {
1492214924
if (!needs_modeset(new_crtc_state) &&

0 commit comments

Comments
 (0)