Hello, On Tue Sep 29, 2026 at 9:27 AM CEST, Luca Ceresoli wrote: > Hello Arnd, > > On Mon Sep 28, 2026 at 6:04 PM CEST, Arnd Bergmann wrote: >> From: Arnd Bergmann <[email protected]> >> >> The devm_drm_of_get_bridge() declaration moved to drm_panel.h, but >> not all callers include this, which leads to build failures in >> some configurations: >> >> drivers/gpu/drm/imx/lcdc/imx-lcdc.c: In function 'imx_lcdc_probe': >> drivers/gpu/drm/imx/lcdc/imx-lcdc.c:404:18: error: implicit declaration of >> function 'devm_drm_of_get_bridge' [-Wimplicit-function-declaration] >> 404 | bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0); >> | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/verisilicon/vs_bridge.c: In function 'vs_bridge_init': >> drivers/gpu/drm/verisilicon/vs_bridge.c:306:16: error: implicit declaration >> of function 'devm_drm_of_get_bridge' [-Wimplicit-function-declaration] >> 306 | next = devm_drm_of_get_bridge(drm_dev->dev, >> drm_dev->dev->of_node, >> | ^~~~~~~~~~~~~~~~~~~~~~ >> >> Include the new header in all files that need it. >> >> Fixes: aa8a8c7e4641 ("drm/bridge: panel: move all code to drm_panel.c") >> Signed-off-by: Arnd Bergmann <[email protected]> > > Thanks for the very quick reaction to this regression! However I think we > should fix it differently. > > I had definitely build-tested most if not all these drivers, and also > runtime tested a few. Now I realized the build failure actually happens > only in !OF defconfigs which I haven't build-tested (sorry about > that!). Here's why: > > * the affected drivers (all or most of them) include drm_of.h > * drm_of.h does: > #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DRM_PANEL_BRIDGE) > #include <linux/of.h> > #include <drm/drm_bridge.h> > #include <drm/drm_panel.h> > #endif > * DRM_PANEL_BRIDGE is always set when DRM is set, so not a problem > * drivers which don't depend on OF and don't include drm_panel.h now fail > > Most of the drivers changed by this patch do 'depend on OF', so they are > not affected. So the patch could be trimmed significantly. But still I'm > not in favor of including drm_panel.h in the remaining drivers, because: > > * in the first place most/all of these drivers are now supposed to not use > the drm_panel API anymore; thsy should just use the drm_bridge API > > * devm_drm_of_get_bridge() is now a deprecated [0], complicated way of > calling of_drm_get_bridge_by_endpoint(), which is rightfully in > drm_bridge.h > * for this reason Documentation/drm/todo.rst says it must be removed [1] > * removal is easy, so I plan to do it in a few weeks globally > * after the removal all these #include <drm_panel.h> would have to > be removed, but some might easily be forgotten > > So I see two option for a better fix: > > * Option 1 -- fix the really affected drivers by switching from the > deprecated API to the one they recommended one. Based on quick analysis > there are about 6. > > * Option 2 -- a quick surgical fix: > > In drm_of.h: > > #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DRM_PANEL_BRIDGE) > #include <linux/of.h> > #include <drm/drm_bridge.h> > -#include <drm/drm_panel.h> > #endif > +#include <drm/drm_panel.h> /* Temporary for *_of_get_bridge() */ > > This can easily be tracked and reverted once all > devm_drm_of_get_bridge() users are converted to > of_drm_get_bridge_by_endpoint(). > > I'm working right now on option 1, hoping to get a series in a few hours > from now. I can switch to option 2 in case of unexpected issues with option > 1, or if a fix "really right now" is wanted.
Done [0]. I found only 3 drivers affected, but I fixed all the others that build without OF. [0] https://lore.kernel.org/r/20260929-drm-fix-of_get_bridge-build-regression-v1-0-ccb7e602d...@bootlin.com Luca -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
