Commit fe10e7c6 authored by Jouni Högander's avatar Jouni Högander

drm/i915/psr: Improve fast and IO wake lines calculation

Current fast and IO wake lines calculation is assuming fast wake sync
length is 18 pulses. Let's improve this by checking actual length.

Add getter for IO buffer wake time and return 10 us there which was assumed
with static 42 us IO wake time. Upcoming patches will extent this for
different display versions.

Bspec: 65450

v3:
  - s/get_io_buffer_wake_time/io_buffer_wake_time/ and use it directly in
    calculation.
v2:
  - rename io_wake_time in if block to io_buffer_wake_time
  - rename get_io_wake_time to get_io_buffer_wake_time
Signed-off-by: default avatarJouni Högander <jouni.hogander@intel.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240313133221.868391-3-jouni.hogander@intel.com
parent 8453c12a
...@@ -1150,6 +1150,11 @@ static bool _lnl_compute_alpm_params(struct intel_dp *intel_dp, ...@@ -1150,6 +1150,11 @@ static bool _lnl_compute_alpm_params(struct intel_dp *intel_dp,
return true; return true;
} }
static int io_buffer_wake_time(void)
{
return 10;
}
static bool _compute_alpm_params(struct intel_dp *intel_dp, static bool _compute_alpm_params(struct intel_dp *intel_dp,
struct intel_crtc_state *crtc_state) struct intel_crtc_state *crtc_state)
{ {
...@@ -1158,12 +1163,15 @@ static bool _compute_alpm_params(struct intel_dp *intel_dp, ...@@ -1158,12 +1163,15 @@ static bool _compute_alpm_params(struct intel_dp *intel_dp,
u8 max_wake_lines; u8 max_wake_lines;
if (DISPLAY_VER(i915) >= 12) { if (DISPLAY_VER(i915) >= 12) {
io_wake_time = 42; int tfw_exit_latency = 20; /* eDP spec */
/* int phy_wake = 4; /* eDP spec */
* According to Bspec it's 42us, but based on testing int preamble = 8; /* eDP spec */
* it is not enough -> use 45 us. int precharge = intel_dp_aux_fw_sync_len() - preamble;
*/
fast_wake_time = 45; io_wake_time = max(precharge, io_buffer_wake_time()) + preamble +
phy_wake + tfw_exit_latency;
fast_wake_time = precharge + preamble + phy_wake +
tfw_exit_latency;
/* TODO: Check how we can use ALPM_CTL fast wake extended field */ /* TODO: Check how we can use ALPM_CTL fast wake extended field */
max_wake_lines = 12; max_wake_lines = 12;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment