Hi, here is another proposal for supporting setting 2500base-x mode for CPU/DSA ports in device tree correctly.
The changes from v1 are that instead of adding .port_setup() and .port_teardown() methods to the DSA operations struct we instead, for CPU/DSA ports, call dsa_port_enable() from dsa_port_setup(), but only after the port is registered (and required phylink/devlink structures exist). The .port_enable/.port_disable methods are now only meant to be used for user ports, when the slave interface is brought up/down. This proposal changes that in such a way that these methods are also called for CPU/DSA ports, but only just after the switch is set up (and just before the switch is tore down). If we went this way, we would have to patch the other DSA drivers to check if user port is being given in their respective .port_enable and .port_disable implmentations. What do you think about this? Marek Marek Behún (4): net: dsa: mv88e6xxx: support 2500base-x in SGMII IRQ handler net: dsa: call port_enable/port_disable for CPU/DSA ports net: dsa: mv88e6xxx: check for port type in port_disable net: dsa: mv88e6xxx: do not enable SERDESes in mv88e6xxx_setup drivers/net/dsa/mv88e6xxx/chip.c | 15 +++------------ drivers/net/dsa/mv88e6xxx/serdes.c | 23 +++++++++++++++++++++-- net/dsa/dsa2.c | 21 ++++++++++++++++++++- net/dsa/port.c | 4 ++-- 4 files changed, 46 insertions(+), 17 deletions(-) -- 2.21.0