| Message ID | 20260731-dw-hdmi-qp-scramb-v10-18-294364b2cf15@collabora.com (mailing list archive) |
|---|---|
| State | New |
| Headers |
Return-Path: <linux-sunxi+bounces-24819-sunxi=pue.re@lists.linux.dev> X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sto.lore.kernel.org (sto.lore.kernel.org [172.232.135.74]) by mxe881.netcup.net (Postfix) with ESMTPS id 7E6331C1D58 for <noreply@patchwork.local>; Fri, 31 Jul 2026 18:32:01 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=collabora.com; spf=pass (sender IP is 172.232.135.74) smtp.mailfrom=linux-sunxi+bounces-24819-noreply=patchwork.local@lists.linux.dev smtp.helo=sto.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.232.135.74 as permitted sender) client-ip=172.232.135.74; envelope-from=linux-sunxi+bounces-24819-noreply=patchwork.local@lists.linux.dev; helo=sto.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sto.lore.kernel.org (Postfix) with ESMTP id 6B3E530A6802 for <noreply@patchwork.local>; Fri, 31 Jul 2026 16:21:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0975544D035; Fri, 31 Jul 2026 16:19:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="pjkxXoRU" X-Original-To: linux-sunxi@lists.linux.dev Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 90AB34519AD for <linux-sunxi@lists.linux.dev>; Fri, 31 Jul 2026 16:19:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785514780; cv=none; b=GNW9H0rqIUnxKqOdlOFPpGe6Xx09u7R2PjUvjczbzFjRIV6Ns12jwarzeEh7MHtBX3UuoVv+9xkY8fVKsis+wn9h12KzcfTAXxlQHnCYLEJMOTcmoFOsSVUwZpohQP2jfQqe45RT3+euwuaPCnW3K3bthKosz0Fq+IJKxfnvyxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785514780; c=relaxed/simple; bh=/TKBya/JRolWMqyMoq59j0Jgp+DNbAGSUTJj0kIybwo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SN6dQHF9/z9KKCv5hOdHUAI3zndMusAeYLIg8uLpQ7poaGz+cCgaeiqhiW23qIo0Cvhl18wLf7HQGLAi2fzhcTser9n/An+VubYVyvltUICrBjwKdcwDWoHaAlqyc5bJEc+JeLbwv3NtAGgJZANJ3TBv06CzZf0e3k60FJSAWdg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=pjkxXoRU; arc=none smtp.client-ip=148.251.105.195 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1785514767; bh=/TKBya/JRolWMqyMoq59j0Jgp+DNbAGSUTJj0kIybwo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pjkxXoRUML7OflI1VWYB4yh2ZD1+v//L/vm+F599mt2GJb8l5kypciiwowIDJvJoh yB266LaFP21ZV119m/yqpOhr244odPvxfcgPTmSfd82hehoOkrP412Y+SKKIxEVf08 QuCqxjEhBqAzPM2q4SV+QPnauZ8uo/lSROZloowftk7eVORduw7lvhpZDVqAuIGwfI KH0VJur2+v7X7J/5etJCDOM9C4CFdmndp5F/BrteWZr/OH1SZKtGM2rsfSalheiVqP yASK47x4eusofxz60dvb3Ixt8Z3WkNu1soIjZHtU7NSCsdNe0v2RBRYdc+nNMXE0JS BSGRLbgbCamvw== Received: from localhost (unknown [100.64.0.241]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange secp256r1 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with ESMTPSA id AB58C17E093D; Fri, 31 Jul 2026 18:19:27 +0200 (CEST) From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> Date: Fri, 31 Jul 2026 19:19:25 +0300 Subject: [PATCH v10 18/69] drm/display: bridge_connector: Switch to .force_ctx() connector helper Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: <linux-sunxi.lists.linux.dev> List-Subscribe: <mailto:linux-sunxi+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:linux-sunxi+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260731-dw-hdmi-qp-scramb-v10-18-294364b2cf15@collabora.com> References: <20260731-dw-hdmi-qp-scramb-v10-0-294364b2cf15@collabora.com> In-Reply-To: <20260731-dw-hdmi-qp-scramb-v10-0-294364b2cf15@collabora.com> To: Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com>, Luca Ceresoli <luca.ceresoli@bootlin.com>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Chen-Yu Tsai <wens@kernel.org>, Samuel Holland <samuel@sholland.org>, Dave Stevenson <dave.stevenson@raspberrypi.com>, =?utf-8?q?Ma=C3=ADra_Canal?= <mcanal@igalia.com>, Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>, Sandy Huang <hjc@rock-chips.com>, =?utf-8?q?Heiko_St=C3=BCbner?= <heiko@sntech.de>, Andy Yan <andy.yan@rock-chips.com>, Algea Cao <algea.cao@rock-chips.com>, Daniel Stone <daniels@collabora.com>, Liu Ying <victor.liu@nxp.com>, Phong LE <ple@baylibre.com> Cc: kernel@collabora.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-rockchip@lists.infradead.org X-Mailer: b4 0.15.2 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= |
| Series |
Add HDMI 2.0 support to DW HDMI QP TX
|
|
Commit Message
Cristian Ciocaltea
July 31, 2026, 4:19 p.m. UTC
Turn drm_bridge_connector_force() into a .force_ctx() implementation and
hand the acquire context over to
drm_atomic_helper_connector_hdmi_force_ctx(), so that the HDMI connector
framework can reset the CRTC to recover the SCDC state when the sink
reconnects while the display pipeline is active.
No functional change for non-HDMI bridge connectors, which keep behaving
as a no-op.
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
drivers/gpu/drm/display/drm_bridge_connector.c | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
Comments
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] The patch replaces `drm_bridge_connector_force()` with `drm_bridge_connector_force_ctx()` and calls `drm_atomic_helper_connector_hdmi_force_ctx()`. However, `drm_atomic_helper_connector_hdmi_force_ctx()` is neither defined nor declared anywhere in the kernel tree. This results in an implicit function declaration error and undefined reference during linking. -- --- Patch [18]: [PATCH v10 18/69] drm/display: bridge_connector: Switch to .force_ctx() connector helper --- commit 01a7e2cca1b495d499fd78712842111769ad4146 Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> drm/display: bridge_connector: Switch to .force_ctx() connector helper This commit replaces the drm_bridge_connector_force() function with a .force_ctx() implementation. It hands the acquire context over to drm_atomic_helper_connector_hdmi_force_ctx() for HDMI connectors. > diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c > --- a/drivers/gpu/drm/display/drm_bridge_connector.c > +++ b/drivers/gpu/drm/display/drm_bridge_connector.c [ ... ] > @@ -322,6 +311,19 @@ static int drm_bridge_connector_detect_ctx(struct drm_connector *connector, > return status; > } > > +static int drm_bridge_connector_force_ctx(struct drm_connector *connector, > + struct drm_modeset_acquire_ctx *ctx) > +{ > + struct drm_bridge_connector *bridge_connector = > + to_drm_bridge_connector(connector); > + struct drm_bridge *hdmi = bridge_connector->bridge_hdmi; > + > + if (hdmi) > + return drm_atomic_helper_connector_hdmi_force_ctx(connector, ctx); [Severity: Low] It appears drm_atomic_helper_connector_hdmi_force_ctx() is not declared anywhere in the kernel tree prior to being used here. Could this result in an implicit function declaration error and an undefined reference during linking when building with DRM display bridge connector support enabled? Is it possible a prerequisite patch introducing this helper was omitted from the series? > + > + return 0; > +} > + [ ... ]
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c index 0d44a270b636..86353a0b9758 100644 --- a/drivers/gpu/drm/display/drm_bridge_connector.c +++ b/drivers/gpu/drm/display/drm_bridge_connector.c @@ -208,16 +208,6 @@ static void drm_bridge_connector_disable_hpd(struct drm_connector *connector) * Bridge Connector Functions */ -static void drm_bridge_connector_force(struct drm_connector *connector) -{ - struct drm_bridge_connector *bridge_connector = - to_drm_bridge_connector(connector); - struct drm_bridge *hdmi = bridge_connector->bridge_hdmi; - - if (hdmi) - drm_atomic_helper_connector_hdmi_force(connector); -} - static void drm_bridge_connector_debugfs_init(struct drm_connector *connector, struct dentry *root) { @@ -274,7 +264,6 @@ drm_bridge_connector_color_format(const struct drm_connector_state *conn_state) } static const struct drm_connector_funcs drm_bridge_connector_funcs = { - .force = drm_bridge_connector_force, .fill_modes = drm_helper_probe_single_connector_modes, .atomic_create_state = drm_bridge_connector_create_state, .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, @@ -322,6 +311,19 @@ static int drm_bridge_connector_detect_ctx(struct drm_connector *connector, return status; } +static int drm_bridge_connector_force_ctx(struct drm_connector *connector, + struct drm_modeset_acquire_ctx *ctx) +{ + struct drm_bridge_connector *bridge_connector = + to_drm_bridge_connector(connector); + struct drm_bridge *hdmi = bridge_connector->bridge_hdmi; + + if (hdmi) + return drm_atomic_helper_connector_hdmi_force_ctx(connector, ctx); + + return 0; +} + static int drm_bridge_connector_get_modes_edid(struct drm_connector *connector, struct drm_bridge *bridge) { @@ -414,6 +416,7 @@ static int drm_bridge_connector_atomic_check(struct drm_connector *connector, static const struct drm_connector_helper_funcs drm_bridge_connector_helper_funcs = { .get_modes = drm_bridge_connector_get_modes, .detect_ctx = drm_bridge_connector_detect_ctx, + .force_ctx = drm_bridge_connector_force_ctx, .mode_valid = drm_bridge_connector_mode_valid, .enable_hpd = drm_bridge_connector_enable_hpd, .disable_hpd = drm_bridge_connector_disable_hpd,