Re: [PATCH v3 2/7] dt-bindings: display: add a device tree supplied boot logo

From: Màxim Pedraza Padilla

Date: Fri Sep 25 2026 - 04:58:31 EST


Hi Rob,

> Documentation/devicetree/bindings/display/boot-logo-clut224.example.dtb: chosen: 'logo' does not match any of the regexes: '^framebuffer', '^pinctrl-[0-9]+$'
> from schema $id: http://devicetree.org/schemas/chosen.yaml

Expected: chosen.yaml only allows framebuffer nodes under /chosen. You
closed pull request 204 until the binding settles, so I will send a new
one for the node as it ends up.

> The base for the series is generally the latest rc1.

Noted.

The binding is going to change, though. Thomas asked for the logo to go
through the DRM splash client [1] rather than fbdev [2], and that client
takes BMP images. Before reworking it, would a BMP in a property be
acceptable to you:

chosen {
logo {
compatible = "boot-logo";
image = /incbin/("logo.bmp");
logo-position = <(-1) (-1)>;
};
};

with memory-region as the alternative to image, exactly one of the two,
or would you rather have the pixels described the way simple-framebuffer
does, with width, height, stride and format? The BMP keeps the kernel
side small, since the client already parses BMP headers, and the header
gives it a size to check against the property length. The raw form is
closer to what DT already describes, at the cost of a second drawing
path in the client.

[1] https://lore.kernel.org/dri-devel/20260510-drm_client_splash-v3-0-a9aee9f0b2fc@xxxxxxxx/
[2] https://lore.kernel.org/all/64e273d4-2660-437d-8871-e2bfa3c377c9@xxxxxxx/

Max

El jue, 24 sept 2026 a las 13:49, Rob Herring (Arm)
(<robh@xxxxxxxxxx>) escribió:
>
>
> On Wed, 23 Sep 2026 22:10:30 +0200, Max Pedraza wrote:
> > Embedded products frequently need a product specific boot logo. Today that
> > means pointing CONFIG_LOGO_LINUX_CLUT224_FILE at a different image, which
> > bakes it into the kernel image: a change of branding, or a second product
> > sharing the same board support package, requires a separate kernel build,
> > and requalifying that kernel for what is a cosmetic change.
> >
> > Add a binding for a "boot-logo-clut224" node, which carries the logo
> > in the same paletted format the built-in CLUT224 logos already use, plus a
> > few optional properties describing where on the screen it is drawn.
> >
> > The node lives under /chosen because a logo is configuration handed over by
> > firmware rather than a description of the hardware. Open Firmware, which
> > the device tree descends from, carried a boot logo in the same spirit as
> > the oem-logo variable under /options, and simple-framebuffer nodes live
> > under /chosen today for the same reason.
> >
> > The palette size is derived from the length of the "clut" property rather
> > than spelled out separately, and "data" holds plain palette indices; the
> > 32 entry offset the frame buffer layer reserves for the console is an
> > implementation detail and is applied by the kernel, not by the binding.
> >
> > "logo-position" takes -1 on an axis to mean centre on that axis rather than
> > carrying a separate boolean for it. A boolean can only centre both axes or
> > neither, and next to explicit coordinates it would have to override them
> > silently when a device tree gave both.
> >
> > A rotation turns the logo, not the screen. "logo-position" and
> > "logo-offset" are screen pixels whatever "logo-rotation" says, and a
> > quarter turn only changes how much room the logo takes up. Placing the
> > logo in a frame that turns with it would make the same pair of
> > coordinates mean different places on the same panel, decided by a
> > property that is meant to describe the image.
> >
> > Every coordinate is bounded. The kernel clamps them anyway, since it cannot
> > trust a device tree, but a value that cannot possibly be meant is worth
> > catching in dtbs_check rather than on the panel.
> >
> > Signed-off-by: Max Pedraza <maximpedraza@xxxxxxxxx>
> > ---
> > .../bindings/display/boot-logo-clut224.yaml | 135 ++++++++++++++++++
> > MAINTAINERS | 1 +
> > 2 files changed, 136 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/display/boot-logo-clut224.yaml
> >
>
> My bot found errors running 'make dt_binding_check' on your patch:
>
> yamllint warnings/errors:
>
> dtschema/dtc warnings/errors:
> Documentation/devicetree/bindings/display/boot-logo-clut224.example.dtb: chosen: 'logo' does not match any of the regexes: '^framebuffer', '^pinctrl-[0-9]+$'
> from schema $id: http://devicetree.org/schemas/chosen.yaml
>
> doc reference errors (make refcheckdocs):
>
> See https://patchwork.kernel.org/project/devicetree/patch/20260923201035.51007-3-maximpedraza@xxxxxxxxx
>
> The base for the series is generally the latest rc1. A different dependency
> should be noted in *this* patch.
>
> If you already ran 'make dt_binding_check' and didn't see the above
> error(s), then make sure 'yamllint' is installed and dt-schema is up to
> date:
>
> pip3 install dtschema --upgrade
>
> Please check and re-submit after running the above command yourself. Note
> that DT_SCHEMA_FILES can be set to your schema file to speed up checking
> your schema. However, it must be unset to test all examples with your schema.
>