[PATCH v4] drm: of: Lookup if child node has panel or bridge

Maxime Ripard maxime at cerno.tech
Fri Mar 4 08:54:45 UTC 2022


Hi Paul,

On Thu, Mar 03, 2022 at 09:26:30PM +0100, Paul Kocialkowski wrote:
> On Wed 02 Feb 22, 21:34, Jagan Teki wrote:
> > Devices can also be child nodes when we also control that device
> > through the upstream device (ie, MIPI-DCS for a MIPI-DSI device).
> > 
> > drm_of_find_panel_or_bridge can lookup panel or bridge for a given
> > device has port and endpoint and it fails to lookup if the device
> > has a child nodes.
> 
> This patch breaks the logicvc drm driver that I'm currently developping.
> The symptom is that drm_of_find_panel_or_bridge now always returns
> -EPROBE_DEFER even after the panel has probed and is running well.
> It seems that the function can no longer find the panel.
> 
> I haven't figured out the details, but reverting your patch makes
> it work again. I suspect other drivers might be affected as well, so
> it would probably be a good idea to revert the patch until the root
> cause is clearly understood and the patch can be adapted accordingly.
> 
> Here is what the device-tree looks like:
> 
> / {
> 	panel: panel-lvds {
> 		compatible = "panel-lvds";
> 
> 		[...]
> 
> 		port {
> 			#address-cells = <1>;
> 			#size-cells = <0>;
> 
> 			panel_input: endpoint at 0 {
> 				reg = <0>;
> 				remote-endpoint = <&logicvc_output>;
> 			};
> 		};
> 	};
> };
> 
> &amba {
> 	logicvc: logicvc at 43c00000 {
> 		compatible = "xylon,logicvc-3.02.a", "syscon", "simple-mfd";
> 		reg = <0x43c00000 0x6000>;
> 
> 		#address-cells = <1>;
> 		#size-cells = <1>;
> 
> 		[...]
> 
> 		logicvc_display: display-engine at 0 {
> 			compatible = "xylon,logicvc-4.01.a-display";
> 
> 			[...]

I think the issue lies in what you left out here: you have another node
aside from the port one, called layers. I *think* the issue is that the
code will now pick up the layers node, and try to use it as a panel,
which will never probe.

I've had a look at all the other bindings though, it seems like this
driver is the only one that can be affected: the anx7625 seems to be the
only other driver that has a child node that isn't either a port or a
panel (aux-bus) but it doesn't use drm_of_find_panel_or_bridge either.

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20220304/4aa2bedf/attachment.sig>


More information about the dri-devel mailing list