Re: [PATCH 0/5] pinctrl: Add generic pinctrl for board-level mux chips
From: Linus Walleij
Date: Thu Feb 19 2026 - 18:12:49 EST
Hi Frank,
On Thu, Feb 19, 2026 at 11:24 PM Frank Li <Frank.Li@xxxxxxx> 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
>
> Signed-off-by: Frank Li <Frank.Li@xxxxxxx>
I kind of like what I see here. :)
This makes a lot of sense: it uses muxes, and it muxes pins.
So that is the appropriate description, pinmuxes using
muxes (in turn controlled by GPIOs).
I just need to have buy-in from DT binding
maintainers and the authors of the mux core that this is a good
idea.
Yours,
Linus Walleij