From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
To: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Cc: Rob Clark <robin.clark@oss.qualcomm.com>,
Abhinav Kumar <abhinav.kumar@linux.dev>,
Dmitry Baryshkov <lumag@kernel.org>, Sean Paul <sean@poorly.run>,
Marijn Suijten <marijn.suijten@somainline.org>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org,
Yongxing Mou <quic_yongmou@quicinc.com>
Subject: Re: [PATCH 17/19] drm/msm/dp: Use drm_bridge_hpd_notify()
Date: Mon, 14 Jul 2025 15:25:33 +0300 [thread overview]
Message-ID: <yd3myqnh3lbaafckdevn5mv2bvrobpisodocmwj5ngnntd3c7g@pixnwcdjbecl> (raw)
In-Reply-To: <20250711-hpd-refactor-v1-17-33cbac823f34@oss.qualcomm.com>
On Fri, Jul 11, 2025 at 05:58:22PM -0700, Jessica Zhang wrote:
> Call drm_bridge_hpd_notify() instead of drm_helper_hpd_irq_event(). This
> way, we can directly call hpd_notify() via the bridge connector.
>
> Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
> ---
> drivers/gpu/drm/msm/dp/dp_display.c | 17 +++++------------
> drivers/gpu/drm/msm/dp/dp_display.h | 1 +
> drivers/gpu/drm/msm/dp/dp_drm.c | 2 ++
> 3 files changed, 8 insertions(+), 12 deletions(-)
This patch has some issues. Beforehand we were just stating that there
was a HPD event, now we are explicitly stating the status. This might
confuse DRM's status handling if the status here and status at the
.detect() differ.
In my opinion, this should become patch #4 in the series (connected,
link_training, EV_HPD_PLUG_INT / EV_HPD_UNPLUG_INT, then this one).
And the correct way would be to call drm_bridge_hpd_notify(bridge,
msm_dp_display_detect()) from the IRQ thread. This way we should also be
able to drop EV_USER_NOTIFICATION from all over the place.
>
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index 3aaa603da4f9..87f2750a99ca 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -324,17 +324,6 @@ static const struct component_ops msm_dp_display_comp_ops = {
> .unbind = msm_dp_display_unbind,
> };
>
> -static void msm_dp_display_send_hpd_event(struct msm_dp *msm_dp_display)
> -{
> - struct msm_dp_display_private *dp;
> - struct drm_connector *connector;
> -
> - dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display);
> -
> - connector = dp->msm_dp_display.connector;
> - drm_helper_hpd_irq_event(connector->dev);
> -}
> -
> static int msm_dp_display_send_hpd_notification(struct msm_dp_display_private *dp,
> bool hpd)
> {
> @@ -358,7 +347,11 @@ static int msm_dp_display_send_hpd_notification(struct msm_dp_display_private *d
>
> drm_dbg_dp(dp->drm_dev, "type=%d hpd=%d\n",
> dp->msm_dp_display.connector_type, hpd);
> - msm_dp_display_send_hpd_event(&dp->msm_dp_display);
> +
> + if (hpd)
> + drm_bridge_hpd_notify(dp->msm_dp_display.bridge, connector_status_connected);
> + else
> + drm_bridge_hpd_notify(dp->msm_dp_display.bridge, connector_status_disconnected);
drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
hpd ?
connector_status_connected :
connector_status_disconnected);
>
> return 0;
> }
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h
> index 68bd8be19463..6e12694d5a64 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.h
> +++ b/drivers/gpu/drm/msm/dp/dp_display.h
> @@ -16,6 +16,7 @@ struct msm_dp {
> struct platform_device *pdev;
> struct drm_connector *connector;
> struct drm_bridge *next_bridge;
> + struct drm_bridge *bridge;
> bool connected;
> bool link_ready;
> bool audio_enabled;
> diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c
> index f222d7ccaa88..b12a43499c54 100644
> --- a/drivers/gpu/drm/msm/dp/dp_drm.c
> +++ b/drivers/gpu/drm/msm/dp/dp_drm.c
> @@ -358,6 +358,8 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, struct drm_device *dev,
> }
> }
>
> + msm_dp_display->bridge = bridge;
> +
> return 0;
> }
>
>
> --
> 2.50.1
>
--
With best wishes
Dmitry
next prev parent reply other threads:[~2025-07-14 12:25 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-12 0:58 [PATCH 00/19] drm/msm/dp: Drop the HPD state machine Jessica Zhang
2025-07-12 0:58 ` [PATCH 01/19] drm/msm/dp: Track when DP is physically plugged in Jessica Zhang
2025-07-14 11:42 ` Dmitry Baryshkov
2025-07-12 0:58 ` [PATCH 02/19] drm/msm/dp: remove redundant checks related to ST_DISPLAY_OFF in plug/irq_ipd handlers Jessica Zhang
2025-07-12 0:58 ` [PATCH 03/19] drm/msm/dp: Return early from atomic_enable() if cable is not connected Jessica Zhang
2025-07-14 11:47 ` Dmitry Baryshkov
2025-07-12 0:58 ` [PATCH 04/19] drm/msm/dp: replace ST_DISPLAY_OFF with power_on in msm_dp_hpd_unplug_handle() Jessica Zhang
2025-07-14 12:27 ` Dmitry Baryshkov
2025-07-14 20:38 ` Jessica Zhang
2025-07-14 22:28 ` Dmitry Baryshkov
2025-07-14 20:47 ` Jessica Zhang
2025-07-12 0:58 ` [PATCH 05/19] drm/msm/dp: Replace ST_MAINLINK_READY with link_ready in plug/hpd_irq handlers Jessica Zhang
2025-07-12 0:58 ` [PATCH 06/19] drm/msm/dp: Replace ST_DISCONNECTED with checks for connected Jessica Zhang
2025-07-12 0:58 ` [PATCH 07/19] drm/msm/dp: Rework unplug handling Jessica Zhang
2025-07-12 0:58 ` [PATCH 08/19] drm/msm/dp: Don't delay plug-in handling when ST_DISCONNECT_PENDING Jessica Zhang
2025-07-12 0:58 ` [PATCH 09/19] drm/msm/dp: Replace ST_DISPLAY_OFF with power_on in atomic_enable() Jessica Zhang
2025-07-12 0:58 ` [PATCH 10/19] drm/msm/dp: Check if DP is disconnected in atomic post_disable() Jessica Zhang
2025-07-12 0:58 ` [PATCH 11/19] drm/msm/dp: remove ST_DISPLAY_OFF as a hpd_state Jessica Zhang
2025-07-12 0:58 ` [PATCH 12/19] drm/msm/dp: Drop ST_MAINLINK_READY hpd_state Jessica Zhang
2025-07-12 0:58 ` [PATCH 13/19] drm/msm/dp: Drop ST_DISCONNECTED Jessica Zhang
2025-07-12 0:58 ` [PATCH 14/19] drm/msm/dp: Drop ST_CONNECTED Jessica Zhang
2025-07-12 0:58 ` [PATCH 15/19] drm/msm/dp: Drop ST_DISCONNECT_PENDING Jessica Zhang
2025-07-12 0:58 ` [PATCH 16/19] drm/msm/dp: Drop hpd_state from msm_dp Jessica Zhang
2025-07-12 0:58 ` [PATCH 17/19] drm/msm/dp: Use drm_bridge_hpd_notify() Jessica Zhang
2025-07-14 12:25 ` Dmitry Baryshkov [this message]
2025-07-12 0:58 ` [PATCH 18/19] drm/msm/dp: Move link training to atomic_enable() Jessica Zhang
2025-07-14 11:54 ` Dmitry Baryshkov
2025-08-01 23:58 ` Jessica Zhang
2025-08-02 10:18 ` Dmitry Baryshkov
2025-07-12 0:58 ` [PATCH 19/19] drm/msm/dp: Log connected and link_ready for event handling Jessica Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=yd3myqnh3lbaafckdevn5mv2bvrobpisodocmwj5ngnntd3c7g@pixnwcdjbecl \
--to=dmitry.baryshkov@oss.qualcomm.com \
--cc=abhinav.kumar@linux.dev \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=jessica.zhang@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=marijn.suijten@somainline.org \
--cc=quic_yongmou@quicinc.com \
--cc=robin.clark@oss.qualcomm.com \
--cc=sean@poorly.run \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).