[PATCH v2 3/4] scmi: pinctrl: add pinctrl driver for SCMI
Linus Walleij
linusw at kernel.org
Tue Mar 24 14:19:34 CET 2026
On Wed, Mar 11, 2026 at 8:41 PM Dan Carpenter <dan.carpenter at linaro.org> wrote:
> scmi_pinctrl: protocol at 19 {
> reg = <0x19>;
> pinmux1: pinmux_test {
> pinmux = <0 1 0xFFFFFFFF 18 1
> 0 2 0xFFFFFFFF 18 1
> 0 3 0xFFFFFFFF 18 1>;
> function = "f_gpio1";
> groups = "grp_1", "grp_3";
> };
> };
>
> Under linux the pinctrl subsystem will parse the function and group
> properties and use that to handle muxing. However, under u-boot the
> pin muxing is done using the "pinmux" property, which feeds raw SCMI
> pinctrl PINCTRL_SETTINGS_CONFIGURE commands to the server. The
> numbers are: selector, identifier, function_id, config_type, and
> config_value. In the example above, it sets pins 1, 2, and 3 to 1.
> The linux-kernel ignores this pinmux property.
This whole thing is a bit of a hack and shortcut to make hard things
simple isn't it?
The information encoded in the pinmux property is identical to what
is found in the function+groups property and that is why Linux does
not use it.
Also device trees looking like this will not pass validation or be
accepted into Linux, as it is not part of the official bindings, nor
will it be, so it creates a necessity to maintain forked device trees.
If U-Boot want to do things this way, I understand it: it does make
the pinctrl default set-up simpler, especially it makes the code
smaller and easier to write, which is something bootloaders like.
I really can't endorse it though: with deviant device trees and
information stored in paralllel in two places we create a
maintenance hurdle.
Yours,
Linus Walleij
More information about the U-Boot
mailing list