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. From v2 of this series I've taken the approach suggested by Rob and represented the SDA lines as child nodes. I expect there will be a bit of discussion around the naming of the controller nodes (in the Realtek documentation they are referred to as I2C_MST1 and I2C_MST2). [1] - https://lore.kernel.org/lkml/20240923225719.2999821-1-chris.packham@xxxxxxxxxxxxxxxxxxx/ -- 2.46.1 Chris Packham (3): dt-bindings: i2c: Add RTL9300 I2C controller i2c: Add driver for the RTL9300 I2C controller mips: dts: realtek: Add I2C controllers .../bindings/i2c/realtek,rtl9300-i2c.yaml | 80 ++++ MAINTAINERS | 7 + arch/mips/boot/dts/realtek/rtl930x.dtsi | 18 + drivers/i2c/busses/Kconfig | 10 + drivers/i2c/busses/Makefile | 1 + drivers/i2c/busses/i2c-rtl9300.c | 421 ++++++++++++++++++ 6 files changed, 537 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml create mode 100644 drivers/i2c/busses/i2c-rtl9300.c -- 2.46.1