From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
jani.nikula@linux.intel.com, Jani Nikula <jani.nikula@intel.com>
Subject: Re: [PATCH 1/2] Revert "drm/i915/dp: Reject HBR3 when sink doesn't support TPS4"
Date: Mon, 23 Jun 2025 17:42:23 +0300 [thread overview]
Message-ID: <aFlnzzW7HhtcqWs7@intel.com> (raw)
In-Reply-To: <20250620124417.2041233-2-ankit.k.nautiyal@intel.com>
On Fri, Jun 20, 2025 at 06:14:16PM +0530, Ankit Nautiyal wrote:
> This reverts commit 584cf613c24a4250d9be4819efc841aa2624d5b6.
> Commit 584cf613c24a ("drm/i915/dp: Reject HBR3 when sink doesn't support
> TPS4") introduced a blanket rejection of HBR3 link rate when the sink does
> not support TPS4. While this was intended to address instability observed
> on certain eDP panels [1], the TPS4 requirement is only mandated for DPRX
> and not for eDPRX.
I see no exception given for eDP regarding this rule. The only exception
allowed is that eDP can say DPCD_REV=1.4 + TPS4_SUPPORTED=0. So I still
claim that these eDP sinks are violating the spec.
>
> This change inadvertently causes blank screens on some eDP panels that do
> not advertise TPS4 support, and require HBR3 to operate at their fixed
> native resolution.
>
> Revert the commit to restore functionality for such panels.
>
> [1] https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5969
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Acked-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 49 ++++---------------------
> 1 file changed, 7 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 277b40b13948..74f331ae97ff 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -173,28 +173,10 @@ int intel_dp_link_symbol_clock(int rate)
>
> static int max_dprx_rate(struct intel_dp *intel_dp)
> {
> - struct intel_display *display = to_intel_display(intel_dp);
> - struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
> - int max_rate;
> -
> if (intel_dp_tunnel_bw_alloc_is_enabled(intel_dp))
> - max_rate = drm_dp_tunnel_max_dprx_rate(intel_dp->tunnel);
> - else
> - max_rate = drm_dp_bw_code_to_link_rate(intel_dp->dpcd[DP_MAX_LINK_RATE]);
> + return drm_dp_tunnel_max_dprx_rate(intel_dp->tunnel);
>
> - /*
> - * Some broken eDP sinks illegally declare support for
> - * HBR3 without TPS4, and are unable to produce a stable
> - * output. Reject HBR3 when TPS4 is not available.
> - */
> - if (max_rate >= 810000 && !drm_dp_tps4_supported(intel_dp->dpcd)) {
> - drm_dbg_kms(display->drm,
> - "[ENCODER:%d:%s] Rejecting HBR3 due to missing TPS4 support\n",
> - encoder->base.base.id, encoder->base.name);
> - max_rate = 540000;
> - }
> -
> - return max_rate;
> + return drm_dp_bw_code_to_link_rate(intel_dp->dpcd[DP_MAX_LINK_RATE]);
> }
>
> static int max_dprx_lane_count(struct intel_dp *intel_dp)
> @@ -4270,9 +4252,6 @@ static void intel_edp_mso_init(struct intel_dp *intel_dp)
> static void
> intel_edp_set_sink_rates(struct intel_dp *intel_dp)
> {
> - struct intel_display *display = to_intel_display(intel_dp);
> - struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
> -
> intel_dp->num_sink_rates = 0;
>
> if (intel_dp->edp_dpcd[0] >= DP_EDP_14) {
> @@ -4283,7 +4262,10 @@ intel_edp_set_sink_rates(struct intel_dp *intel_dp)
> sink_rates, sizeof(sink_rates));
>
> for (i = 0; i < ARRAY_SIZE(sink_rates); i++) {
> - int rate;
> + int val = le16_to_cpu(sink_rates[i]);
> +
> + if (val == 0)
> + break;
>
> /* Value read multiplied by 200kHz gives the per-lane
> * link rate in kHz. The source rates are, however,
> @@ -4291,24 +4273,7 @@ intel_edp_set_sink_rates(struct intel_dp *intel_dp)
> * back to symbols is
> * (val * 200kHz)*(8/10 ch. encoding)*(1/8 bit to Byte)
> */
> - rate = le16_to_cpu(sink_rates[i]) * 200 / 10;
> -
> - if (rate == 0)
> - break;
> -
> - /*
> - * Some broken eDP sinks illegally declare support for
> - * HBR3 without TPS4, and are unable to produce a stable
> - * output. Reject HBR3 when TPS4 is not available.
> - */
> - if (rate >= 810000 && !drm_dp_tps4_supported(intel_dp->dpcd)) {
> - drm_dbg_kms(display->drm,
> - "[ENCODER:%d:%s] Rejecting HBR3 due to missing TPS4 support\n",
> - encoder->base.base.id, encoder->base.name);
> - break;
> - }
> -
> - intel_dp->sink_rates[i] = rate;
> + intel_dp->sink_rates[i] = (val * 200) / 10;
> }
> intel_dp->num_sink_rates = i;
> }
> --
> 2.45.2
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2025-06-23 14:42 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-20 12:44 [PATCH 0/2] Revert patch to reject HBR3 for all eDP panels Ankit Nautiyal
2025-06-20 12:44 ` [PATCH 1/2] Revert "drm/i915/dp: Reject HBR3 when sink doesn't support TPS4" Ankit Nautiyal
2025-06-23 14:42 ` Ville Syrjälä [this message]
2025-06-24 4:40 ` Nautiyal, Ankit K
2025-06-24 16:49 ` Ville Syrjälä
2025-06-25 8:18 ` Jani Nikula
2025-06-26 11:31 ` Ville Syrjälä
2025-06-20 12:44 ` [PATCH 2/2] drm/i915/dp: Add device specific quirk to limit eDP rate to HBR2 Ankit Nautiyal
2025-06-23 9:59 ` Jani Nikula
2025-06-24 7:32 ` Nautiyal, Ankit K
2025-06-20 13:23 ` ✓ CI.KUnit: success for Revert patch to reject HBR3 for all eDP panels Patchwork
2025-06-20 13:57 ` ✓ i915.CI.BAT: " Patchwork
2025-06-20 16:46 ` ✗ i915.CI.Full: failure " Patchwork
2025-06-20 23:47 ` ✓ Xe.CI.Full: success " Patchwork
2025-06-23 5:32 ` ✓ i915.CI.Full: " Patchwork
2025-06-24 8:43 ` ✓ CI.KUnit: success for Revert patch to reject HBR3 for all eDP panels (rev2) Patchwork
2025-06-24 9:50 ` ✓ Xe.CI.BAT: " Patchwork
2025-06-24 16:20 ` ✓ Xe.CI.Full: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2025-07-10 5:20 [PATCH 0/1] Revert patch to reject HBR3 for all eDP panels Ankit Nautiyal
2025-07-10 5:20 ` [PATCH 1/2] Revert "drm/i915/dp: Reject HBR3 when sink doesn't support TPS4" Ankit Nautiyal
2025-07-09 5:51 [PATCH 0/1] Revert patch to reject HBR3 for all eDP panels Ankit Nautiyal
2025-07-09 5:51 ` [PATCH 1/2] Revert "drm/i915/dp: Reject HBR3 when sink doesn't support TPS4" Ankit Nautiyal
2025-07-09 18:04 ` Ville Syrjälä
2025-07-10 4:47 ` Nautiyal, Ankit K
2025-06-10 10:04 [PATCH 0/2] Add kernel param to limit the eDP rate to HBR2 Ankit Nautiyal
2025-06-10 10:04 ` [PATCH 1/2] Revert "drm/i915/dp: Reject HBR3 when sink doesn't support TPS4" Ankit Nautiyal
2025-06-10 12:15 ` Jani Nikula
2025-05-14 8:43 [PATCH 0/2] Add quirk for panels that support HBR3 without TPS4 Ankit Nautiyal
2025-05-14 8:43 ` [PATCH 1/2] Revert "drm/i915/dp: Reject HBR3 when sink doesn't support TPS4" Ankit Nautiyal
2025-05-14 10:02 ` Jani Nikula
2025-05-14 10:47 ` Jani Nikula
2025-05-14 11:33 ` Nautiyal, Ankit K
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aFlnzzW7HhtcqWs7@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=jani.nikula@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.