From: "Luca Ceresoli" <luca.ceresoli@bootlin.com>
To: "Icenowy Zheng" <zhengxingda@iscas.ac.cn>,
"Dmitry Baryshkov" <dmitry.baryshkov@oss.qualcomm.com>,
"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>,
"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>,
"Sasha Finkelstein" <fnkl.kernel@gmail.com>,
"Janne Grunau" <j@jannau.net>, "Liu Ying" <victor.liu@nxp.com>,
"Douglas Anderson" <dianders@chromium.org>,
"Laurentiu Palcu" <laurentiu.palcu@oss.nxp.com>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Frank Li" <Frank.Li@nxp.com>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
"Fabio Estevam" <festevam@gmail.com>,
"Philipp Zabel" <p.zabel@pengutronix.de>,
"Paul Cercueil" <paul@crapouillou.net>,
"Anitha Chrisanthus" <anitha.chrisanthus@intel.com>,
"Chun-Kuang Hu" <chunkuang.hu@kernel.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Kevin Hilman" <khilman@baylibre.com>,
"Jerome Brunet" <jbrunet@baylibre.com>,
"Martin Blumenstingl" <martin.blumenstingl@googlemail.com>,
"Rob Clark" <robin.clark@oss.qualcomm.com>,
"Dmitry Baryshkov" <lumag@kernel.org>,
"Abhinav Kumar" <abhinav.kumar@linux.dev>,
"Jessica Zhang" <jesszhan0024@gmail.com>,
"Sean Paul" <sean@poorly.run>,
"Marijn Suijten" <marijn.suijten@somainline.org>,
"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
"Sandy Huang" <hjc@rock-chips.com>,
"Heiko Stübner" <heiko@sntech.de>,
"Andy Yan" <andy.yan@rock-chips.com>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Mikko Perttunen" <mperttunen@nvidia.com>,
"Jonathan Hunter" <jonathanh@nvidia.com>,
"Jingoo Han" <jingoohan1@gmail.com>,
"Inki Dae" <inki.dae@samsung.com>,
"Seung-Woo Kim" <sw0312.kim@samsung.com>,
"Kyungmin Park" <kyungmin.park@samsung.com>,
"Krzysztof Kozlowski" <krzk@kernel.org>,
"Alim Akhtar" <alim.akhtar@samsung.com>,
"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
"Tomi Valkeinen" <tomi.valkeinen+renesas@ideasonboard.com>,
"Kieran Bingham" <kieran.bingham+renesas@ideasonboard.com>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Biju Das" <biju.das.jz@bp.renesas.com>,
"Marek Vasut" <marex@denx.de>, "Stefan Agner" <stefan@agner.ch>,
"Jyri Sarha" <jyri.sarha@iki.fi>,
"Michal Simek" <michal.simek@amd.com>
Cc: "Hui Pu" <Hui.Pu@gehealthcare.com>,
"Ian Ray" <ian.ray@gehealthcare.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
<dri-devel@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>,
<asahi@lists.linux.dev>, <imx@lists.linux.dev>,
<linux-arm-kernel@lists.infradead.org>,
<linux-mips@vger.kernel.org>,
<linux-mediatek@lists.infradead.org>,
<linux-amlogic@lists.infradead.org>,
<linux-arm-msm@vger.kernel.org>,
<freedreno@lists.freedesktop.org>,
<linux-rockchip@lists.infradead.org>,
<linux-tegra@vger.kernel.org>,
<linux-samsung-soc@vger.kernel.org>,
<linux-renesas-soc@vger.kernel.org>
Subject: Re: [PATCH v2 00/41] drm/display: bridge-connector: attach encoder to the connector
Date: Tue, 28 Apr 2026 15:39:43 +0200 [thread overview]
Message-ID: <DI4TW9XECX53.17TEZPCSWTH1A@bootlin.com> (raw)
In-Reply-To: <cf2c91396eb3017aa51dd9c840badffddca2f7ec.camel@iscas.ac.cn>
Hello Icenowy,
On Sat Apr 25, 2026 at 5:22 PM CEST, Icenowy Zheng wrote:
> 在 2026-04-23四的 11:16 +0200,Luca Ceresoli写道:
>> This series simplifies using the bridge-connector by removing the
>> need to
>> attach the newly created connector to the encoder.
>>
>> == Series description
>>
>> Currently all users of the bridge-connector must call
>> drm_connector_attach_encoder() immediately after a successful
>> drm_bridge_connector_init().
>>
>> This is an unnecessary burden for users. Move the call to the end of
>> drm_bridge_connector_init() so all callers can be simplified.
>>
>> * Patch 1 adds a drm_connector_attach_encoder() call at the end of
>> drm_bridge_connector_init()
>> * The other patches remove drm_connector_attach_encoder() after all
>> drm_bridge_connector_init() calls, ordered from the simplest ones
>> (only the last one is somewhat non-obvious)
>>
>> The Cc list is huge due to the many drivers touched. I sent v1 to a
>> reduced
>> Cc list to ensure there is an agreement about the overall idea. That
>> seems
>> to be the case, so now it's time to copy all drivers maintainers.
>>
>> It would be nice to apply all of this series at once to avoid
>> duplicated
>> calls to drm_connector_attach_encoder() in the interim. That would be
>> harmless beacuse drm_connector_attach_encoder() is idempotent, but
>> unpleasant.
>>
>> == Additional rationale (for the curious)
>>
>> Besides making the usage of the bridge-connector a bit simpler, this
>> series
>> is in preparation for DRM bridge hotplug. Here's why, feel free to
>> skip if
>> you don't care.
>>
>> The old bridge hotplug proposals I have sent in the past [1] were
>> based on
>> a hotplug-bridge driver to sit between the last fixed bridge and the
>> first
>> hotplugged bridge. Discussion with the community led to the need of
>> removing the hotplug-bridge and let common DRM code handle hotplug.
>> The
>> common place of code that appears the most suitable for hotplug
>> handling is
>> the bridge-connector, which is by now the recommended way to handle
>> connector instantiation after a bridge chain.
>>
>> So I'm in the process of extending the bridge-connector to be the
>> central
>> point to handle bridge hotplug. Turns out the need to call
>> drm_connector_attach_encoder() after drm_bridge_connector_init() has
>> returned is adding big headaches to such work. So I'm send this long
>> but
>> simple series to both simplify bridge-connector usage and remove one
>> obstacle from the bridge hotplug work. This series is relevant by
>> itself
>> anyway.
>>
>> [1]
>> https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-26-9d6f2c9c3058@bootlin.com/
>>
>> == Grand plan
>>
>> This is part of the work to support hotplug of DRM bridges. The grand
>> plan
>> was discussed in [0].
>
> Just see the bridge hotplugging thing, is it possible for DRM drivers
> to declare bridges attached to themselves after this?
>
> Loongson 7A1000 PCH can only output DPI signals, so nearly all products
> with it are shipping with some kind of external bridges, but currently
> drm/loongson does not support them (all display connectors are now seen
> as DPI ones, and connectors behind non-transparent bridges won't work).
>
> The bridges are going to be accessed by the DDC I2C busses of 7A1000,
> and are not declared with device tree (systems with 7A1000 never ship
> with device trees, and Linux currently matches a built-in device tree).
> (Bridges being on the DDC I2C also introduces some dependency for them
> to depend on the drm/loongson driver.)
>
> Loongson have defined some kind of VBIOS declaring what bridge is
> behind, and their non-mainline driver just contains driver codes for
> all possible bridges. (Sui Jingfeng previously tried to mainline such
> practice, and of course it's rejected because of code duplicity.)
I'm afraid your question goes a bit beyond my knowledge, the hotplug work
I'm carrying on is focuses on DT platforms.
My limited understading of non-DT platforms is that a card driver must
instantiate all components and tie them together, which assumes it has to
know them somehow (ACPI, hardcoded, whatever). Others can probably comment
better about this.
As a general principle, when devices can be mixed and matched by the board
designer, hardcoding them is a bad design choice. Think of bad old board
files written in C, which were unmanageable and got replaced exactly by
device tree. So my opinion is that DRM encoders and bridges should know as
little as possible about the following bridge, connector or panel that
follows them.
Luca
--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2026-04-28 13:40 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-23 9:16 [PATCH v2 00/41] drm/display: bridge-connector: attach encoder to the connector Luca Ceresoli
2026-04-23 9:16 ` [PATCH v2 01/41] drm/display: bridge-connector: attach the encoder to the created connector Luca Ceresoli
2026-04-23 9:16 ` [PATCH v2 02/41] drm: adp: remove now-redundant call to drm_connector_attach_encoder() Luca Ceresoli
2026-04-23 9:16 ` [PATCH v2 03/41] drm/bridge: adv7511: " Luca Ceresoli
2026-04-23 9:16 ` [PATCH v2 04/41] drm/bridge: ite-it6263: " Luca Ceresoli
2026-04-27 7:14 ` Liu Ying
2026-04-23 9:16 ` [PATCH v2 05/41] drm/bridge: ti-sn65dsi86: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 06/41] drm/imx/dcss: " Luca Ceresoli
2026-04-27 7:20 ` Laurentiu Palcu
2026-04-23 9:17 ` [PATCH v2 07/41] drm/imx: ldb: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 08/41] drm/imx: parallel-display: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 09/41] drm/imx/lcdc: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 10/41] drm/ingenic: " Luca Ceresoli
2026-04-23 17:59 ` Paul Cercueil
2026-04-23 9:17 ` [PATCH v2 11/41] drm/kmb/dsi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 12/41] drm/mediatek: mtk_dpi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 13/41] drm/mediatek: mtk_dsi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 14/41] drm/meson: encoder_cvbs: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 15/41] drm/meson: encoder_hdmi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 16/41] drm/msm/dp: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 17/41] drm/msm/hdmi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 18/41] drm/omapdrm: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 19/41] rm/rockchip: cdn-dp: " Luca Ceresoli
2026-04-23 12:41 ` Dmitry Baryshkov
2026-04-23 9:17 ` [PATCH v2 20/41] drm/rockchip: rk3066_hdmi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 21/41] drm/tegra: hdmi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 22/41] drm/tegra: rgb: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 23/41] drm/tests: bridge: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 24/41] drm: verisilicon: " Luca Ceresoli
2026-04-24 8:03 ` Icenowy Zheng
2026-04-25 15:15 ` Icenowy Zheng
2026-04-23 9:17 ` [PATCH v2 25/41] drm/exynos: exynos_dp: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 26/41] drm: rcar-du: encoder: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 27/41] drm: renesas: rz-du: rzg2l_du_encoder: " Luca Ceresoli
2026-04-24 8:42 ` Biju Das
2026-04-23 9:17 ` [PATCH v2 28/41] drm/rockchip: analogix_dp: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 29/41] drm/rockchip: dw_dp: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 30/41] drm/rockchip: dw_hdmi_qp: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 31/41] drm/rockchip: inno-hdmi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 32/41] drm/msm/mdp4: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 33/41] drm/msm/dsi: " Luca Ceresoli
2026-04-23 9:17 ` [PATCH v2 34/41] drm/mxsfb/lcdif: " Luca Ceresoli
2026-04-27 7:17 ` Liu Ying
2026-04-23 11:53 ` [PATCH 35/41] drm/rockchip: lvds: " Luca Ceresoli
2026-04-23 12:42 ` Dmitry Baryshkov
2026-04-23 13:19 ` Luca Ceresoli
2026-04-23 11:55 ` [PATCH v2 " Luca Ceresoli
2026-04-23 11:55 ` [PATCH v2 36/41] drm/tidss: " Luca Ceresoli
2026-04-23 11:55 ` [PATCH v2 37/41] drm/tilcdc: " Luca Ceresoli
2026-04-23 11:55 ` [PATCH v2 38/41] drm: zynqmp_kms: " Luca Ceresoli
2026-04-23 11:55 ` [PATCH v2 39/41] drm/imx: " Luca Ceresoli
2026-04-27 7:20 ` Liu Ying
2026-04-23 11:55 ` [PATCH v2 40/41] drm/rockchip: rgb: " Luca Ceresoli
2026-04-23 11:55 ` [PATCH v2 41/41] drm: renesas: shmobile: " Luca Ceresoli
2026-04-23 12:43 ` Dmitry Baryshkov
2026-04-24 7:50 ` Geert Uytterhoeven
2026-04-23 12:45 ` [PATCH v2 00/41] drm/display: bridge-connector: attach encoder to the connector Dmitry Baryshkov
2026-04-23 16:46 ` Luca Ceresoli
2026-04-25 15:22 ` Icenowy Zheng
2026-04-28 13:39 ` Luca Ceresoli [this message]
2026-04-28 14:10 ` Icenowy Zheng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DI4TW9XECX53.17TEZPCSWTH1A@bootlin.com \
--to=luca.ceresoli@bootlin.com \
--cc=Frank.Li@nxp.com \
--cc=Hui.Pu@gehealthcare.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=abhinav.kumar@linux.dev \
--cc=airlied@gmail.com \
--cc=alim.akhtar@samsung.com \
--cc=andrzej.hajda@intel.com \
--cc=andy.yan@rock-chips.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=anitha.chrisanthus@intel.com \
--cc=asahi@lists.linux.dev \
--cc=biju.das.jz@bp.renesas.com \
--cc=chunkuang.hu@kernel.org \
--cc=dianders@chromium.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=festevam@gmail.com \
--cc=fnkl.kernel@gmail.com \
--cc=freedreno@lists.freedesktop.org \
--cc=geert+renesas@glider.be \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=ian.ray@gehealthcare.com \
--cc=imx@lists.linux.dev \
--cc=inki.dae@samsung.com \
--cc=j@jannau.net \
--cc=jbrunet@baylibre.com \
--cc=jernej.skrabec@gmail.com \
--cc=jesszhan0024@gmail.com \
--cc=jingoohan1@gmail.com \
--cc=jonas@kwiboo.se \
--cc=jonathanh@nvidia.com \
--cc=jyri.sarha@iki.fi \
--cc=kernel@pengutronix.de \
--cc=khilman@baylibre.com \
--cc=kieran.bingham+renesas@ideasonboard.com \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=l.stach@pengutronix.de \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=laurentiu.palcu@oss.nxp.com \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=magnus.damm@gmail.com \
--cc=marex@denx.de \
--cc=marijn.suijten@somainline.org \
--cc=martin.blumenstingl@googlemail.com \
--cc=matthias.bgg@gmail.com \
--cc=michal.simek@amd.com \
--cc=mperttunen@nvidia.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=p.zabel@pengutronix.de \
--cc=paul@crapouillou.net \
--cc=rfoss@kernel.org \
--cc=robin.clark@oss.qualcomm.com \
--cc=s.hauer@pengutronix.de \
--cc=sean@poorly.run \
--cc=simona@ffwll.ch \
--cc=stefan@agner.ch \
--cc=sw0312.kim@samsung.com \
--cc=thierry.reding@gmail.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=tomi.valkeinen+renesas@ideasonboard.com \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=tzimmermann@suse.de \
--cc=victor.liu@nxp.com \
--cc=zhengxingda@iscas.ac.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox