From: Marcus Folkesson <marcus.folkesson@gmail.com>
To: Peter Rosin <peda@lysator.liu.se>
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
Michael Hennerich <michael.hennerich@analog.com>,
Bartosz Golaszewski <brgl@bgdev.pl>,
Andi Shyti <andi.shyti@kernel.org>,
Andy Shevchenko <andriy.shevchenko@intel.com>,
Bartosz Golaszewski <brgl@kernel.org>,
linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v11 2/7] i2c: mux: add idle_state property to i2c_mux_core
Date: Wed, 15 Jul 2026 21:02:56 +0200 [thread overview]
Message-ID: <alfZYOKCjf6CKN6i@gmail.com> (raw)
In-Reply-To: <e2d4fdf8-4dae-43dc-95ae-b9aa1884fdf5@lysator.liu.se>
Hi Peter,
On Tue, Jul 14, 2026 at 01:29:01PM +0200, Peter Rosin wrote:
> Hi Marcus,
>
> Sorry for the very late feedback.
>
> On 2026-07-13 09:19, Marcus Folkesson wrote:
> > Muxes treat their channels differently when idle.
> > Let the mux core have this information to make it available for
> > internal use.
> > Reuse the same state values used by CONFIG_MULTIPLEXER.
> >
> > Possible idle states are:
> > - MUX_IDLE_AS_IS: Leave channels as is when idle
> > - MUX_IDLE_DISCONNECT: Disconnect channel (set HiZ when idle)
> > - <n>: Enable channel n when idle
> >
> > Default value is set to MUX_IDLE_AS_IS.
> >
> > Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
> > ---
> > drivers/i2c/i2c-mux.c | 1 +
> > include/linux/i2c-mux.h | 26 ++++++++++++++++++++++++++
> > 2 files changed, 27 insertions(+)
> >
> > diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
> > index 681a201c239b..edf16683dc83 100644
> > --- a/drivers/i2c/i2c-mux.c
> > +++ b/drivers/i2c/i2c-mux.c
> > @@ -247,6 +247,7 @@ struct i2c_mux_core *i2c_mux_alloc(struct i2c_adapter *parent,
> > muxc->select = select;
> > muxc->deselect = deselect;
> > muxc->max_adapters = max_adapters;
> > + muxc->idle_state = MUX_IDLE_AS_IS;
>
> This is insufficient. AS_IS is simply not an adequate default.
>
> For i2c-mux-gpmux, there is currently no way to dig out what
> the idle state is, as it is not exposed by the mux subsystem. For
> i2c-mux-gpio, the idle state depends on both the idle-state /and/
> the i2c-mux-idle-disconnect props. For i2c-mux-pca954x the idle
> state can be adjusted at runtime. Etc.
>
> In short, idle state handling is a bit diverse, and I think this
> adds to that mess.
>
> I think it will be a bit of work to come up with a scheme for the
> I2C mux core to accurately keep track of what the idle state is.
> One way to deal with that is to introduce a new "unknown" value
> that can be the default for all drivers that has not yet figured
> out how to feed the correct idle state to the core.
>
> And that hints at why I think reusing the mux.h bindings #include
> is bad. The mux subsystem simply has no need for an unknown state,
> and adding that to mux.h is therefore out of place.
I see.
I think I will introduce a few defines in i2c-mux.c then;
#define I2C_MUX_IDLE_UNKNOWN (-1)
#define I2C_MUX_IDLE_AS_IS (-2)
#define I2C_MUX_IDLE_DISCONNECT (-3)
[...]
struct i2c_mux_core {
[...]
/*
* The mux state to use when not active.
* Possible idle states are:
* - I2C_MUX_IDLE_UNKNOWN: Unknown idle state
* - I2C_MUX_IDLE_AS_IS: Leave channels as is when idle
* - I2C_MUX_IDLE_DISCONNECT: Disconnect channel (set HiZ when idle)
* - <n>: Enable channel n (starting from 0) when idle"
*
* Default value is set to I2C_MUX_IDLE_UNKNOWN.
*/
int idle_state;
[...]
};
Would that be a better approach?
Thanks,
Marcus Folkesson
next prev parent reply other threads:[~2026-07-15 19:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-13 7:19 [PATCH v11 0/7] I2C Mux per channel bus speed Marcus Folkesson
2026-07-13 7:19 ` [PATCH v11 1/7] i2c: core: add callback to change bus frequency Marcus Folkesson
2026-07-13 16:10 ` Andy Shevchenko
2026-07-13 16:11 ` Andy Shevchenko
2026-07-13 7:19 ` [PATCH v11 2/7] i2c: mux: add idle_state property to i2c_mux_core Marcus Folkesson
2026-07-14 8:49 ` Andy Shevchenko
2026-07-14 11:29 ` Peter Rosin
2026-07-15 19:02 ` Marcus Folkesson [this message]
2026-07-19 12:39 ` Peter Rosin
2026-07-19 14:07 ` Marcus Folkesson
2026-07-13 7:19 ` [PATCH v11 3/7] i2c: mux: add support for per channel bus frequency Marcus Folkesson
2026-07-13 7:20 ` [PATCH v11 4/7] i2c: davinci: calculate bus freq from Hz instead of kHz Marcus Folkesson
2026-07-13 7:20 ` [PATCH v11 5/7] i2c: davinci: add support for setting bus frequency Marcus Folkesson
2026-07-13 7:20 ` [PATCH v11 6/7] i2c: mux: ltc4306: set correct idle_state in i2c_mux_core Marcus Folkesson
2026-07-13 7:20 ` [PATCH v11 7/7] docs: i2c: i2c-topology: add section about bus speed Marcus Folkesson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alfZYOKCjf6CKN6i@gmail.com \
--to=marcus.folkesson@gmail.com \
--cc=andi.shyti@kernel.org \
--cc=andriy.shevchenko@intel.com \
--cc=brgl@bgdev.pl \
--cc=brgl@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.hennerich@analog.com \
--cc=peda@lysator.liu.se \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.