[PATCH v2 2/6] dt-bindings: pinctrl: Add generic pinctrl for board-level mux chips

Linus Walleij linusw at kernel.org
Fri Feb 27 01:02:33 PST 2026


On Thu, Feb 26, 2026 at 12:55 AM Frank Li <Frank.Li at nxp.com> wrote:

> Add a generic pinctrl binding for board-level pinmux chips that are
> controlled through the multiplexer subsystem.
>
> On some boards, especially development boards, external mux chips are used
> to switch SoC signals between different peripherals (e.g. MMC and UART).
> The mux select lines are often driven by a GPIO expander over I2C,
> as illustrated below:
>
>         ┌──────┐      ┌─────┐
>         │ SOC  │      │     │    ┌───────┐
>         │      │      │     │───►│ MMC   │
>         │      │      │ MUX │    └───────┘
>         │      ├─────►│     │    ┌───────┐
>         │      │      │     │───►│ UART  │
>         │      │      └─────┘    └───────┘
>         │      │         ▲
>         │      │    ┌────┴──────────────┐
>         │ I2C  ├───►│ GPIO Expander     │
>         └──────┘    └───────────────────┘
>
> Traditionally, gpio-hog is used to configure the onboard mux at boot.
> However, the GPIO expander may probe later than consumer devices such as
> MMC. As a result, the MUX might not be configured when the peripheral
> driver probes, leading to initialization failures or data transfer errors.
>
> Introduce a generic pinctrl binding that models the board-level MUX as a
> pin control provider and builds proper device links between the MUX, its
> GPIO controller, and peripheral devices. This ensures correct probe
> ordering and reliable mux configuration.
>
> The implementation leverages the standard multiplexer subsystem, which
> provides broad support for onboard mux controllers and avoids the need for
> per-driver custom MUX handling.
>
> Allow pinctrl-* pattern as node name because this pinctrl device have not
> reg property.
>
> Signed-off-by: Frank Li <Frank.Li at nxp.com>

I think this is smart and elegant.
Reviewed-by: Linus Walleij <linusw at kernel.org>

Yours,
Linus Walleij


More information about the linux-arm-kernel mailing list