The primary purpose of this series is to add support for vsc751x switches that are wired up to be managed via MDIO. The current MFD driver only has support for management over SPI. While reworking the spi and core files to allow hooking up another underlying bus, I found what I think might be a bug in the SPI implementation, for the case where the SPI bus is set higher than 500kHz. But as I don't have such hardware, I don't know if the bug is real, nor am I able to test my changes. If desired, I can drop those changes, at the expense of having to duplicate some logic around setting up the gcb_regmap and calling reset in the mdio backend, but since I spotted it anyway I thought I'd include it for the first iteration. Also, if desired, I can put the mdio and spi backends behind separate config options, with the spi option defaulting to y to preserve behaviour of existing .configs setting CONFIG_MFD_OCELOT. Rasmus Villemoes (8): mfd: ocelot: refactor bus-specific regmap initialization mfd: ocelot: move SPI specific macros to ocelot-spi.c mfd: ocelot: rework SPI (re-)initialization after chip reset mfd: ocelot: lift chip reset logic to ocelot-core.c mfd: ocelot: make ocelot_chip_init() static mfd: ocelot: correct Kconfig dependency mfd: ocelot: enable support for mdio management dt-bindings: mfd: ocelot: mention MDIO management and add example .../devicetree/bindings/mfd/mscc,ocelot.yaml | 121 ++++++++++++- drivers/mfd/Kconfig | 5 +- drivers/mfd/Makefile | 2 +- drivers/mfd/ocelot-core.c | 44 ++++- drivers/mfd/ocelot-mdio.c | 161 ++++++++++++++++++ drivers/mfd/ocelot-spi.c | 53 ++---- drivers/mfd/ocelot.h | 18 +- 7 files changed, 339 insertions(+), 65 deletions(-) create mode 100644 drivers/mfd/ocelot-mdio.c -- 2.49.0