From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=148.251.105.195 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794632461; b=PmyQuRiEH8BOYRuWJMRvxLi5fP9hNYcnslOzQPKa2IwxgzEmfbZssYX5xCuiH8SwtoPZ qFez+XDe/Bpv6x0cKiq3luAKe1QmMkw/9BzBjjqiSGw+rKb6VJccO/BYwjerpK3tLcqVb RNMBrGhZLXM5Vfk0w8e+jfqXCk6iLbUKIavLd2S6VzZgmuRw3zaz9b5ICV5LqVkTTGg1S 6d+l+M7Unutz+G/ai6jrsuOHwySVkjj3QSm+t56zlXA9+RzPULLND0KfpKmNF+zXSoGpz 9cYhKIAgwq2Ty+b5pGFgpFL9Ea0Qv8nH5+PKNyrkwnRsO0wb9kQ+Oq/DJ2yeNOXeYvg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794632461; h=DMARC-Filter:DKIM-Signature:Received:Received:From:Date:Subject: MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id: References:In-Reply-To:To:Cc:X-Mailer:X-Developer-Signature: X-Developer-Key; bh=1+B0+RKuMYS6rIoai5bdE6/6m6jmtuguVxzmpGAZgV0=; b=j3k0O7QvTxIyXH7e0pF9d3I2V0Bzavuh0z4SYrVY3TrGWqJa1VvC6fLf06V7o+mpMTY4 JM7hj6Izv1urFoZVAEIwO41sjhyaj3awX/fxo8Le3eevhLz/y/82O63SeCARcCDnsZcCh DcmTfw/U/Oio0H1hxrNbacntrP0BOxSrkiqhgOSn1zt/RV7OGGva8dFk9BPVQVtXPMwPE 7jHoK43EmpEx6L/iPppOQtmA9QmcWiI3fQBKnxcKpN7MLUQq8swmXKJfvNQjdsGK7nD1y ZytexR06Zo+gcahAnbDCg7jNLKYcgaEgzgD9vPXBg/UnKgr+sQbUDfDN67Hmj7nBz9w== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass header.d=collabora.com header.i=@collabora.com header.a=rsa-sha256 header.s=mail header.b=oJtJqDHy; arc=none smtp.remote-ip=148.251.105.195 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8BEA606A8B2; Sat, 14 Nov 2026 05:01:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org D8BEA606A8B2 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.a=rsa-sha256 header.s=mail header.b=oJtJqDHy DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1794632457; bh=QTpU/U5Y23UxjssfJ4URaTuUHxqKTQrqcLne01mYDaE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oJtJqDHyUOXtw21llGJ2kT8zf4oNvlLkV4c62L6zDfooU+NGGhLaJkCjXfWzTOY5p 3hbnBrY9s70eekOl9HFOVg2OmUYLWrlKjzaN5fsjPZ2KRlfwtPfvu61rIUVdHRNcgx llmXyCzkrP2mGdpMiDvnu/36XU2mV0a+FijBIM26qeSAsKEvOFg5PuCFs34dFJGE4+ bU3Dud6669ipqc13s7X420RT8kaUwgWy8Fnu8wn+KEmkC9SjglUS5fqYXWwXZ8nxV+ OXUXz09Z62FEY2bKAIkaFFRIkWC1gQml+Tx7nCFTGHjWNkhdL+QmATrZmESOJNLd+d nBXFhIXL0Zu3w== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id C570617E3BDF; Sat, 14 Nov 2026 06:00:56 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 1BEE948004C; Sat, 14 Nov 2026 06:00:56 +0100 (CET) From: Sebastian Reichel Date: Sat, 14 Nov 2026 06:00:44 +0100 Subject: [PATCH v12 11/23] drm/bridge: Add out-of-band HPD notify handler X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261114-synopsys-dw-dp-improvements-v12-11-d42d3dc5bdd4@collabora.com> References: <20261114-synopsys-dw-dp-improvements-v12-0-d42d3dc5bdd4@collabora.com> In-Reply-To: <20261114-synopsys-dw-dp-improvements-v12-0-d42d3dc5bdd4@collabora.com> To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Rob Herring , Krzysztof Kozlowski , Conor Dooley , David Airlie , Simona Vetter , Dmitry Baryshkov , Luca Ceresoli , Philipp Zabel Cc: Cristian Ciocaltea , Damon Ding , Dmitry Baryshkov , Alexey Charkov , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, kernel@collabora.com, linux-arm-kernel@lists.infradead.org, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2442; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=QTpU/U5Y23UxjssfJ4URaTuUHxqKTQrqcLne01mYDaE=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGr36wfL8oaz7pLdf3d4AqmLaAyhk4juoR9VT UeTugeDxn5kcYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJq9+sHAAoJENju1/PI O/qaL18P/3wkGcBTDwgNntnjRaEXeX28fNdD/4jRS8rKqOEJpvSWg5wN3W38Iu5rmlcWhmb6Awp D6sugSTq8o974akKWRAfDdWELnyOnLL+km01KBofyDTIlG35hpKUcUaZqnAeFwJYT8lmhbexJcm 0JKxuFtXop5+bV5G/7rqctJaaFQNnb90lcToMMRZDWkKQfe1wHOw5RnpoHf0aonq/Eaxkp/5twy GTeN8UbUD1IypvrA8QkB+cfmrwAohVMSbX9cu9yaT/ES7VtbVBjXuHkdv02Ku6hhBI/puReVxSB HhQS7B7nkuqjMZUQn/hmKruJdunZchZqnCtFkABMpvJAXkc9Fn0mr3/RAn4iKaW0bhRjIBsON+Q ATvigdYVXmLZr0qiXCiq+Z6oqEOpb/Iu69bjeXurbBgAaAc8bCJw8PB+GAcU3r23JEp2npM9YpJ dnkVkMnOIiuaCSPFL1p9fVeQd9/oSKiDl8RAIPanGVL0QxbUsxHXPYyRD6OhgTSJ9LgviYgxu6r yQbZpyQ62TVoHUksjFEuE+R4LUTZVmHlnAjYaH7MGs/HPiH7DnUWUyitpi564r6l843kqsGB2Q2 AIzmtqjjmS9pZYPQVkxB5ZVrd7Vid9NVcIsumcbhO7EIM/yTg6MmflOhSoavaxtJWnuTiPrEhX4 8elFNQnMiy2C11+NTJo4j9w== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A For DP bridges, that can be used for DP AltMode, it might be necessary to enforce HPD status. There is an existing ->oob_hotplug_event() on the DRM connector, but it currently just calls into hpd_notify(). As DP bridge drivers usually also implement .detect and that also generates calls into hpd_notify, this is a bad place to force the HPD status as the follow-up detect call might force it off again resulting in all follow-up calls to the detection routine also failing. Avoid this by having a dedicated function for OOB events. Tested-by: Igor Paunovic # Orange Pi 5+ Signed-off-by: Sebastian Reichel --- drivers/gpu/drm/display/drm_bridge_connector.c | 6 ++++++ include/drm/drm_bridge.h | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c index 2202e6044444..2d49d7f27def 100644 --- a/drivers/gpu/drm/display/drm_bridge_connector.c +++ b/drivers/gpu/drm/display/drm_bridge_connector.c @@ -181,6 +181,12 @@ static void drm_bridge_connector_oob_hotplug_event(struct drm_connector *connect struct drm_bridge_connector *bridge_connector = to_drm_bridge_connector(connector); + /* Notify all bridges in the pipeline of hotplug events. */ + drm_for_each_bridge_in_chain(bridge_connector->encoder, bridge) { + if (bridge->funcs->oob_notify) + bridge->funcs->oob_notify(bridge, connector, status); + } + drm_bridge_connector_handle_hpd(bridge_connector, status); } diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 1981d24a700d..753f193c2803 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -540,6 +540,20 @@ struct drm_bridge_funcs { */ void (*hpd_disable)(struct drm_bridge *bridge); + /** + * @oob_notify: + * + * Notify the bridge of out of band hot plug detection. + * + * This callback is optional, it may be implemented by bridges that + * need to be notified of display connection or disconnection for + * internal reasons. One use case is to force the DP controllers HPD + * signal for USB-C DP AltMode. + */ + void (*oob_notify)(struct drm_bridge *bridge, + struct drm_connector *connector, + enum drm_connector_status status); + /** * @hdmi_tmds_char_rate_valid: * -- 2.53.0