• Andrew Lunn's avatar
    net: dsa: mv88e6xxx: Set the CMODE for mv88e6390 ports 9 & 10 · f39908d3
    Andrew Lunn authored
    Unlike most ports, ports 9 and 10 of the 6390X family have configurable
    PHY modes. Set the mode as part of adjust_link().
    
    Ordering is important, because the SERDES interfaces connected to
    ports 9 and 10 can be split and assigned to other ports. The CMODE has
    to be correctly set before the SERDES interface on another port can be
    configured. Such configuration is likely to be performed in
    port_enable() and port_disabled(), called on slave_open() and
    slave_close().
    
    The simple case is port 9 and 10 are used for 'CPU' or 'DSA'. In this
    case, the CMODE is set via a phy-mode in dsa_cpu_dsa_setup(), which is
    called early in the switch setup.
    
    When ports 9 or 10 are used as user ports, and have a fixed-phy, when
    the fixed fixed-phy is attached, dsa_slave_adjust_link() is called,
    which results in the adjust_link function being called, setting the
    cmode. The port_enable() will for other ports will be called much
    later.
    
    When ports 9 or 10 are used as user ports and have a real phy attached
    which does not use all the available SERDES interface, e.g. a 1Gbps
    SGMII, there is currently no mechanism in place to set the CMODE of
    the port from software. It must be hoped the stripping resistors are
    correct.
    
    At the same time, add a function to get the cmode. This will be needed
    when configuring the SERDES interfaces.
    Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Reviewed-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f39908d3
port.c 17.6 KB