Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [High] drm/msm/dp: missing display initialization on coalesced plug and 
IRQ_HPD events
--

commit de969f3016008fcb55e0b380cb8e0c733c719543
Author: Dmitry Baryshkov <[email protected]>

drm/msm: dp: handle the IRQ_HPD events reported by USB-C

This commit allows the MSM DisplayPort driver to handle IRQ_HPD events
delivered over OOB events (like USB-C AltMode).

> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
> b/drivers/gpu/drm/msm/dp/dp_display.c
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -1559,11 +1559,12 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge 
> *bridge,
[ ... ]
>       if (status == connector_status_connected) {
> -             if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
> +             if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
> +                 event == DRM_CONNECTOR_DP_IRQ_HPD) {
> +                     msm_dp_irq_hpd_handle(dp);
> +             } else if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
>                       msm_dp_hpd_unplug_handle(dp);
>                       msm_dp_hpd_plug_handle(dp);
> -             } else if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT) {
> -                     msm_dp_irq_hpd_handle(dp);
>               } else {
>                       msm_dp_hpd_plug_handle(dp);
>               }

[Severity: High]
Does this code handle coalesced connection and IRQ_HPD events correctly?

If the USB Type-C AltMode driver coalesces an initial connection and a pending
IRQ_HPD event into a single notification, msm_dp_bridge_hpd_notify() receives
both status == connector_status_connected and event ==
DRM_CONNECTOR_DP_IRQ_HPD.

The mutual exclusion block in drivers/gpu/drm/msm/dp/dp_display.c prioritizes
event == DRM_CONNECTOR_DP_IRQ_HPD, branching to msm_dp_irq_hpd_handle() and
entirely skipping msm_dp_hpd_plug_handle().

Because msm_dp_hpd_plug_handle() is skipped, dp->plugged remains false,
the DP PHY is not initialized, and AUX transfers remain disabled. The
subsequent msm_dp_irq_hpd_handle() then attempts an AUX read which immediately
fails with -ENXIO, abandoning the initialization and leaving the display
blank.

Is it possible to ensure msm_dp_hpd_plug_handle() is still called when a new
connection occurs alongside an IRQ_HPD event?

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=6

Reply via email to