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

Reply via email to