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 <[email protected]>
> ---
> .../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/[email protected]
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.