On Wed, Aug 17, 2022 at 3:31 PM Neil Armstrong <narmstrong@xxxxxxxxxxxx> wrote: > On 15/08/2022 02:15, Dmitry Osipenko wrote: > > 08.08.2022 12:51, Neil Armstrong пишет: > >> On 08/08/2022 11:15, Neil Armstrong wrote: > >>>> This patch broke ARM/QEMU vexpress display because of_drm_find_bridge() > >>>> always fail with -EPROBE_DEFER. Reverting this patch returns display > >>>> back. Please fix or revert, thanks in advance. > >>> > >>> Can you share a QEMU cmdline to reproduce ? > >> > >> Actually the vexpress DT has multiple input ports instead of a single > >> input port at @0 > >> and an output port at @1 like documented in the bindings: > >> > >> vexpress-v2m.dtsi#L303-L307: > >> ports { > >> #address-cells = <1>; > >> #size-cells = <0>; > >> > >> /* > >> * Both the core tile and the motherboard routes their output > >> * pads to this transmitter. The motherboard system controller > >> * can select one of them as input using a mux register in > >> * "arm,vexpress-muxfpga". The Vexpress with the CA9 core tile is > >> * the only platform with this specific set-up. > >> */ > >> port@0 { > >> reg = <0>; > >> dvi_bridge_in_ct: endpoint { > >> remote-endpoint = <&clcd_pads_ct>; > >> }; > >> }; > >> port@1 { > >> reg = <1>; > >> dvi_bridge_in_mb: endpoint { > >> remote-endpoint = <&clcd_pads_mb>; > >> }; > >> }; > >> }; > >> > >> bindings: > >> ports: > >> $ref: /schemas/graph.yaml#/properties/ports > >> > >> properties: > >> port@0: > >> $ref: /schemas/graph.yaml#/properties/port > >> description: Parallel RGB input port > >> > >> port@1: > >> $ref: /schemas/graph.yaml#/properties/port > >> description: HDMI output port > >> > >> port@3: > >> $ref: /schemas/graph.yaml#/properties/port > >> description: Sound input port > >> > >> The patch is conform to the bindings, the DT was working but is actually > >> not valid. > > > > I haven't looked closely at how to fix this properly, but if we can fix > > it using of_machine_is_compatible("arm,vexpress") workaround in the > > driver, then it will be good enough at least as a temporal fix, IMO. > > If other maintainers are ok with that, it can be temporary fix until the DT gets fixed. That's fine with me, will you send a patch? I don't know how you expect the DT to get "fixed" though. The hardware looks like this, it's maybe not the most elegant electronics design but it exists, so... I wrote this DT with two inputs, see commit f1fe12c8bf332, the code handling this awkward mux is part of the DRM driver, see drivers/gpu/drm/pl111/pl111_versatile.c function pl111_vexpress_clcd_init() for an idea of how it works. Yours, Linus Walleij