From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 2EFA8320CA7 for ; Wed, 7 Jan 2026 13:13:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791615; cv=none; b=eZBZ+wdJPe2fOn+equnkP9oOL8/rv6kQ5JDMX1wCoVeHcuEGQdk8iSNC59F+tEMz48/oqy6IB5o7a2LRjzQJRmQ/ENeu+4q+cn7/DztKP8XLRjNIlHyIK9rxMzfqYCvMFg5Xd4dhYrvVXxPSoTp3/QRltFBbYd9FoFAxy3M4p8I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791615; c=relaxed/simple; bh=/MPuYjPmKlHUUK2WGZA8i2lxLeuL9ewTQqCpixIOA0s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lzVjVufisiEqduGQUaUibsAKGNJpAywvBeobDaK4bMzRaEWqie+Osrcu7z6kEooTkToALtm4oOV3MiqKHGC2vmo2Iu1wmmw2OylhSa/bQp2ZKdNhggh7Rj9lBrZ7t0BmnR1Plr0FTSU1ExDO4JhERM9BgyYEFLfeST9wmm/y5NM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=M2mj8/5g; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="M2mj8/5g" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id D33401A26D8; Wed, 7 Jan 2026 13:13:31 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id A6404606F8; Wed, 7 Jan 2026 13:13:31 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 88F7A103C8665; Wed, 7 Jan 2026 14:13:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791610; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=MCoKJsSGOxfJzIW5p3SIZAP1srznlWRAZromZYZO5jo=; b=M2mj8/5gpJFRA5Clx57brNOnjh6nnw/D7g/n4V+EwHwNaRJWBV5qa19hbzNU4CLkNgnozU mN++TwwBH183XS6yy4N3Tl8Qs1tv2+3fTLxmmO798cVgXa7ThrtIoSDZybqS92YWG9oEc1 oEinqXZ7FCCWnraUztEqUClNbr0BlHKeHEDwLHbCx4tHYOFHna8ZwU/NA0Pcaf+vUpX1tr uIzIpNq1aB9ALF4Q1Qk/GMftMbVljq+sv9h4bFnnp2jQ8GuXsYkNw6KeajszkwCBYIubS7 qEfIz8dMd7Dy71/fLRE0Kr7ExV3YGZEarptQrx69uJkA1efTsW9iZ0wciWYS+Q== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:52 +0100 Subject: [PATCH 01/12] drm: of: drm_of_panel_bridge_remove(): fix device_node leak Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-1-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 drm_of_panel_bridge_remove() uses of_graph_get_remote_node() to get a device_node but does not put the node reference. Fixes: c70087e8f16f ("drm/drm_of: add drm_of_panel_bridge_remove function") Cc: stable@vger.kernel.org # v4.15 Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- include/drm/drm_of.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h index 7f0256dae3f1..f3e55ea2174c 100644 --- a/include/drm/drm_of.h +++ b/include/drm/drm_of.h @@ -5,6 +5,7 @@ #include #include #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DRM_PANEL_BRIDGE) +#include #include #endif =20 @@ -173,6 +174,8 @@ static inline int drm_of_panel_bridge_remove(const stru= ct device_node *np, bridge =3D of_drm_find_bridge(remote); drm_panel_bridge_remove(bridge); =20 + of_node_put(remote); + return 0; #else return -EINVAL; --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (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 35D9629B8E5 for ; Wed, 7 Jan 2026 13:13:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791619; cv=none; b=LXvFV8k257AF70tuRqmoZin9V1d0qYjbDptpqPidR+fkPxncFlcIKI0XPKKqRL/xPuaFALTG3ZMSJwXqTPySkFRIUWi+LV+954mvsatZra73lljeaOoJ2Ht5rsJ/ibUv/SrGzr774dmteoRWLzsjojtmFVwKy+EnlVS7nsMMlac= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791619; c=relaxed/simple; bh=e7OuU5PQTDxxyGryoJlz9nFTc75MzS+uKYedGlzdWZQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TEcnSbG8i8/aWzVLr+YjFLvgDXGlEeDB0oIugssNujeCWAAhm6HwNNhfneaBCl6thM+yYY6ZitqLcOJ7cHTfE74RhQd5sDhCso8m5cWdme+v/w7C70q6u3AHbNaFHTxYa8GNsOZlRNfqredbY1kvepJ15d5bOvCb5qpgloTpQnQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=U4Knzitt; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="U4Knzitt" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 8F07E4E41FDE; Wed, 7 Jan 2026 13:13:36 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 63E39606F8; Wed, 7 Jan 2026 13:13:36 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id BB669103C821A; Wed, 7 Jan 2026 14:13:30 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791614; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=qD3g6EnD8+rcSwnk3c6GZ/METpYqJBufhGXSRbaDSWE=; b=U4Knzitt5PLyQhIm35aPNRNQjblPaBg8FX2aqGtdsEeHi3qTJWdo9U1wf+xe0cgUEsnhQQ Uu3uf4/xT6JYYwUE3fJi2S7adFqBqKL2occnkU33mNx4g0RT/5PxJ++MWt3UJplWMihusp vfyB8Y6Mw1nmBa3uMBYYeuMgnUP9DsVuIK+On4aeYRpPbBVY4SxXvrcXm3iSBEOpqyXQFp iorKDMm4BRJMk+qqcr2DjKWuwHR2/kJfrDGW/UTtBbD/pKlJjI35q+q6HHQHFBD2t4v72r v/JoOeBuf14FdeKDQU4gcG4AzFcJ8vmAd7uMKChPzsuGxuHKfoMGdoKy3s9cCw== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:53 +0100 Subject: [PATCH 02/12] drm: of: drm_of_panel_bridge_remove(): convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-2-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- include/drm/drm_of.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h index f3e55ea2174c..f2f2bf82eff9 100644 --- a/include/drm/drm_of.h +++ b/include/drm/drm_of.h @@ -171,9 +171,10 @@ static inline int drm_of_panel_bridge_remove(const str= uct device_node *np, if (!remote) return -ENODEV; =20 - bridge =3D of_drm_find_bridge(remote); + bridge =3D of_drm_find_and_get_bridge(remote); drm_panel_bridge_remove(bridge); =20 + drm_bridge_put(bridge); of_node_put(remote); =20 return 0; --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (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 7D6D0322B69 for ; Wed, 7 Jan 2026 13:13:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.171.202.116 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791624; cv=none; b=bnp1BY1jItLbEvzUFaq2PGjNcgiIHfPbAjJ67+KdPdh/arYXXllUkAAQisvQr67b+iXib91T14GivmgM3tkU9M+aWVWhjT/wirEywHspz1vGMEKym1RL1MrmbPCRWUU510gnJ0azt+GaDeKa7ZdfKZWw2IuCNKHtBzob9fc0TQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791624; c=relaxed/simple; bh=hJm1Yd83zZ6sQm2qX74iFfnuSJ4pHlZuYfaw1c+tCBQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J9wAvL8nt02JyfOQoWHEmH0Ymz8XcAWyzSrb2Hq7lk094776jpFCrTZDmsGU3OlNQmZIYqkHFwwaV02vrri6dOLzVa3X/zYJETeC1AbqfK161CTuGPCbA6tTmzhdpYPQFd3qPL4JTODgxCpYUfP9VCvsb96HnIZsR3nqpt1XwIY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=kHzad9vX; arc=none smtp.client-ip=185.171.202.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="kHzad9vX" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id EF2A8C1EC90; Wed, 7 Jan 2026 13:13:14 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 16CEC606F8; Wed, 7 Jan 2026 13:13:41 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 55DC3103C8740; Wed, 7 Jan 2026 14:13:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791619; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=PBLw2S40lXZsCWRUXlFPSLF7ZKeEpxdBnBHyiWpX8NM=; b=kHzad9vXzEwUE2BmbEnu0SjASKxFslKat9qDMqZAG/D+JHO/BN7FnI2C9e0nNVyMaAhV4P FrJ6PAOr3k9W8n5jcyOQR3xgO1a1QhCPkTfEDtJEOPQq0wijrfNyHqoyhPy00rxaZgOhvM QQd+OK3QKtydqgwOdYdv/hDsIS95rvJjsYT1hVWCVNAoocYOkr+R0linDC9XfV7/0tZff6 8k7vdPTqKpss2Pa0q/o3YtQUJ7xeR/Y1dXGLH8OEI4KLBsxrlMVXSDyBTTzxYssRvKJ8eY IhkFCaGyEKNBgjHHM4OlMKCJUC5KWEPCpRjTMEm7ranXbuVaMmNzcQgDo5Po8Q== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:54 +0100 Subject: [PATCH 03/12] drm/bridge: sii902x: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-3-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done by using the drm_bridge::next_bridge pointer. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/sii902x.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii9= 02x.c index 1f0aba28ad1e..12497f5ce4ff 100644 --- a/drivers/gpu/drm/bridge/sii902x.c +++ b/drivers/gpu/drm/bridge/sii902x.c @@ -175,7 +175,6 @@ struct sii902x { struct i2c_client *i2c; struct regmap *regmap; struct drm_bridge bridge; - struct drm_bridge *next_bridge; struct drm_connector connector; struct gpio_desc *reset_gpio; struct i2c_mux_core *i2cmux; @@ -421,7 +420,7 @@ static int sii902x_bridge_attach(struct drm_bridge *bri= dge, int ret; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) - return drm_bridge_attach(encoder, sii902x->next_bridge, + return drm_bridge_attach(encoder, sii902x->bridge.next_bridge, bridge, flags); =20 drm_connector_helper_add(&sii902x->connector, @@ -1204,9 +1203,9 @@ static int sii902x_probe(struct i2c_client *client) return -ENODEV; } =20 - sii902x->next_bridge =3D of_drm_find_bridge(remote); + sii902x->bridge.next_bridge =3D of_drm_find_and_get_bridge(remote); of_node_put(remote); - if (!sii902x->next_bridge) + if (!sii902x->bridge.next_bridge) return dev_err_probe(dev, -EPROBE_DEFER, "Failed to find remote bridge\n"); } --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 D1677321F5F for ; Wed, 7 Jan 2026 13:13:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791628; cv=none; b=NJAaEoONU9XMVzW8pYr9rOe9xjjmBpIJhUxMCwBJ2O5EGiclK0sAfhVJ7TiL+yyuza3twCx+A5gLOCXjxBBeTnXzg8sEG99HeYgWHX2QLIzN6lzD4yGF6Z5eKcxzov7G/1gqLyqYlPaX7uStzpZwNw/MoJCaJKQ4/4+qL1JRxuI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791628; c=relaxed/simple; bh=4ylN1pBdc0e/pl84O/LNo2jXs53jzp+L0ARfG3VDe8c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mE8Jpzz03WVU8pWo1RV2jhu1M47UbCH5I/ohqta89EUW6Lzp+9rcR4vkyaC6iRWY5OA0QGt11SEHd5316KwfErLjlycW4y664HnZd70WrY4rA7CHAduTXbOuT6rKfZcdzEZkGOaQ4Ih66of4cGwuyNowSUWR6MoHkeqhFPaWvM0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=dfq0fNtO; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="dfq0fNtO" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 495061A26D8; Wed, 7 Jan 2026 13:13:45 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 1C945606F8; Wed, 7 Jan 2026 13:13:45 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 1F64A103C8741; Wed, 7 Jan 2026 14:13:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791623; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=kcPTDN7TfpXL+5tbxQ2V14FG9zJXkIPfnt9CMkeJHG4=; b=dfq0fNtOTSUa9Ae1iTqDZCcgA0P+8l1KsU+tx56jFXhdxp3NbglAEKOkeS+qqhJCjOM05w B1sJJ40Emdj3FCPgFIpcYEvxDqoMPFwIA9l1LFbzxql6wtkOJKfn7Rl0gqi2IP3pXf42Qt fqkSi6AlE5KOW7Rlwm3Ksz6ABMZFaL7Z7/35mTrvHrRFrPu3KDMnBMKU1sHsJ0PZ8FBQsK bIiHH0XXyEDvSJULVP+F8pmizTaMxUpDdQufVzWFLf71pMZZ8HqpidQsqm3UZ2lkhg1/Mk KP1mcGlA+a0f4/wDR45L2cVEBghP1XBBFAb8VkvcOmJz0zKlkiDWFFp1QfByiw== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:55 +0100 Subject: [PATCH 04/12] drm/bridge: thc63lvd1024: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-4-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done by using the drm_bridge::next_bridge pointer. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/thc63lvd1024.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/thc63lvd1024.c b/drivers/gpu/drm/bridge= /thc63lvd1024.c index 2cb7cd0c0608..c804222846c3 100644 --- a/drivers/gpu/drm/bridge/thc63lvd1024.c +++ b/drivers/gpu/drm/bridge/thc63lvd1024.c @@ -32,7 +32,6 @@ struct thc63_dev { struct gpio_desc *oe; =20 struct drm_bridge bridge; - struct drm_bridge *next; =20 struct drm_bridge_timings timings; }; @@ -48,7 +47,7 @@ static int thc63_attach(struct drm_bridge *bridge, { struct thc63_dev *thc63 =3D to_thc63(bridge); =20 - return drm_bridge_attach(encoder, thc63->next, bridge, flags); + return drm_bridge_attach(encoder, thc63->bridge.next_bridge, bridge, flag= s); } =20 static enum drm_mode_status thc63_mode_valid(struct drm_bridge *bridge, @@ -132,9 +131,9 @@ static int thc63_parse_dt(struct thc63_dev *thc63) return -ENODEV; } =20 - thc63->next =3D of_drm_find_bridge(remote); + thc63->bridge.next_bridge =3D of_drm_find_and_get_bridge(remote); of_node_put(remote); - if (!thc63->next) + if (!thc63->bridge.next_bridge) return -EPROBE_DEFER; =20 endpoint =3D of_graph_get_endpoint_by_regs(thc63->dev->of_node, --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (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 31B4D31B825 for ; Wed, 7 Jan 2026 13:13:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791633; cv=none; b=gEWoMZnX4y1/egL2xqjQ5DNtOWPJj1EeHY+PY4KQfSFivhlGsXGpm3M8ul3nTJnFp/gjkon8VtJjXup87o9vk8Knnjic9Lq1WMnl8bFz1oWpfB4I0cwaYlsN37KXGOrwMqXmrdT1hae396FoywP6V5gOnljloy5ChyjwUDAGEuo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791633; c=relaxed/simple; bh=geQevuXHdefJplJWRFXCTgfRVlyUpFRRHxc8gAIKsfo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UyPIUMRmyhZzKFYDWizJgJnX11TM5JUoD6lTfcsfYOTwsYZIgxtPrlUO3ZLq2Wihyp4wSEWyttgh6JvDLS2xh3phYoGfCJsDRZohsnZjby1SYMCbEvF5/UUNtLkYTFrSOLJgpcPNy3TiaBPHG3Mb5mblXNwfo1DTU40d1szUF38= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=pPm8csoJ; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="pPm8csoJ" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id A53644E41FDE; Wed, 7 Jan 2026 13:13:49 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 6EA5B606F8; Wed, 7 Jan 2026 13:13:49 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 4BC18103C8744; Wed, 7 Jan 2026 14:13:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791627; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=AofJV46GCcIycup8AyvdwScpLkblbZyy7dzUs70zbeM=; b=pPm8csoJHFOtCpXH2s+CTdsiSGlOr6aFzuCyOraotIbgXUOF67e30ioJY4KQ30d/H6x7gc G6WKbMrwHr2QbJzFOtDlld557GcNqd0KKD+Sni+DQ5Id3tTWL+1MUxKcJylQ3rW9WctVZu /2SdyuZcUpXPHO7GK2Mx6K59cv9frqTGZYRo6Q5xDYqjDjibdL4gMRCxcyjIAXKSlBOgA9 6m45RVyHag4wNIpNkZUzPjXxrTXPMzr28GWso7PMYzjK7g8fU9YXeMnwZBON2kvOmyixOO ff7hgGnjSfA8/dLgG9b7VEs94HlAHXGbGvNLqCQrKDmnmF0wJQJ3WVQCU+1RIA== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:56 +0100 Subject: [PATCH 05/12] drm/bridge: tfp410: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-5-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done by using the drm_bridge::next_bridge pointer. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/ti-tfp410.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti= -tfp410.c index b80ee089f880..11b5bb50e9f4 100644 --- a/drivers/gpu/drm/bridge/ti-tfp410.c +++ b/drivers/gpu/drm/bridge/ti-tfp410.c @@ -30,7 +30,6 @@ struct tfp410 { struct gpio_desc *powerdown; =20 struct drm_bridge_timings timings; - struct drm_bridge *next_bridge; =20 struct device *dev; }; @@ -53,8 +52,8 @@ static int tfp410_get_modes(struct drm_connector *connect= or) const struct drm_edid *drm_edid; int ret; =20 - if (dvi->next_bridge->ops & DRM_BRIDGE_OP_EDID) { - drm_edid =3D drm_bridge_edid_read(dvi->next_bridge, connector); + if (dvi->bridge.next_bridge->ops & DRM_BRIDGE_OP_EDID) { + drm_edid =3D drm_bridge_edid_read(dvi->bridge.next_bridge, connector); if (!drm_edid) DRM_INFO("EDID read failed. Fallback to standard modes\n"); } else { @@ -89,7 +88,7 @@ tfp410_connector_detect(struct drm_connector *connector, = bool force) { struct tfp410 *dvi =3D drm_connector_to_tfp410(connector); =20 - return drm_bridge_detect(dvi->next_bridge, connector); + return drm_bridge_detect(dvi->bridge.next_bridge, connector); } =20 static const struct drm_connector_funcs tfp410_con_funcs =3D { @@ -126,7 +125,7 @@ static int tfp410_attach(struct drm_bridge *bridge, struct tfp410 *dvi =3D drm_bridge_to_tfp410(bridge); int ret; =20 - ret =3D drm_bridge_attach(encoder, dvi->next_bridge, bridge, + ret =3D drm_bridge_attach(encoder, dvi->bridge.next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) return ret; @@ -134,14 +133,14 @@ static int tfp410_attach(struct drm_bridge *bridge, if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) return 0; =20 - if (dvi->next_bridge->ops & DRM_BRIDGE_OP_DETECT) + if (dvi->bridge.next_bridge->ops & DRM_BRIDGE_OP_DETECT) dvi->connector.polled =3D DRM_CONNECTOR_POLL_HPD; else dvi->connector.polled =3D DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POL= L_DISCONNECT; =20 - if (dvi->next_bridge->ops & DRM_BRIDGE_OP_HPD) { + if (dvi->bridge.next_bridge->ops & DRM_BRIDGE_OP_HPD) { INIT_DELAYED_WORK(&dvi->hpd_work, tfp410_hpd_work_func); - drm_bridge_hpd_enable(dvi->next_bridge, tfp410_hpd_callback, + drm_bridge_hpd_enable(dvi->bridge.next_bridge, tfp410_hpd_callback, dvi); } =20 @@ -149,8 +148,8 @@ static int tfp410_attach(struct drm_bridge *bridge, &tfp410_con_helper_funcs); ret =3D drm_connector_init_with_ddc(bridge->dev, &dvi->connector, &tfp410_con_funcs, - dvi->next_bridge->type, - dvi->next_bridge->ddc); + dvi->bridge.next_bridge->type, + dvi->bridge.next_bridge->ddc); if (ret) { dev_err(dvi->dev, "drm_connector_init_with_ddc() failed: %d\n", ret); @@ -169,8 +168,8 @@ static void tfp410_detach(struct drm_bridge *bridge) { struct tfp410 *dvi =3D drm_bridge_to_tfp410(bridge); =20 - if (dvi->connector.dev && dvi->next_bridge->ops & DRM_BRIDGE_OP_HPD) { - drm_bridge_hpd_disable(dvi->next_bridge); + if (dvi->connector.dev && dvi->bridge.next_bridge->ops & DRM_BRIDGE_OP_HP= D) { + drm_bridge_hpd_disable(dvi->bridge.next_bridge); cancel_delayed_work_sync(&dvi->hpd_work); } } @@ -362,10 +361,10 @@ static int tfp410_init(struct device *dev, bool i2c) if (!node) return -ENODEV; =20 - dvi->next_bridge =3D of_drm_find_bridge(node); + dvi->bridge.next_bridge =3D of_drm_find_and_get_bridge(node); of_node_put(node); =20 - if (!dvi->next_bridge) + if (!dvi->bridge.next_bridge) return -EPROBE_DEFER; =20 /* Get the powerdown GPIO. */ --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 ACA5231CA4A for ; Wed, 7 Jan 2026 13:13:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791637; cv=none; b=QVYa6AW5Lr1f/VGKesb9FlExHaxc1IllHfSz8ENiul8+x10pUeXqm8bT6mlppXensmaYXHW2pWOmtUSji9xjA3E+vgf9sHo+wz6kQnH+ZYp09ULl/4v2+im0dBiP2tOtIBVoi4PpSgmfei2Ha7ggffuPgqM0YpqnGonzXex+Mww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791637; c=relaxed/simple; bh=2acva3QvhirY/Awmcv14/578UVxJt/0aRF2JcBofHDE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hgH5YZKon/suTQEGoDvKAqmvaalK8fJdgHwmS09Yt5W/nwO246xtieuf/OLl+mtVfnZD5UNb2Ya3fuDc+44FFCfhKRwIVSbdtJrru35M3hRyAvcXgn+fT0IIV1h4/q5olhKPkbkAQF+6+FzUxxE5FSGhX3dMPzL9Szlgfk6aGio= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=L0SIzw5k; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="L0SIzw5k" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 5A96B1A26D8; Wed, 7 Jan 2026 13:13:54 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 29940606F8; Wed, 7 Jan 2026 13:13:54 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 6F73F103C873F; Wed, 7 Jan 2026 14:13:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791632; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=qxmr7vM/jwGirSwMeq4WdaicpNgRO2FGaKWk62MTu1M=; b=L0SIzw5k7u6JAHytKJPzU7WgNINDDB3QeeAi7+p2ziLebUwJsAjRM8AzHRYFI6vkoFGJgS 920nXcpfRZsPxj4NLhXOvkCO5YsaIyaooEekSgCgrK+egpFcLm0SNoXAXLxHE29NTkk31d o9OJUCvEa4orTXW6dU6q1FV7Pt6xV4RpRLA0zb7zt/mISUUWsZgyO0HMlmzMm9fiVA8M9O UYR4dLSyQp5LDOjmz1EkbFmCQqEm8S0Nq5Z+FXzMtBeuv8az31ka4FOpbKXbFueW0MRcB0 aHbWS1woRpf2D5GQerqzztubRvzl3M5qujPLvZbn4GMt4brem/4oBt1Ico21mg== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:57 +0100 Subject: [PATCH 06/12] drm/bridge: tpd12s015: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-6-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done by using the drm_bridge::next_bridge pointer. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/ti-tpd12s015.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-tpd12s015.c b/drivers/gpu/drm/bridge= /ti-tpd12s015.c index dcf686c4e73d..136e47ad1a10 100644 --- a/drivers/gpu/drm/bridge/ti-tpd12s015.c +++ b/drivers/gpu/drm/bridge/ti-tpd12s015.c @@ -28,8 +28,6 @@ struct tpd12s015_device { struct gpio_desc *ls_oe_gpio; struct gpio_desc *hpd_gpio; int hpd_irq; - - struct drm_bridge *next_bridge; }; =20 static inline struct tpd12s015_device *to_tpd12s015(struct drm_bridge *bri= dge) @@ -47,7 +45,7 @@ static int tpd12s015_attach(struct drm_bridge *bridge, if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - ret =3D drm_bridge_attach(encoder, tpd->next_bridge, + ret =3D drm_bridge_attach(encoder, tpd->bridge.next_bridge, bridge, flags); if (ret < 0) return ret; @@ -138,10 +136,10 @@ static int tpd12s015_probe(struct platform_device *pd= ev) if (!node) return -ENODEV; =20 - tpd->next_bridge =3D of_drm_find_bridge(node); + tpd->bridge.next_bridge =3D of_drm_find_and_get_bridge(node); of_node_put(node); =20 - if (!tpd->next_bridge) + if (!tpd->bridge.next_bridge) return -EPROBE_DEFER; =20 /* Get the control and HPD GPIOs. */ --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (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 2CE5831ED61 for ; Wed, 7 Jan 2026 13:14:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.171.202.116 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791642; cv=none; b=frVIOEAroO3+SdjecDkOsFGCeBbxGD+9v7eNA5BAxhq7Ov+Sla6nlaEL22Zi2rm+OPpY7tSnU/35MHZQyAXb/8/JBedWT1GHa41s3bhBPosidQfwp6S9YERG5fYNWDZga39Up0+0W1dYRkFK5+oUhwHRivjYOKhKNwMV/b2tQ4k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791642; c=relaxed/simple; bh=5uyAcdSQaBD0uaR8XwoS4ZuYdnCHaPZwLecUoyO5JN8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lu2Cf3FB3VSzehKoedPLb6uPO7pg0CJigoz6iQKnN5MxkEwQAgMRSzMurGQJRKxSDlD9bfHLx48FKZ+ZYKQrjyuKcnDWcoW2Blq0aanx+5H/etgAgkP+TH7c9id7oVzfIyNN4E8/xTxo3levX2wWKjCv+o75+TFc25ofcMYP8fI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=TIO54g4w; arc=none smtp.client-ip=185.171.202.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="TIO54g4w" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id 7586CC1EC8B; Wed, 7 Jan 2026 13:13:32 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 91B97606F8; Wed, 7 Jan 2026 13:13:58 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 41B97103C821A; Wed, 7 Jan 2026 14:13:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791637; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=1CEWiPfXmSvImae/moe/m8LK+rcX6LoChzh68M+VFJo=; b=TIO54g4weKu/1ZYRW5/qMJvg/VloZaPMnebU2gnxO2Z3oklO0k4Hr2dZC6D63YBxIm41ER 26LL9iP9lIRIuv92YvQl8sIdg5/1bBGHap7qjDjV3Zwtj0W/eOxisqaG9IWFiYEBvVUU/z 3T6fs2YvYwy0VtMTrzZPFwDq/WSXJJFrZ8pPuIwfXJh7+v7x6CwBS9odoR+occeFl+b988 jHeU5JqmTSDHguvKL8hNuRn/mSwzd6sRDQM2X15sDNZLVstb61hEo7WBCT6hz+tBScV7Y6 V860pZERTjBsxF9p4yMTISaFr/80f1L5dXYp55LY/3nysr8wp133lO46ycTMyw== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:58 +0100 Subject: [PATCH 07/12] drm/bridge: lt8912b: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-7-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done by using the drm_bridge::next_bridge pointer. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/lontium-lt8912b.c | 31 +++++++++++++++-------------= --- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c b/drivers/gpu/drm/bri= dge/lontium-lt8912b.c index 342374cb8fc6..8a0b48efca58 100644 --- a/drivers/gpu/drm/bridge/lontium-lt8912b.c +++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c @@ -35,7 +35,6 @@ struct lt8912 { struct regmap *regmap[I2C_MAX_IDX]; =20 struct device_node *host_node; - struct drm_bridge *hdmi_port; =20 struct mipi_dsi_device *dsi; =20 @@ -407,8 +406,8 @@ lt8912_connector_detect(struct drm_connector *connector= , bool force) { struct lt8912 *lt =3D connector_to_lt8912(connector); =20 - if (lt->hdmi_port->ops & DRM_BRIDGE_OP_DETECT) - return drm_bridge_detect(lt->hdmi_port, connector); + if (lt->bridge.next_bridge->ops & DRM_BRIDGE_OP_DETECT) + return drm_bridge_detect(lt->bridge.next_bridge, connector); =20 return lt8912_check_cable_status(lt); } @@ -429,7 +428,7 @@ static int lt8912_connector_get_modes(struct drm_connec= tor *connector) u32 bus_format =3D MEDIA_BUS_FMT_RGB888_1X24; int ret, num; =20 - drm_edid =3D drm_bridge_edid_read(lt->hdmi_port, connector); + drm_edid =3D drm_bridge_edid_read(lt->bridge.next_bridge, connector); drm_edid_connector_update(connector, drm_edid); if (!drm_edid) return 0; @@ -519,8 +518,8 @@ static int lt8912_bridge_connector_init(struct drm_brid= ge *bridge) struct lt8912 *lt =3D bridge_to_lt8912(bridge); struct drm_connector *connector =3D <->connector; =20 - if (lt->hdmi_port->ops & DRM_BRIDGE_OP_HPD) { - drm_bridge_hpd_enable(lt->hdmi_port, lt8912_bridge_hpd_cb, lt); + if (lt->bridge.next_bridge->ops & DRM_BRIDGE_OP_HPD) { + drm_bridge_hpd_enable(lt->bridge.next_bridge, lt8912_bridge_hpd_cb, lt); connector->polled =3D DRM_CONNECTOR_POLL_HPD; } else { connector->polled =3D DRM_CONNECTOR_POLL_CONNECT | @@ -529,7 +528,7 @@ static int lt8912_bridge_connector_init(struct drm_brid= ge *bridge) =20 ret =3D drm_connector_init(bridge->dev, connector, <8912_connector_funcs, - lt->hdmi_port->type); + lt->bridge.next_bridge->type); if (ret) goto exit; =20 @@ -549,7 +548,7 @@ static int lt8912_bridge_attach(struct drm_bridge *brid= ge, struct lt8912 *lt =3D bridge_to_lt8912(bridge); int ret; =20 - ret =3D drm_bridge_attach(encoder, lt->hdmi_port, bridge, + ret =3D drm_bridge_attach(encoder, lt->bridge.next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) { dev_err(lt->dev, "Failed to attach next bridge (%d)\n", ret); @@ -585,8 +584,8 @@ static void lt8912_bridge_detach(struct drm_bridge *bri= dge) =20 lt8912_hard_power_off(lt); =20 - if (lt->connector.dev && lt->hdmi_port->ops & DRM_BRIDGE_OP_HPD) - drm_bridge_hpd_disable(lt->hdmi_port); + if (lt->connector.dev && lt->bridge.next_bridge->ops & DRM_BRIDGE_OP_HPD) + drm_bridge_hpd_disable(lt->bridge.next_bridge); } =20 static enum drm_mode_status @@ -611,8 +610,8 @@ lt8912_bridge_detect(struct drm_bridge *bridge, struct = drm_connector *connector) { struct lt8912 *lt =3D bridge_to_lt8912(bridge); =20 - if (lt->hdmi_port->ops & DRM_BRIDGE_OP_DETECT) - return drm_bridge_detect(lt->hdmi_port, connector); + if (lt->bridge.next_bridge->ops & DRM_BRIDGE_OP_DETECT) + return drm_bridge_detect(lt->bridge.next_bridge, connector); =20 return lt8912_check_cable_status(lt); } @@ -626,8 +625,8 @@ static const struct drm_edid *lt8912_bridge_edid_read(s= truct drm_bridge *bridge, * edid must be read through the ddc bus but it must be * given to the hdmi connector node. */ - if (lt->hdmi_port->ops & DRM_BRIDGE_OP_EDID) - return drm_bridge_edid_read(lt->hdmi_port, connector); + if (lt->bridge.next_bridge->ops & DRM_BRIDGE_OP_EDID) + return drm_bridge_edid_read(lt->bridge.next_bridge, connector); =20 dev_warn(lt->dev, "The connected bridge does not supports DRM_BRIDGE_OP_E= DID\n"); return NULL; @@ -723,8 +722,8 @@ static int lt8912_parse_dt(struct lt8912 *lt) goto err_free_host_node; } =20 - lt->hdmi_port =3D of_drm_find_bridge(port_node); - if (!lt->hdmi_port) { + lt->bridge.next_bridge =3D of_drm_find_and_get_bridge(port_node); + if (!lt->bridge.next_bridge) { ret =3D -EPROBE_DEFER; dev_err_probe(lt->dev, ret, "%s: Failed to get hdmi port\n", __func__); goto err_free_host_node; --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (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 4BE263246F8 for ; Wed, 7 Jan 2026 13:14:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791649; cv=none; b=uXWEfGJW/2QIM6F6M9FqbzMQ84yZ56LBgCjh9iLwDBoN/Sc3KXrwcjU8yRu/DFjuin/VMr0OjiauWzUuEQIe6fsSOYUMdVsrGPAccqrKQ57EjmneOnFgQSUu0nL05Ude8Q5wAepgFr1XT+0AW8qh4+wgo/6PBokqX0usCaVFwDg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791649; c=relaxed/simple; bh=YdBnL+zdJ/Gzcbcx2qT/LcIkuCUnPWWah92dgeG8k6Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ArtDO3M4X0HD4M96FrjdSrgqyZkoZmDCOuX63PXlafHrhkKeCij9GWwige4nmC3HcZHEvfoc9i68N/wldfUu1soFK/mIXhFnz1/NjQIUNmA45KMyEd9iY5iZ2cZPZGQiusdV0T/OI9WdlpncCd2wJwmlHLwpfZNNEqpCDnvEthw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=zlp4ImdT; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="zlp4ImdT" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 295BC4E41FDE; Wed, 7 Jan 2026 13:14:03 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id EC563606F8; Wed, 7 Jan 2026 13:14:02 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id BA269103C84C4; Wed, 7 Jan 2026 14:13:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791641; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=c9uPxQIzbm1x3tUEAMRFb/oOEwm7sA+lEOVv4AQtBEw=; b=zlp4ImdTLiKKY2NZVTxqKuYqT0BFkRF8RThasuk4DhPWMqvukWNRiAumjzIRv6MhPxosoe OzEM4vb2Q2O18W5cY6/LTjOBODiZf/mxHm0HrYRCIgCoTpP8g1+8EBuN/+L9P9/SyNT7KY f3CjbRNEeoACW7IyZsB5l8Hw/81CglFLot7mgabjSM2CuHusuMRzdQ31vcQ4pER6cMSurn fcI7JCSXt0/WL0f7WeZ9n/YMXmOt83exTnJrsVRv3RzeHYNh0eZ96IjAnPrarqMC8DsFdR vXQEK4lxIQgnSBbowiZfaBva+Uz1kzEZ8LsLxvE68MZZ+YzbDvW/rrLxldee3Q== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:12:59 +0100 Subject: [PATCH 08/12] drm/bridge: imx8mp-hdmi-pvi: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-8-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done by using the drm_bridge::next_bridge pointer. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c b/drivers/gpu/drm= /bridge/imx/imx8mp-hdmi-pvi.c index 3a6f8587a257..15fbb1be07cd 100644 --- a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c +++ b/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c @@ -29,7 +29,6 @@ struct imx8mp_hdmi_pvi { struct drm_bridge bridge; struct device *dev; - struct drm_bridge *next_bridge; void __iomem *regs; }; =20 @@ -45,7 +44,7 @@ static int imx8mp_hdmi_pvi_bridge_attach(struct drm_bridg= e *bridge, { struct imx8mp_hdmi_pvi *pvi =3D to_imx8mp_hdmi_pvi(bridge); =20 - return drm_bridge_attach(encoder, pvi->next_bridge, + return drm_bridge_attach(encoder, pvi->bridge.next_bridge, bridge, flags); } =20 @@ -78,8 +77,8 @@ static void imx8mp_hdmi_pvi_bridge_enable(struct drm_brid= ge *bridge, if (mode->flags & DRM_MODE_FLAG_PHSYNC) val |=3D PVI_CTRL_OP_HSYNC_POL | PVI_CTRL_INP_HSYNC_POL; =20 - if (pvi->next_bridge->timings) - bus_flags =3D pvi->next_bridge->timings->input_bus_flags; + if (pvi->bridge.next_bridge->timings) + bus_flags =3D pvi->bridge.next_bridge->timings->input_bus_flags; else if (bridge_state) bus_flags =3D bridge_state->input_bus_cfg.flags; =20 @@ -108,7 +107,7 @@ imx8mp_hdmi_pvi_bridge_get_input_bus_fmts(struct drm_br= idge *bridge, unsigned int *num_input_fmts) { struct imx8mp_hdmi_pvi *pvi =3D to_imx8mp_hdmi_pvi(bridge); - struct drm_bridge *next_bridge =3D pvi->next_bridge; + struct drm_bridge *next_bridge =3D pvi->bridge.next_bridge; struct drm_bridge_state *next_state; =20 if (!next_bridge->funcs->atomic_get_input_bus_fmts) @@ -157,10 +156,10 @@ static int imx8mp_hdmi_pvi_probe(struct platform_devi= ce *pdev) if (!remote) return -EINVAL; =20 - pvi->next_bridge =3D of_drm_find_bridge(remote); + pvi->bridge.next_bridge =3D of_drm_find_and_get_bridge(remote); of_node_put(remote); =20 - if (!pvi->next_bridge) + if (!pvi->bridge.next_bridge) return dev_err_probe(&pdev->dev, -EPROBE_DEFER, "could not find next bridge\n"); =20 @@ -168,7 +167,7 @@ static int imx8mp_hdmi_pvi_probe(struct platform_device= *pdev) =20 /* Register the bridge. */ pvi->bridge.of_node =3D pdev->dev.of_node; - pvi->bridge.timings =3D pvi->next_bridge->timings; + pvi->bridge.timings =3D pvi->bridge.next_bridge->timings; =20 drm_bridge_add(&pvi->bridge); =20 --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 642EA31A555 for ; Wed, 7 Jan 2026 13:14:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791651; cv=none; b=PXfBIKjKAeSh8g+1zzL6yf3IGIOmqvgJ6AdDGM5evh9iziRU7bWz1QghC45NnjEvdzTs9ufuuakwdzGw3e+qiSgzElbhnpUX04+cNPryoqgc1CK7AP4VjN0r6qQFA2SobnLoh6jIkt7bVEQnC8N5yP6d8y4ddVme+i4DKjfVibM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791651; c=relaxed/simple; bh=VlYqIpOgcAZ/GnWhUGJoNm60ZQ6NDPIn5tE8mxST4wc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M2NCR5tlhz9WBn6zRYOYFDsQbopGLFPXAWxzcT/Ru6J4Zzowk5SszcUqfrcXNSiIbuNurvk982RhM0Ho3YZBHOpIP9PBygbKARhHn9LUo5SRX+GW3uvw3x2wkK0KhdFx3jiQrOksEzx/wlQP2t7nNYGLnSktq8xOYCHQnXLKu6g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=bDoK3M22; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="bDoK3M22" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id B5FF91A26D9; Wed, 7 Jan 2026 13:14:07 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 8944B606F8; Wed, 7 Jan 2026 13:14:07 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 17A51103C873C; Wed, 7 Jan 2026 14:14:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791645; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=DD7fgu52wkuLSP1OrQnM662MYsXz8TXZNWXDDQwQ/Zg=; b=bDoK3M229d3Yqo1LRkdQHgxhHQbMxfyeLBTmDu12N/9RZ6MJP3P6qiab7nOhRVBU//3E5y wfyeYa0Z09xu8A5kkQk7vtUnpxhPqQhg7Y8CotVB9XsdnrEFTo8rdx8WJ4wEcVxXC30U5D R5vyo621898X44DFrSwZCciEPq1J50a2Zp/GIgXrcZ+Nm3ysKLtmr4ZXc9AIEEflcTRfNF ZgLXjRCl0QUVde7h2IxhIjwXaRR87p8Wf8iVklQjCiQn/OcY/yRUMITlIYhz0hgP1pjmt8 x42+VibGMp6GI5KG2ZsWyQ8ttBxePVpxwJ6y7R7EOd36bdOypxpOfsGfAI9HJg== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:13:00 +0100 Subject: [PATCH 09/12] drm/bridge: imx8qxp-ldb: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-9-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done. Signed-off-by: Luca Ceresoli --- drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c b/drivers/gpu/drm/bri= dge/imx/imx8qxp-ldb.c index 122502968927..6b80d798b27a 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c @@ -552,7 +552,7 @@ static int imx8qxp_ldb_parse_dt_companion(struct imx8qx= p_ldb *imx8qxp_ldb) goto out; } =20 - imx8qxp_ldb->companion =3D of_drm_find_bridge(companion_port); + imx8qxp_ldb->companion =3D of_drm_find_and_get_bridge(companion_port); if (!imx8qxp_ldb->companion) { ret =3D -EPROBE_DEFER; DRM_DEV_DEBUG_DRIVER(dev, @@ -679,6 +679,7 @@ static void imx8qxp_ldb_remove(struct platform_device *= pdev) struct ldb *ldb =3D &imx8qxp_ldb->base; =20 ldb_remove_bridge_helper(ldb); + drm_bridge_put(imx8qxp_ldb->companion); =20 pm_runtime_disable(&pdev->dev); } --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 4D9FB32695A for ; Wed, 7 Jan 2026 13:14:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791655; cv=none; b=llLvhn5pTqkoF4gun3fkXvSlqdqf0EpLjddIMphKSPDUQn5Gwo3KrJfCoHfLzObwykbYSYqqKSPhhPoodWUady/r+Zt1lX1YVjchWtDbprRahJ++2RnHiyK1aokv0HMlfuGyZ/GHkHvCAs4kLOQTul4OPbdTyLQA05NPwMYBvys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791655; c=relaxed/simple; bh=p2xqvlTZ38I+1807hP/0GR2fRtEE7HbvzGFnNU82AaM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RdYdnOSeeUZfPGmjQfF8NfLAqbd4SQk6hvWzvp7Uozx7r9liEtclt/0avWie7Gz+a5/IAjG0e4NSdcaWXpDDmXzD7Sjq5lgK9bc5zGSsc2BYtXOVmfdk53J+Jd2c9OuBwbzMCPk5vFuAb8XSnuHxZwc4XlR/Ez7Kvco0nENpmyY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=umQzvQVN; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="umQzvQVN" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id E45601A26D8; Wed, 7 Jan 2026 13:14:11 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id B2687606F8; Wed, 7 Jan 2026 13:14:11 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 80936103C8740; Wed, 7 Jan 2026 14:14:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791650; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=RBqUSZHP9faWTOajqmUZYb1s0xdbzsuq/IoY2BwG7wg=; b=umQzvQVNUyRPS5y24EHZZCJXGxuMgt0642mKmxUXB3y5Sj0BkjvtYs0fk/IItPAwaqaHJw CfaZS1ynKbR0Mu7BixQ6QT3drbM9K8MsK202+MIvpbKadB62+ccfrmJ5EhY1M7dbsZQwio V2iTg3xkRt8E0/PGd3K3KGjrvzhPIKthtTCSmk4381g9U+MZGLNk3x6WQNJYT1cXXdsqf9 GIRuLvxBxHgfcNAlRouxvK+q86uA44tjBZoMDWbdk3+4d3Mx5+u8WqD3rjn20n8p/RPcIq 4awG2rTD5N/kyJk0WD8sxxDvfLHLkfv55sr0tMFyxSjxJ828grX4UdEMAONqRg== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:13:01 +0100 Subject: [PATCH 10/12] drm/bridge: samsung-dsim: samsung_dsim_host_attach: use a temporary variable for the next bridge Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-10-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 In preparation to handle refcounting of the out_bridge, we need to ensure the out_bridge pointer contains either a valid bridge pointer or NULL, not an ERR_PTR. Otherwise calls such as drm_bridge_get/put() would try to redeference an ERR_PTR. As a preliminary cleanup, add a temporary local 'next_bridge' pointer and only copy it in dsi->out_bridge when returning successfully. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/samsung-dsim.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index eabc4c32f6ab..b3003aa49dc3 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1886,6 +1886,7 @@ static int samsung_dsim_host_attach(struct mipi_dsi_h= ost *host, { struct samsung_dsim *dsi =3D host_to_dsi(host); const struct samsung_dsim_plat_data *pdata =3D dsi->plat_data; + struct drm_bridge *next_bridge; struct device *dev =3D dsi->dev; struct device_node *np =3D dev->of_node; struct device_node *remote; @@ -1924,17 +1925,17 @@ static int samsung_dsim_host_attach(struct mipi_dsi= _host *host, =20 panel =3D of_drm_find_panel(remote); if (!IS_ERR(panel)) { - dsi->out_bridge =3D devm_drm_panel_bridge_add(dev, panel); + next_bridge =3D devm_drm_panel_bridge_add(dev, panel); } else { - dsi->out_bridge =3D of_drm_find_bridge(remote); - if (!dsi->out_bridge) - dsi->out_bridge =3D ERR_PTR(-EINVAL); + next_bridge =3D of_drm_find_bridge(remote); + if (!next_bridge) + next_bridge =3D ERR_PTR(-EINVAL); } =20 of_node_put(remote); =20 - if (IS_ERR(dsi->out_bridge)) { - ret =3D PTR_ERR(dsi->out_bridge); + if (IS_ERR(next_bridge)) { + ret =3D PTR_ERR(next_bridge); DRM_DEV_ERROR(dev, "failed to find the bridge: %d\n", ret); return ret; } @@ -1967,6 +1968,7 @@ static int samsung_dsim_host_attach(struct mipi_dsi_h= ost *host, dsi->lanes =3D device->lanes; dsi->format =3D device->format; dsi->mode_flags =3D device->mode_flags; + dsi->out_bridge =3D next_bridge; =20 return 0; } --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (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 AB5D1327213 for ; Wed, 7 Jan 2026 13:14:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791659; cv=none; b=CzUIIrGZaMRH0ff7aPcfbe++a67OJG2mCSsQooMrDERt1kTRiPcQlxUidA5ZiHrIXjD81QrZwYy7ZilEmODTK02gXZW3wxjsUhPpkSDz8QjKBIUgEihb91mEI+vkwhCEU3ag++HHv+b3EsVxWJP59e0HRw7ys/19dlj90x9N+cY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791659; c=relaxed/simple; bh=Dn+K3m4aGl1Z1mJsQB8GZ76aTRlWtd8eO60Wnf7NcR4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hqQBGZrcJrfuthcoFuW/snx6wC5HZlqQTm54UOPfvqtRHYTkLmMYUWBq7TtNBw/mBATk00KK8iNzgeCXJOZxuHbM9XME5pu8zIX0tJAQLOPd2+HUsCnM9dqQHn8q3/dd94SdoItBblYbQ0671zfpt7ggVXO6vnCKYelT8UiEpDk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=EI3r0BgI; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="EI3r0BgI" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 59DA34E41FDE; Wed, 7 Jan 2026 13:14:16 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 2D496606F8; Wed, 7 Jan 2026 13:14:16 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 0D809103C8741; Wed, 7 Jan 2026 14:14:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791654; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=GNPfEiszRR99Hg9zGJV2mQMmw44h7wIXiX9qevh7Kmk=; b=EI3r0BgIwCa6z1A0ET3VIboXK6H3MsW3SdoIC13k1JuWGuCbC+bRcKzA7lCZAyqw5rqEhk eGTYD85kpVdY4gS2ovGjdcgMy283c8IP/jmAasg+ziYNu4sPn0SowIr0+7GWJENDYGBMQ+ mh6ryDV4pRQ4Mn+WR/3vYZ2dFHF9btus1rp3y7a7pIsDIdU74/iKzMNerB3EctqZcqsW7O 1NyzsL1DbbZGnlEmtWkRTvxes6lw9UUrd2lGfPUPh4rmJDMg2nOtccNVvsHbKpAjBPIUSU FOMj+bBQ+P7L0FSW2a2HtVomaSOM0WtcXuFT5XEBGXDL5Vcceu3R6ea6L7cUXQ== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:13:02 +0100 Subject: [PATCH 11/12] drm/bridge: samsung-dsim: samsung_dsim_host_attach: don't use the bridge pointer as an error indicator Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-11-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 In preparation to handle refcounting of the out_bridge, we need to ensure the out_bridge pointer contains either a valid bridge pointer or NULL, not an ERR_PTR. Otherwise calls such as drm_bridge_get/put() would try to redeference an ERR_PTR. Stop using IS_ERR(next_bridge) as an indication of an error, and instead use the 'ret' integer. No functional change. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/samsung-dsim.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index b3003aa49dc3..d6ef64e68623 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1891,7 +1891,7 @@ static int samsung_dsim_host_attach(struct mipi_dsi_h= ost *host, struct device_node *np =3D dev->of_node; struct device_node *remote; struct drm_panel *panel; - int ret; + int ret =3D 0; =20 /* * Devices can also be child nodes when we also control that device @@ -1926,16 +1926,17 @@ static int samsung_dsim_host_attach(struct mipi_dsi= _host *host, panel =3D of_drm_find_panel(remote); if (!IS_ERR(panel)) { next_bridge =3D devm_drm_panel_bridge_add(dev, panel); + if (IS_ERR(next_bridge)) + ret =3D PTR_ERR(next_bridge); } else { next_bridge =3D of_drm_find_bridge(remote); if (!next_bridge) - next_bridge =3D ERR_PTR(-EINVAL); + ret =3D -EINVAL; } =20 of_node_put(remote); =20 - if (IS_ERR(next_bridge)) { - ret =3D PTR_ERR(next_bridge); + if (ret) { DRM_DEV_ERROR(dev, "failed to find the bridge: %d\n", ret); return ret; } --=20 2.52.0 From nobody Mon Feb 9 09:47:03 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 BCC8A328241 for ; Wed, 7 Jan 2026 13:14:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791663; cv=none; b=aAgtbnBLUdK8gHED6UC1Ou+7NYulGvfmrkeWquAmGp0gtpXGfA+MRGx5gZq3hUxncSck5Zy5hr7vLUTQyR7PVgwTurjcRHl3KD8TnzPao5jk5GDcx20yPOLanbSnvl14viq6GAKbgDoyKR9g4DZCwFYOmdZ3p2eHZLdEEfwqweM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767791663; c=relaxed/simple; bh=0zQVGQ/4vnMKUoATvjh9ov37C2kOf7XhFIToOSDaJxc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JTbvswJssqayVSu5cAFLLF/JozWkbUk2kXjbyLWlPP0gLDNK+fXugjZZsbVniaKZly6bo5r6x4sC/qucRf6LxuviRYWKTYMoEwhGRy2d17UfZyKMEAJjzjZ62H1Oz6bnMAASEw7r47mQrEfVFChvLaNihGhu5UwYfuJw+mEK+94= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=VPL/1gSh; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="VPL/1gSh" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 5B0BF1A26D8; Wed, 7 Jan 2026 13:14:20 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 2DFA7606F8; Wed, 7 Jan 2026 13:14:20 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 40055103C821A; Wed, 7 Jan 2026 14:14:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1767791658; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=z8r3jhEkERM/j9025rqzIp7DIcuzLrYHrvr0V9IN768=; b=VPL/1gShHDsKx9jMEWgIqLrVVM7kCFpCsvxC4qNSIJb3iL6T3s56oIpAjStpykLoAUSHAS d7vvs+y0WliMB/fzjw+qOpFrV+zPFwUHp3YLtBXTfZ9Uts98xj6KWgMb7I8xU9Simjifig OIIx3UrO38SoY3MESGgwWiPhD5K9Ez9db6UGwyiVa80VMW0G4k9zN4SzdeEcZi6OROnUM7 434KVNJYaz8Ib/K303k1qdCQlKQ+YpXc54zgN5s2V/jDr1s5rp8tf2sGOWIso0oesLN2qo wb1ZtWfQKj3Iy2amidNZTo2v9ndsRzBt3FV80e+FsBD3rbXJMV7IRHP1E8eadw== From: Luca Ceresoli Date: Wed, 07 Jan 2026 14:13:03 +0100 Subject: [PATCH 12/12] drm/bridge: samsung-dsim: samsung_dsim_host_attach: convert to of_drm_find_and_get_bridge() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-12-283d7bba061a@bootlin.com> References: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> In-Reply-To: <20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Philippe Cornu , benjamin.gaignard@linaro.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Adrien Grassein , Liu Ying , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Inki Dae , Jagan Teki , Marek Szyprowski Cc: Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Luca Ceresoli X-Mailer: b4 0.14.3 X-Last-TLS-Session-Version: TLSv1.3 of_drm_find_bridge() is deprecated. Move to its replacement of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is put when done. Also switch to the drm_bridge::next_bridge pointer. This needs to handle both cases: when of_drm_find_panel() succeeds and when it fails. In the 'else' case (i.e. when of_drm_find_panel() fails), just switch to of_drm_find_and_get_bridge() to ensure the bridge is not freed while in use in the function tail, when it is stored in dsi->bridge.next_bridge. In the 'then' case (i.e. when of_drm_find_panel() succeeds), devm_drm_panel_bridge_add() already increments the refcount using devres which ties the bridge allocation lifetime to the device lifetime, so we would not need to do anything. However to have the same behaviour in both branches take an additional reference here, so that the bridge needs to be put whichever branch is taken without more complicated logic. Ensure to clear the bridge pointer however, to avoid calling drm_bridge_put() on an ERR_PTR. Signed-off-by: Luca Ceresoli Acked-by: Maxime Ripard --- drivers/gpu/drm/bridge/samsung-dsim.c | 19 ++++++++++++------- include/drm/bridge/samsung-dsim.h | 1 - 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index d6ef64e68623..e10c01672efd 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1828,7 +1828,7 @@ static int samsung_dsim_attach(struct drm_bridge *bri= dge, { struct samsung_dsim *dsi =3D bridge_to_dsi(bridge); =20 - return drm_bridge_attach(encoder, dsi->out_bridge, bridge, + return drm_bridge_attach(encoder, dsi->bridge.next_bridge, bridge, flags); } =20 @@ -1886,7 +1886,7 @@ static int samsung_dsim_host_attach(struct mipi_dsi_h= ost *host, { struct samsung_dsim *dsi =3D host_to_dsi(host); const struct samsung_dsim_plat_data *pdata =3D dsi->plat_data; - struct drm_bridge *next_bridge; + struct drm_bridge *next_bridge __free(drm_bridge_put) =3D NULL; struct device *dev =3D dsi->dev; struct device_node *np =3D dev->of_node; struct device_node *remote; @@ -1926,10 +1926,14 @@ static int samsung_dsim_host_attach(struct mipi_dsi= _host *host, panel =3D of_drm_find_panel(remote); if (!IS_ERR(panel)) { next_bridge =3D devm_drm_panel_bridge_add(dev, panel); - if (IS_ERR(next_bridge)) + if (IS_ERR(next_bridge)) { ret =3D PTR_ERR(next_bridge); + next_bridge =3D NULL; // Inhibit the cleanup action on an ERR_PTR + } else { + drm_bridge_get(next_bridge); + } } else { - next_bridge =3D of_drm_find_bridge(remote); + next_bridge =3D of_drm_find_and_get_bridge(remote); if (!next_bridge) ret =3D -EINVAL; } @@ -1969,7 +1973,7 @@ static int samsung_dsim_host_attach(struct mipi_dsi_h= ost *host, dsi->lanes =3D device->lanes; dsi->format =3D device->format; dsi->mode_flags =3D device->mode_flags; - dsi->out_bridge =3D next_bridge; + dsi->bridge.next_bridge =3D drm_bridge_get(next_bridge); =20 return 0; } @@ -1988,8 +1992,6 @@ static int samsung_dsim_host_detach(struct mipi_dsi_h= ost *host, struct samsung_dsim *dsi =3D host_to_dsi(host); const struct samsung_dsim_plat_data *pdata =3D dsi->plat_data; =20 - dsi->out_bridge =3D NULL; - if (pdata->host_ops && pdata->host_ops->detach) pdata->host_ops->detach(dsi, device); =20 @@ -1997,6 +1999,9 @@ static int samsung_dsim_host_detach(struct mipi_dsi_h= ost *host, =20 drm_bridge_remove(&dsi->bridge); =20 + drm_bridge_put(dsi->bridge.next_bridge); + dsi->bridge.next_bridge =3D NULL; + return 0; } =20 diff --git a/include/drm/bridge/samsung-dsim.h b/include/drm/bridge/samsung= -dsim.h index 31d7ed589233..03005e474704 100644 --- a/include/drm/bridge/samsung-dsim.h +++ b/include/drm/bridge/samsung-dsim.h @@ -100,7 +100,6 @@ struct samsung_dsim_plat_data { struct samsung_dsim { struct mipi_dsi_host dsi_host; struct drm_bridge bridge; - struct drm_bridge *out_bridge; struct device *dev; struct drm_display_mode mode; =20 --=20 2.52.0