On Tue, Dec 02, 2025 at 09:09:47AM +0100, Marcus Folkesson wrote:
This was a RFC on how to implement a feature to have different bus
speeds on different channels with an I2C multiplexer/switch.
As no major complaints on the design came up during the review, I
decided to submit the series without the RFC tag.
The benefit with this feature is that you may group devices after
the fastest bus speed they can handle.
A real-world example is that you could have e.g. a display running @400kHz
and a smart battery running @100kHz using the same I2C controller.
There are many corner cases where this may cause a problem for some
hardware topologies. I've tried to describe those I could think of
in the documentation, see Patch #5.
E.g. one risk is that if the mux driver does not disconnect channels
when Idle, this may cause a higher frequency to "leak" through to
devices that are supposed to run at lower bus speed.
This is not only a "problem" for changing bus speed but could also be
an issue for potential address conflicts.
The implementation is split up into several patches:
Patch #1 Introduce a callback for the i2c controller to set bus speed
Patch #2 Introduce functionality to adjust bus speed depending on mux
channel.
Patch #3 Cleanup i2c-davinci driver a bit to prepare it for set_clk_freq
Parch #4 Implement set_clk_freq for the i2c-davinci driver
Parch #5 Update documentation with this feature
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---
Hi all,
This series has been in its final shape for a while now.
With multiple resends and pings on this series for the last four
months, I think everyone interested has had the chance to review it.
Wolfram Sang, could you please take a look on this series and consider
pick it up for merging?
Thank you in advance,
Marcus Folkesson