2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/gpu/drm/msm
Aleksandrs Vinarskis 5a0436e92a drm/msm/dp: Introduce link training per-segment for LTTPRs
DisplayPort requires per-segment link training when LTTPR are switched
to non-transparent mode, starting with LTTPR closest to the source.
Only when each segment is trained individually, source can link train
to sink.

Implement per-segment link traning when LTTPR(s) are detected, to
support external docking stations. On higher level, changes are:

* Pass phy being trained down to all required helpers
* Run CR, EQ link training per phy
* Set voltage swing, pre-emphasis levels per phy

Since at least some LTTPRs (eg. Parade PS8830) do not correctly report
voltage-swing, pre-emphasis level 3 support, always assume level 3 is
supported. This is permitted under DP 2.1(a) section 3.6.7.2 stating
that LTTPR shall set its transmitter levels as close as possible to
those requested by the DPTX, if the DPTX sets the voltage swing or
pre-emphasis to a level that the LTTPR does not support. It shall be
noted that LTTPR’s level choosing is implementation-specific.

This ensures successful link training both when connected directly to
the monitor (single LTTPR onboard most X1E laptops) and via the docking
station (at least two LTTPRs).

Fixes: 72d0af4acc ("drm/msm/dp: Add support for LTTPR handling")
Tested-by: Jessica Zhang <quic_jesszhan@quicinc.com> # SA8775P
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Rob Clark <robdclark@gmail.com>
Tested-by: Stefan Schmidt <stefan.schmidt@linaro.org>
Signed-off-by: Aleksandrs Vinarskis <alex.vinarskis@gmail.com>
Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/652305/
Link: https://lore.kernel.org/r/20250507230113.14270-5-alex.vinarskis@gmail.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
2025-05-12 19:18:49 +03:00
..
adreno drm/msm/adreno: Remove MODULE_FIRMWARE()'s 2025-05-10 09:06:36 -07:00
disp drm/msm/dpu: remove DPU_CTL_SPLIT_DISPLAY from SAR2130P CTL blocks 2025-05-12 19:18:49 +03:00
dp drm/msm/dp: Introduce link training per-segment for LTTPRs 2025-05-12 19:18:49 +03:00
dsi drm/msm/dsi: add DSI support for SA8775P 2025-05-02 03:54:03 +03:00
hdmi drm/msm/hdmi: wire in hpd_enable/hpd_disable bridge ops 2025-05-12 19:18:48 +03:00
registers drm/msm/a6xx+: Don't let IB_SIZE overflow 2025-04-18 15:15:24 -07:00
.gitignore
Kconfig drm/msm/dp: reuse generic HDMI codec implementation 2025-05-02 03:54:03 +03:00
Makefile drm/msm/mdp4: switch LVDS to use drm_bridge/_connector 2025-05-02 01:14:11 +03:00
msm_atomic_trace.h
msm_atomic_tracepoints.c
msm_atomic.c drm/msm/dpu: don't set crtc_state->mode_changed from atomic_check() 2025-03-05 04:33:33 +02:00
msm_debugfs.c
msm_debugfs.h
msm_drv.c drm/msm: Test for imported buffers with drm_gem_is_imported() 2025-04-14 10:53:11 +02:00
msm_drv.h drm/msm: Avoid rounding up to one jiffy 2025-02-15 09:24:02 -08:00
msm_dsc_helper.h drm/msm/dsi: Use existing per-interface slice count in DSC timing 2025-02-26 12:15:48 +02:00
msm_fb.c
msm_fbdev.c
msm_fence.c drm/msm: Switch to use hrtimer_setup() 2025-02-18 11:19:06 +01:00
msm_fence.h
msm_gem_prime.c drm/msm: Test for imported buffers with drm_gem_is_imported() 2025-04-14 10:53:11 +02:00
msm_gem_shrinker.c
msm_gem_submit.c drm/msm/gem: Fix error code msm_parse_deps() 2025-02-27 12:58:38 -08:00
msm_gem_vma.c
msm_gem.c drm/msm: Test for imported buffers with drm_gem_is_imported() 2025-04-14 10:53:11 +02:00
msm_gem.h drm/msm: Test for imported buffers with drm_gem_is_imported() 2025-04-14 10:53:11 +02:00
msm_gpu_devfreq.c drm/msm/gpu: Fix crash when throttling GPU immediately during boot 2025-05-04 09:20:28 -07:00
msm_gpu_trace.h
msm_gpu_tracepoints.c
msm_gpu.c drm/msm: Extend gpu devcore dumps with pgtbl info 2025-02-27 11:58:30 -08:00
msm_gpu.h drm/msm: Extend gpu devcore dumps with pgtbl info 2025-02-27 11:58:30 -08:00
msm_io_utils.c drm/msm: Switch to use hrtimer_setup() 2025-02-18 11:19:06 +01:00
msm_iommu.c drm/msm: Extend gpu devcore dumps with pgtbl info 2025-02-27 11:58:30 -08:00
msm_kms.c drm/msm/dpu: fix error pointer dereference in msm_kms_init_aspace() 2025-03-05 04:34:13 +02:00
msm_kms.h drm/msm/dpu: don't set crtc_state->mode_changed from atomic_check() 2025-03-05 04:33:33 +02:00
msm_mdss.c drm/msm/mdss: add SAR2130P device configuration 2025-05-02 03:54:03 +03:00
msm_mdss.h drm/msm/mdss: use boolean values for macrotile_mode 2024-12-15 14:24:33 +02:00
msm_mmu.h drm/msm: Extend gpu devcore dumps with pgtbl info 2025-02-27 11:58:30 -08:00
msm_perf.c
msm_rd.c
msm_ringbuffer.c drm/msm: Convert comma to semicolon 2025-05-01 23:39:53 +03:00
msm_ringbuffer.h
msm_submitqueue.c drm/msm: UAPI error reporting 2025-01-03 07:20:28 -08:00
NOTES