Thread (17 messages) 17 messages, 4 authors, 24d ago

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

flat view

From: Rob Herring (Arm) <robh@kernel.org>
Date: 2026-09-24 11:49:17
Also in: dri-devel, linux-devicetree, lkml

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 <redacted>
---
 .../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@gmail.com

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help