RE: [PATCH v4 0/2] mux: gpio-mux: add enable GPIO support

From: Miclaus, Antoniu

Date: Tue Jan 20 2026 - 09:28:46 EST


> -----Original Message-----
> From: Linus Walleij <linusw@xxxxxxxxxx>
> Sent: Monday, January 19, 2026 1:19 AM
> To: Miclaus, Antoniu <Antoniu.Miclaus@xxxxxxxxxx>
> Cc: Peter Rosin <peda@xxxxxxxxxx>; Rob Herring <robh@xxxxxxxxxx>; Krzysztof
> Kozlowski <krzk+dt@xxxxxxxxxx>; Conor Dooley <conor+dt@xxxxxxxxxx>;
> Srinivas Kandagatla <srini@xxxxxxxxxx>; Johan Hovold
> <johan+linaro@xxxxxxxxxx>; David Lechner <dlechner@xxxxxxxxxxxx>;
> devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v4 0/2] mux: gpio-mux: add enable GPIO support
>
> [External]
>
> Hi Antoniu,
>
> thanks for your patch!
>
> On Fri, Jan 16, 2026 at 4:38 PM Antoniu Miclaus
> <antoniu.miclaus@xxxxxxxxxx> wrote:
>
> > This series adds optional enable GPIO support to the gpio-mux driver.
> > The enable GPIO allows the multiplexer to be disabled before changing
> > address lines and re-enabled after, preventing glitches that could
> > briefly activate unintended channels during transitions.
> >
> > This feature is useful for devices like the Analog Devices ADG2404
> > (4:1 mux) that require enable control for glitch-free operation. The
> > binding documentation now includes ADG2404 as a supported device with
> > a dedicated example.
>
> Overall the idea is sound!
>
> I don't know if "enable" is a good name for this GPIO though,
> because as I understand it the signal passes through the mux even
> if it is "disabled"?
>
> I would call it "hold" and make it active low if it holds the mux
> state when this signal is low.
>
> hold-gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
>
> this will have the intended semantic.
>

Thanks for the feedback!

Looking at the ADG2404 truth table, "enable" appears
to be semantically correct:

EN A1 A0 S1 S2 S3 S4
0 X X Off Off Off Off
1 0 0 On Off Off Off
1 0 1 Off On Off Off
1 1 0 Off Off On Off
1 1 1 Off Off Off On

When EN=0, all switches are OFF and no signal passes through
the mux - it's truly disabled. When EN=1, exactly one channel is
selected based on the address pins A1/A0.

The implementation uses this to:
- Keep all channels disconnected when idle (EN=0)
- Disable during address changes to prevent glitches
- Enable to activate the selected channel

Looking forward to your feedback.

Regards,
Antoniu

> Yours,
> Linus Walleij