From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 314ADC982DA for ; Mon, 21 Sep 2026 01:53:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+Aqc8O1mLxuesiI8DQLuJRjwXLQ2Pqsu6RsDUZkpeU8=; b=cvr8reBsItBlvq /fLtHQ4WK+2KTbjGfehK/l5tqVZjqECmcVQO2z8sBQ1+q1wps/u/gYrlvVWDb9cP4pVrJHc6cj0v2 rEeEcFqtB9CnBlCpuYwBDR2//heGF0zqMEVCd/lF1Zh7DF0p5SXPdrf7XlqUI6bMPHI1KZukL5mnV /sIyPoR5lbd0kCO6J7Kn3Q/9vJH/c6oqmUZ050uk4NjoGnMs7QNcMt5xzgKPg8cN9NK3oEp5j8jgc qIwCx5f05B9iSkcSnWG2fUnblOyI4FqvKALIxccFcMUvINTJ61NVyEeWKrhwUQCVS3k1BRKTJsryh X+EcL9GRF6h4I54RwZTg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x8TDd-00000000hWj-2lOq; Mon, 21 Sep 2026 01:53:22 +0000 Received: from mail-m8344.xmail.ntesmail.com ([156.224.83.44]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x8TDa-00000000hWF-21hv; Mon, 21 Sep 2026 01:53:20 +0000 Received: from [172.16.12.90] (unknown [61.154.14.86]) by smtp.qiye.163.com (Hmail) with ESMTP id 4e7dcd1ab; Mon, 21 Sep 2026 09:53:12 +0800 (GMT+08:00) Message-ID: Date: Mon, 21 Sep 2026 09:53:12 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 2/8] drm/connector: pass down IRQ_HPD to the drivers To: Dmitry Baryshkov Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Heikki Krogerus , Greg Kroah-Hartman , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , Tomi Valkeinen , Bjorn Andersson , Konrad Dybcio , Pengyu Luo , Nikita Travkin , Yongxing Mou , Luca Ceresoli , Francesco Dolcini , Abel Vesa , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org References: <20260920-hpd-irq-events-v5-0-ff1de0090c72@oss.qualcomm.com> <20260920-hpd-irq-events-v5-2-ff1de0090c72@oss.qualcomm.com> Content-Language: en-US From: Chaoyi Chen In-Reply-To: <20260920-hpd-irq-events-v5-2-ff1de0090c72@oss.qualcomm.com> X-HM-Tid: 0aa0c1aad18703a7kunm0bf2730011828ad X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWRgWCB1ZQUpXWS1ZQUlXWQ8JGhUIEh9ZQVkZS0xNVh4YQx9JSEhLGB0aGFYVFA kWGhdVEwETFhoSFyQUDg9ZV1kYEgtZQVlNSlVKTk9VSk9VQ01ZV1kWGg8SFR0UWUFZT0tIVUpLSE pKQkxVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=F1wae6Xc2Ll98E4oH3aX72tWpdTNBpUF/4Id0y1xtGULdLtcXmREe+rQNGcB3XdtZo+IKwJ/iDsWwlE1VZ5+iFWx+r8nsHoh8utA9dquAo25H8sCGGSNxUgNNRvgYaEMnEVgr09gpsnUdeon8tvQ8GlQryjz6eiIHmj7zAX49V0=; c=relaxed/relaxed; s=default; d=rock-chips.com; v=1; bh=JkQGzk7JtUmJhDI7/lc646wm8+od1xD4GOgStSiB+TI=; h=date:mime-version:subject:message-id:from; X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260920_185318_860795_D8FEB8B1 X-CRM114-Status: GOOD ( 20.36 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org Hi Dmitry, On 9/20/2026 11:01 PM, Dmitry Baryshkov wrote: > The DisplayPort standard defines a special kind of HPD events called > IRQ_HPD. These events are used to notify DP Source about the events on > the Sink side. > > Extend drm_connector_funcs::oob_hotplug_event() to pass the > notifications about the IRQ_HPD events down to the individual drivers, > letting them handle those as required. > > Reviewed-by: Pengyu Luo > Acked-by: Heikki Krogerus > Signed-off-by: Dmitry Baryshkov > --- > drivers/gpu/drm/display/drm_bridge_connector.c | 17 ++++++++++------- > drivers/gpu/drm/drm_connector.c | 2 +- > drivers/gpu/drm/i915/display/intel_dp.c | 3 ++- > include/drm/drm_connector.h | 3 ++- > 4 files changed, 15 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c > index 00feb73e63d7..a51567d19550 100644 > --- a/drivers/gpu/drm/display/drm_bridge_connector.c > +++ b/drivers/gpu/drm/display/drm_bridge_connector.c > @@ -141,7 +141,8 @@ struct drm_bridge_connector { > */ > > static void drm_bridge_connector_hpd_notify(struct drm_connector *connector, > - enum drm_connector_status status) > + enum drm_connector_status status, > + enum drm_connector_dp_event event) > { > struct drm_bridge_connector *bridge_connector = > to_drm_bridge_connector(connector); > @@ -154,7 +155,8 @@ static void drm_bridge_connector_hpd_notify(struct drm_connector *connector, > } > It looks like you only changed the function signature. Don't the "bridge->funcs->hpd_notify" inside this function need to pass the event? drm_for_each_bridge_in_chain_scoped(bridge_connector->encoder, bridge) { if (bridge->funcs->hpd_notify) bridge->funcs->hpd_notify(bridge, connector, status); } > static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bridge_connector, > - enum drm_connector_status status) > + enum drm_connector_status status, > + enum drm_connector_dp_event event) > { > struct drm_connector *connector = &drm_bridge_connector->base; > struct drm_device *dev = connector->dev; > @@ -163,7 +165,7 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri > connector->status = status; > mutex_unlock(&dev->mode_config.mutex); > > - drm_bridge_connector_hpd_notify(connector, status); > + drm_bridge_connector_hpd_notify(connector, status, event); > > drm_kms_helper_connector_hotplug_event(connector); > } > @@ -171,16 +173,17 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri > static void drm_bridge_connector_hpd_cb(void *cb_data, > enum drm_connector_status status) > { > - drm_bridge_connector_handle_hpd(cb_data, status); > + drm_bridge_connector_handle_hpd(cb_data, status, DRM_CONNECTOR_NO_EXTRA_STATUS); > } > > static void drm_bridge_connector_oob_hotplug_event(struct drm_connector *connector, > - enum drm_connector_status status) > + enum drm_connector_status status, > + enum drm_connector_dp_event event) > { > struct drm_bridge_connector *bridge_connector = > to_drm_bridge_connector(connector); > > - drm_bridge_connector_handle_hpd(bridge_connector, status); > + drm_bridge_connector_handle_hpd(bridge_connector, status, event); > } > > static void drm_bridge_connector_enable_hpd(struct drm_connector *connector) > @@ -223,7 +226,7 @@ drm_bridge_connector_detect(struct drm_connector *connector, bool force) > if (hdmi) > drm_atomic_helper_connector_hdmi_hotplug(connector, status); > > - drm_bridge_connector_hpd_notify(connector, status); > + drm_bridge_connector_hpd_notify(connector, status, DRM_CONNECTOR_NO_EXTRA_STATUS); > } else { > switch (connector->connector_type) { > case DRM_MODE_CONNECTOR_DPI: > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > index 5d4945ea1e95..f0facccb7859 100644 > --- a/drivers/gpu/drm/drm_connector.c > +++ b/drivers/gpu/drm/drm_connector.c > @@ -3698,7 +3698,7 @@ void drm_connector_dp_oob_status(struct fwnode_handle *connector_fwnode, > return; > > if (connector->funcs->oob_hotplug_event) > - connector->funcs->oob_hotplug_event(connector, status); > + connector->funcs->oob_hotplug_event(connector, status, event); > > drm_connector_put(connector); > } > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > index 50ed615cf0f6..a2acff240b45 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -6800,7 +6800,8 @@ static int intel_dp_connector_atomic_check(struct drm_connector *_connector, > } > > static void intel_dp_oob_hotplug_event(struct drm_connector *_connector, > - enum drm_connector_status hpd_state) > + enum drm_connector_status hpd_state, > + enum drm_connector_dp_event event) > { > struct intel_connector *connector = to_intel_connector(_connector); > struct intel_display *display = to_intel_display(connector); > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > index 906aaefca7e1..c3374cd2598e 100644 > --- a/include/drm/drm_connector.h > +++ b/include/drm/drm_connector.h > @@ -1884,7 +1884,8 @@ struct drm_connector_funcs { > * has been received from a source outside the display driver / device. > */ > void (*oob_hotplug_event)(struct drm_connector *connector, > - enum drm_connector_status status); > + enum drm_connector_status status, > + enum drm_connector_dp_event event); > > /** > * @debugfs_init: > -- Best, Chaoyi _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic