[PATCH v2 0/7] Add Mule I2C multiplexer support
Rob Herring (Arm)
robh at kernel.org
Mon May 6 13:40:34 PDT 2024
On Mon, 06 May 2024 13:37:51 +0200, Farouk Bouabid wrote:
> Mule is an mcu that emulates a set of i2c devices which are reachable
> through an i2c-mux.
>
> The emulated devices share a single i2c address with the mux core itself
> where the requested register is what determines which logic is executed
> (muxing logic or device logic):
>
> 1- The devices on the mux core can be selected (muxing functionality) 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 core to use the
> i2c address of a child device. As a workaround, A new i2c-adapter quirk is
> introduced to skip the check for conflict between a child device and the
> mux core i2c address when adding the child device.
>
> This patch-series adds support for this multiplexer. Mule is integrated
> as part of rk3399-puma, px30-ringneck, rk3588-tiger and rk3588-jaguar
> boards.
>
> To: Wolfram Sang <wsa+renesas at sang-engineering.com>
> To: Peter Rosin <peda at axentia.se>
> To: Andi Shyti <andi.shyti at kernel.org>
> To: Rob Herring <robh at kernel.org>
> To: Krzysztof Kozlowski <krzysztof.kozlowski+dt at linaro.org>
> To: Conor Dooley <conor+dt at kernel.org>
> To: Quentin Schulz <quentin.schulz at theobroma-systems.com>
> To: Heiko Stuebner <heiko at sntech.de>
> To: Quentin Schulz <quentin.schulz at cherry.de>
> Cc: linux-i2c at vger.kernel.org
> Cc: linux-kernel at vger.kernel.org
> Cc: devicetree at vger.kernel.org
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-rockchip at lists.infradead.org
> Signed-off-by: Farouk Bouabid <farouk.bouabid at cherry.de>
>
> Changes in v2:
> - Add i2c-adapter quirks to skip checking for conflict between the mux core
> and a child device address.
> - Rename dt-binding to "tsd,mule-i2c-mux.yaml"
> - Add Mule description to kconfig
> - Fix indentation
> - Move device table after probe
>
> - Link to v1: https://lore.kernel.org/r/20240426-dev-mule-i2c-mux-v1-0-045a482f6ffb@theobroma-systems.com
>
> ---
> Farouk Bouabid (7):
> i2c: mux: add the ability to share mux core 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/tsd,mule-i2c-mux.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-core-base.c | 6 +-
> drivers/i2c/i2c-mux.c | 25 +++-
> drivers/i2c/muxes/Kconfig | 18 +++
> drivers/i2c/muxes/Makefile | 1 +
> drivers/i2c/muxes/i2c-mux-mule.c | 157 +++++++++++++++++++++
> include/linux/i2c-mux.h | 1 +
> include/linux/i2c.h | 7 +
> 12 files changed, 361 insertions(+), 12 deletions(-)
> ---
> base-commit: 23918f4e52d072b96a4d909e91298b8dd6ad4325
> change-id: 20240404-dev-mule-i2c-mux-9103cde07021
>
> Best regards,
> --
> Farouk Bouabid <farouk.bouabid at cherry.de>
>
>
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
New warnings running 'make CHECK_DTBS=y rockchip/rk3588-jaguar.dtb' for 20240506-dev-mule-i2c-mux-v2-0-a91c954f65d7 at cherry.de:
arch/arm64/boot/dts/rockchip/rk3588-jaguar.dtb: fan at 18: '#cooling-cells' does not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/trivial-devices.yaml#
More information about the linux-arm-kernel
mailing list