[PATCH 0/8] mfd: ocelot: add support for MDIO managed switch

From: Rasmus Villemoes
Date: Wed Mar 19 2025 - 08:31:31 EST


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