devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] Add Mule I2C multiplexer support
@ 2024-04-26 16:49 Farouk Bouabid
  2024-04-26 16:49 ` [PATCH 1/7] i2c: mux: add the ability to share mux-address with child nodes Farouk Bouabid
                   ` (7 more replies)
  0 siblings, 8 replies; 20+ messages in thread
From: Farouk Bouabid @ 2024-04-26 16:49 UTC (permalink / raw)
  To: Wolfram Sang, Peter Rosin, Andi Shyti, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Quentin Schulz, Heiko Stuebner
  Cc: linux-i2c, linux-kernel, devicetree, linux-arm-kernel,
	linux-rockchip, Farouk Bouabid

Mule is an mcu that emulates a set of i2c devices which are reacheable
through an i2c-mux.

The emulated devices share a single i2c address with the mux itself where
the requested register is what determines which logic is executed (mux or
device):

1- The devices on the mux can be selected (mux function) by writing the
appropriate device number to an i2c config register (0xff) that is not
used by any device logic.

2- Any access to a register other than the config register will be
handled by the previously selected device.

      +-------------------------------------------------------+
      |  Mule                                                 |
      |        +---------------+                              |
    ----+-(1)->|Config register|-----+                        |
      | |      +---------------+     |                        |
      | |                            V_                       |
      | |                            |  \          +--------+ |
      | |                            |   \-------->| dev #0 | |
      | |                            |   |         +--------+ |
      | |                            | M |-------->| dev #1 | |
      | +-----------(2)------------->| U |         +--------+ |
      |                              | X |-------->| dev #2 | |
      |                              |   |         +--------+ |
      |                              |   /-------->| dev #3 | |
      |                              |__/          +--------+ |
      +-------------------------------------------------------+

The current i2c-mux implementation does not allow the mux to share the i2c
address of a child device. As a workaround, when creating each i2c child
adapter we do not assign the parent adapter to avoid the address-match with
the mux.

This patch-series adds support for this multiplexer. Mule is integrated
as part of rk3399-puma, px30-ringneck, rk3588-tiger and rk3588-jaguar
boards.

Signed-off-by: Farouk Bouabid <farouk.bouabid@theobroma-systems.com>
---
Farouk Bouabid (7):
      i2c: mux: add the ability to share mux-address with child nodes
      dt-bindings: i2c: mux: mule: add dt-bindings for mule i2c multiplexer
      i2c: muxes: add support for mule i2c multiplexer
      arm64: dts: rockchip: add mule i2c mux (0x18) on rk3399-puma
      arm64: dts: rockchip: add mule i2c mux (0x18) on rk3588-tiger
      arm64: dts: rockchip: add mule i2c mux (0x18) on px30-ringneck
      arm64: dts: rockchip: add mule i2c mux (0x18) on rk3588-jaguar

 .../devicetree/bindings/i2c/i2c-mux-mule.yaml      |  80 +++++++++++
 arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi    |  20 ++-
 arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi      |  20 ++-
 arch/arm64/boot/dts/rockchip/rk3588-jaguar.dts     |  19 ++-
 arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi     |  19 ++-
 drivers/i2c/i2c-mux.c                              |  10 +-
 drivers/i2c/muxes/Kconfig                          |  11 ++
 drivers/i2c/muxes/Makefile                         |   1 +
 drivers/i2c/muxes/i2c-mux-mule.c                   | 157 +++++++++++++++++++++
 include/linux/i2c-mux.h                            |   1 +
 10 files changed, 327 insertions(+), 11 deletions(-)
---
base-commit: c85af715cac0a951eea97393378e84bb49384734
change-id: 20240404-dev-mule-i2c-mux-9103cde07021

Best regards,
-- 
Farouk Bouabid <farouk.bouabid@theobroma-systems.com>


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2024-05-03 16:20 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-26 16:49 [PATCH 0/7] Add Mule I2C multiplexer support Farouk Bouabid
2024-04-26 16:49 ` [PATCH 1/7] i2c: mux: add the ability to share mux-address with child nodes Farouk Bouabid
2024-04-29 15:46   ` Peter Rosin
2024-05-02 15:01     ` Farouk Bouabid
2024-05-03  5:30       ` Peter Rosin
2024-05-03 16:20         ` Quentin Schulz
2024-04-26 16:49 ` [PATCH 2/7] dt-bindings: i2c: mux: mule: add dt-bindings for mule i2c multiplexer Farouk Bouabid
2024-04-26 18:22   ` Rob Herring
2024-05-02 12:21     ` Farouk Bouabid
2024-04-29  6:27   ` Krzysztof Kozlowski
2024-04-29 13:56   ` Rob Herring
2024-05-02 12:14     ` Farouk Bouabid
2024-04-26 16:49 ` [PATCH 3/7] i2c: muxes: add support " Farouk Bouabid
2024-04-29  6:33   ` Krzysztof Kozlowski
2024-05-02 12:31     ` Farouk Bouabid
2024-04-26 16:49 ` [PATCH 4/7] arm64: dts: rockchip: add mule i2c mux (0x18) on rk3399-puma Farouk Bouabid
2024-04-26 16:49 ` [PATCH 5/7] arm64: dts: rockchip: add mule i2c mux (0x18) on rk3588-tiger Farouk Bouabid
2024-04-26 16:49 ` [PATCH 6/7] arm64: dts: rockchip: add mule i2c mux (0x18) on px30-ringneck Farouk Bouabid
2024-04-26 16:49 ` [PATCH 7/7] arm64: dts: rockchip: add mule i2c mux (0x18) on rk3588-jaguar Farouk Bouabid
2024-04-29 14:41 ` [PATCH 0/7] Add Mule I2C multiplexer support Rob Herring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).