Re: [PATCH v5 0/4] drm/dp: Rework LTTPR transparent mode handling and add support to msm driver

From: Dmitry Baryshkov
Date: Mon Feb 03 2025 - 09:36:47 EST


On Mon, Feb 03, 2025 at 12:57:55PM +0200, Abel Vesa wrote:
> Looking at both i915 and nouveau DP drivers, both are setting the first
> LTTPR (if found) in transparent mode first and then in non-transparent
> mode, just like the DP v2.0 specification mentions in section 3.6.6.1.
>
> Being part of the standard, setting the LTTPR in a specific operation mode
> can be easily moved in the generic framework. So do that by adding a new
> helper.
>
> Then, the msm DP driver is lacking any kind of support for LTTPR handling,
> so add it by reading the LTTPR caps for figuring out the number of LTTPRs
> found on plug detect and then do exactly what the i915 and nouveau drivers
> do with respect to toggling through operating modes, just like the
> up-mentioned section from DP spec describes.
>
> At some point, link training per sub-segment will probably be needed, but
> for now, toggling the operating modes seems to be enough at least for the
> X Elite-based platforms that this patchset has been tested on.

As it seems that everybody is more or less happy with the patches,
should we pick the series into drm-misc-next now? Then i915 and msm
drivers can submerge a fresh-after-rc1 (or fresh-with-rc1?) trees into
the trees, reducing a risk of the conflicts during the next development
cycle?

>
> Signed-off-by: Abel Vesa <abel.vesa@xxxxxxxxxx>
> ---
> Changes in v5:
> - Added kernel-doc () suffix and semicolon after "Return" for
> drm_dp_lttpr_set_transparent_mode, and dropped the extra blank
> line from kernel-doc of drm_dp_lttpr_init, like Bjorn suggested
> - Picked up Abhinav's R-b tag.
> - Moved the lttpr_caps on stack, as suggested by Bjorn and Abhinav in
> the msm implementation.
> - Moved the msm_dp_display_lttpr_init call after msm_dp_panel_read_sink_caps,
> as Abhinav suggested.
> - Link to v4: https://lore.kernel.org/r/20250108-drm-dp-msm-add-lttpr-transparent-mode-set-v4-0-918949bc2e3a@xxxxxxxxxx
>
> Changes in v4:
> - Picked up Dmitry's and Johan's R-b tags for the drm generic and drm
> msm patches.
> - Moved the comment about the roll-back to transparent mode inside the
> if statement and fixed the typos, like Johan suggested.
> - Added more details in the commit message for the i915 changes. Details
> about the update that the lttpr_common_caps need w.r.t. rollback to
> transparent mode in case of failure.
> - Link to v3: https://lore.kernel.org/r/20250103-drm-dp-msm-add-lttpr-transparent-mode-set-v3-0-5c367f4b0763@xxxxxxxxxx
>
> Changes in v3:
> - Picked-up T-b tag from Johan for the drm/dp transparent mode set helper
> patch
> - Re-worked the return value of the drm/dp transparet mode set helper
> - Added some more details about what the values of the lttpr_count arg
> is expected to be for the drm_dp_lttpr_init(), like Johan suggested.
> - Re-worked the non-transparent mode disable->enable so that the rollback
> doesn't happen unless enable failed.
> - Picked-up Lyude's R-b tag for the nouveau patch.
> - Dropped extra parantesis at the end of the drm_dp_lttpr_init() call in
> i915 patch.
> - Picked-up Johan's T-b tag for the drm/msm/dp patch.
> - Added some error handling and an error message in the
> msm_dp_display_lttpr_init(), while dropping the unnecessary lttpr_count
> local variable.
> - Link to v2: https://lore.kernel.org/r/20241211-drm-dp-msm-add-lttpr-transparent-mode-set-v2-0-d5906ed38b28@xxxxxxxxxx
>
> Changes in v2:
> - Added new wrapper over the set_transparent new helper in order to
> move the non-transparent disable and the its enable->disable sequence
> mentioned in the DP standard section 3.6.6.1 entirely in the generic
> implemetation.
> - Switch all 3 drivers to use the new wrapper.
> - Fixed the return value of the helper to return 0 on success and
> negative value on error.
> - Added explanation about the transparent/non-transparent modes into the
> msm dp commit message.
> - Dropped the condition for non-eDP in msm DP driver since it is allowed
> to try to get the number of LTTPRs even on eDP and it will be always
> 0 anyway.
> - Dropped the RFC prefix
> - Link to v1: https://lore.kernel.org/r/20241031-drm-dp-msm-add-lttpr-transparent-mode-set-v1-0-cafbb9855f40@xxxxxxxxxx
>
> ---
> Abel Vesa (4):
> drm/dp: Add helper to set LTTPRs in transparent mode
> drm/nouveau/dp: Use the generic helper to control LTTPR transparent mode
> drm/i915/dp: Use the generic helper to control LTTPR transparent mode
> drm/msm/dp: Add support for LTTPR handling
>
> drivers/gpu/drm/display/drm_dp_helper.c | 61 ++++++++++++++++++++++
> .../gpu/drm/i915/display/intel_dp_link_training.c | 24 ++-------
> drivers/gpu/drm/msm/dp/dp_display.c | 15 ++++++
> drivers/gpu/drm/nouveau/nouveau_dp.c | 17 +-----
> include/drm/display/drm_dp_helper.h | 2 +
> 5 files changed, 85 insertions(+), 34 deletions(-)
> ---
> base-commit: 00f3246adeeacbda0bd0b303604e46eb59c32e6e
> change-id: 20241031-drm-dp-msm-add-lttpr-transparent-mode-set-136cd5bfde07
>
> Best regards,
> --
> Abel Vesa <abel.vesa@xxxxxxxxxx>
>

--
With best wishes
Dmitry