Hi! a couple people poked me to take a look at this, hopefully I can provide some helpful insight here.
So: I've tried a _lot_ of various redesigns with MST and some portions of the DP helpers. I actually was going to try to write up some common helpers for handling link training across drivers, but when I started trying to implement them (ironically, I think it was in i915!) I realized I wasn't getting rid of nearly as much code as I thought I was going to.
Now-I'd love to tell you if this series is good or bad, but I'm not entirely sure myself either. Sometimes I wonder myself if I'm overcomplicating things with MST. The only way I've really found of figuring out whether or not helpers like this are overkill is to just implement them everywhere. With my atomic VCPI helpers for MST, I tried implementing them everywhere I could (except for amdgpu, but I _did_ try there originally!) to see how awkward they were to use. I think if there's questions to how useful this series is, it'd probably be good to try implementing these helpers in drivers like i915 to see how things play out.
It should also be noted that I did actually try to come up with common link rate helpers like this one, but I ended up realizing I was adding far more code then I was getting rid of after I tried implementing them in i915 (ironic, huh?). Things got even more complicated when I looked at how nouveau/nvidia hardware does link training.
On Fri, 2019-09-20 at 18:00 +0200, Thierry Reding wrote:
On Mon, Sep 02, 2019 at 01:31:00PM +0200, Thierry Reding wrote:
From: Thierry Reding treding@nvidia.com
Hi,
this series of patches improves the DP helpers a bit and cleans up some inconsistencies along the way.
v2 incorporates all review comments add collects Reviewed-bys from v1.
Thierry
Thierry Reding (21): drm/dp: Sort includes alphabetically drm/dp: Add missing kerneldoc for struct drm_dp_link drm/dp: Add drm_dp_link_reset() implementation drm/dp: Track link capabilities alongside settings drm/dp: Turn link capabilities into booleans drm/dp: Probe link using existing parsing helpers drm/dp: Read fast training capability from link drm/dp: Read TPS3 capability from sink drm/dp: Read channel coding capability from sink drm/dp: Read alternate scrambler reset capability from sink drm/dp: Read eDP version from DPCD drm/dp: Read AUX read interval from DPCD drm/dp: Do not busy-loop during link training drm/dp: Use drm_dp_aux_rd_interval() drm/dp: Add helper to get post-cursor adjustments drm/dp: Set channel coding on link configuration drm/dp: Enable alternate scrambler reset when supported drm/dp: Add drm_dp_link_choose() helper drm/dp: Add support for eDP link rates drm/dp: Remove a gratuituous blank line drm/bridge: tc358767: Use DP nomenclature
Anyone interested in reviewing these?
Thierry
drivers/gpu/drm/bridge/tc358767.c | 22 +- drivers/gpu/drm/drm_dp_helper.c | 327 ++++++++++++++++++++++--- drivers/gpu/drm/msm/edp/edp_ctrl.c | 12 +- drivers/gpu/drm/rockchip/cdn-dp-core.c | 8 +- drivers/gpu/drm/rockchip/cdn-dp-reg.c | 13 +- drivers/gpu/drm/tegra/dpaux.c | 8 +- drivers/gpu/drm/tegra/sor.c | 32 +-- include/drm/drm_dp_helper.h | 124 +++++++++- 8 files changed, 459 insertions(+), 87 deletions(-)
-- 2.22.0
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel