On Thu, Dec 05, 2024 at 07:29:53PM +0100, Christian Marangi wrote: > Ohhhh ok, wasn't clear to me the MFD driver had to be placed in the mdio > node. > > To make it clear this would be an implementation. > > mdio_bus: mdio-bus { > #address-cells = <1>; > #size-cells = <0>; > > ... > > mfd@1 { > compatible = "airoha,an8855-mfd"; > reg = <1>; > > nvmem_node { > ... > }; > > switch_node { > ... > }; > }; > }; I mean, I did mention Documentation/devicetree/bindings/mfd/mscc,ocelot.yaml in my initial reply, which has an example with exactly this layout... > The difficulties I found (and maybe is very easy to solve and I'm > missing something here) is that switch and internal PHY port have the > same address and conflicts. > > Switch will be at address 1 (or 2 3 4 5... every port can access switch > register with page 0x4) > > DSA port 0 will be at address 1, that is already occupied by the switch. > > Defining the DSA port node on the host MDIO bus works correctly for > every port but for port 0 (the one at address 1), the kernel complains > and is not init. (as it does conflict with the switch that is at the > same address) (can't remember the exact warning) Can any of these MDIO addresses (switch or ports) be changed through registers? I guess the non-hack solution would be to permit MDIO buses to have #size-cells = 1, and MDIO devices to acquire a range of the address space, rather than just one address. Though take this with a grain of salt, I have a lot more to learn. If neither of those are options, in principle the hack with just selecting, randomly, one of the N internal PHY addresses as the central MDIO address should work equally fine regardless of whether we are talking about the DSA switch's MDIO address here, or the MFD device's MDIO address. With MFD you still have the option of creating a fake MDIO controller child device, which has mdio-parent-bus = <&host_bus>, and redirecting all user port phy-handles to children of this bus. Since all regmap I/O of this fake MDIO bus goes to the MFD driver, you can implement there your hacks with page switching etc etc, and it should be equally safe.