This builds on top of my in-flight series that adds the syscon node for the switch block[1]. The I2C controllers are part of that block of registers. The controller driver is adapted from openwrt, the multiplexing support is added by me and differs from the openwrt implementation. [1] - https://lore.kernel.org/lkml/20240913024948.1317786-1-chris.packham@xxxxxxxxxxxxxxxxxxx/ Chris Packham (5): dt-bindings: i2c: Add RTL9300 I2C controller i2c: Add driver for the RTL9300 I2C controller mips: dts: realtek: Add I2C controllers dt-bindings: i2c: Add RTL9300 I2C multiplexer i2c: rtl9300: Add multiplexing support .../bindings/i2c/realtek,rtl9300-i2c-mux.yaml | 82 +++ .../bindings/i2c/realtek,rtl9300-i2c.yaml | 73 +++ MAINTAINERS | 8 + arch/mips/boot/dts/realtek/rtl930x.dtsi | 18 + drivers/i2c/busses/Kconfig | 10 + drivers/i2c/busses/Makefile | 1 + drivers/i2c/busses/i2c-rtl9300.c | 543 ++++++++++++++++++ 7 files changed, 735 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c-mux.yaml create mode 100644 Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml create mode 100644 drivers/i2c/busses/i2c-rtl9300.c -- 2.46.1