[PATCH] drm/bridge: sii902x: add support for DRM_BRIDGE_ATTACH_NO_CONNECTOR

Linus Walleij linus.walleij at linaro.org
Wed Aug 31 12:34:36 UTC 2022


On Mon, Aug 29, 2022 at 3:36 PM Neil Armstrong <narmstrong at baylibre.com> wrote:
> On 25/08/2022 14:48, Linus Walleij wrote:
> > On Wed, Aug 17, 2022 at 3:31 PM Neil Armstrong <narmstrong at baylibre.com> 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 at 0 {
> >>>>           reg = <0>;
> >>>>           dvi_bridge_in_ct: endpoint {
> >>>>               remote-endpoint = <&clcd_pads_ct>;
> >>>>           };
> >>>>       };
> >>>>       port at 1 {
> >>>>           reg = <1>;
> >>>>           dvi_bridge_in_mb: endpoint {
> >>>>               remote-endpoint = <&clcd_pads_mb>;
> >>>>           };
> >>>>       };
> >>>> };
> >>>>
> >>>> bindings:
> >>>>     ports:
> >>>>       $ref: /schemas/graph.yaml#/properties/ports
> >>>>
> >>>>       properties:
> >>>>         port at 0:
> >>>>           $ref: /schemas/graph.yaml#/properties/port
> >>>>           description: Parallel RGB input port
> >>>>
> >>>>         port at 1:
> >>>>           $ref: /schemas/graph.yaml#/properties/port
> >>>>           description: HDMI output port
> >>>>
> >>>>         port at 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?
>
> Who, me ?

Whoever you were referring to with the "temporary fix" :D

> > 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.
>
> The proper fix would be the other way around, adding a mux bridge before the sii902x
> returning the next bridge or nothing to the right controller.

Hm you mean the vexpress PLD should be a bridge and not just
some magic registers poked by the DRM driver?

OK fair point. But it will need proper representing in the DT then,
I guess that is what you mean by "DT gets fixed". It's not just
the DT that needs fixing then but also the driver(s).

Yours,
Linus Walleij


More information about the dri-devel mailing list