On Tue, Sep 08, 2026 at 02:47:08PM +0530, Vivek Kumar wrote:
> msm_dp_display_prepare_link(), msm_dp_display_disable(), and
> msm_dp_hpd_unplug_handle() all treat dp->link->sink_count == 0 as
> "nothing is connected", and in msm_dp_display_prepare_link() this
> causes probe/enable to fail outright with -ENOTCONN.
>
> This is correct for external DisplayPort, where a compliant sink is
> required to report a valid DP_SINK_COUNT over the AUX channel. It is
> not correct for eDP: some eDP sinks -- particularly fixed-format
> eDP-to-HDMI bridge chips with no downstream AUX-capable panel
> behind them -- never populate DP_SINK_COUNT with a nonzero value,
> even while otherwise participating normally in DPCD capability
> exchange and link training.
>
> drm_dp_read_sink_count_cap() already accounts for this by excluding
> eDP connectors from the sink-count requirement for other DPCD-derived
> checks (msm_dp_bridge_detect() takes care). Apply the same exemption
> to the raw sink_count reads in this file via a small shared
> helper, so eDP outputs with a non-AUX-capable downstream sink are
> not treated as permanently disconnected.
I think the better way would be to fix the
msm_dp_link_parse_sink_status_field() to also use
drm_dp_read_sink_count_cap() and to set link->sink_count to 1 if the cap
is not available.
As a side note, we currently read sink count both in
dp_link and in dp_display. Could you please leave just one place? If
not, it's fine, just fix the link code reading the sink count.
> Tested on a Qualcomm QCS6490-based board driving a fixed-format
> eDP-to-HDMI bridge IC (chrontel,ch7218a) with no negotiable
> DPCD-capable panel behind it; without this fix,
> msm_dp_display_prepare_link() unconditionally returns -ENOTCONN
> and the display never comes up.
>
> Fixes: ca16db3d18cf ("drm/msm/dp: break up dp_display_enable into two parts")
I don't think it's the commit which introduced the issue. We had code
checking for sink_count being not zero even beforehand.
>
> Signed-off-by: Vivek Kumar <[email protected]>
No empty lines betwee tags, please.
> ---
> drivers/gpu/drm/msm/dp/dp_display.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
--
With best wishes
Dmitry