• Vladimir Oltean's avatar
    net: mscc: ocelot: fix non-initialized CPU port on VSC7514 · 8bb849d6
    Vladimir Oltean authored
    The VSC7514 is marketed as a 10-port switch, however it has 11 physical
    ports (0->10) in the block diagram:
    https://www.microsemi.com/product-directory/ethernet-switches/3992-vsc7514
    (also in the device tree at arch/mips/boot/dts/mscc/ocelot.dtsi)
    
    Additionally, by architecture it has one more entry in the analyzer
    block, situated right after the physical ports, for the CPU port module.
    This is not a physical port, it only represents a channel for frame
    injection and extraction. That entry for the CPU port is at index 11 in
    the analyzer.
    
    When the register groups for QSYS_SWITCH_PORT_MODE, SYS_PORT_MODE and
    SYS_PAUSE_CFG are declared to be replicated 11 times, the 11th entry in
    the array of regfields is not initialized, so the CPU port module is not
    initialized either.
    
    The documentation of QSYS_SWITCH_PORT_MODE for VSC7514 also says that
    this register group is replicated 12 times, so this patch is simply
    reflecting that and not introducing any further inconsistency.
    
    Fixes: 886e1387 ("net: mscc: ocelot: convert QSYS_SWITCH_PORT_MODE and SYS_PORT_MODE to regfields")
    Fixes: 541132f0 ("net: mscc: ocelot: convert SYS_PAUSE_CFG register access to regfield")
    Reported-by: default avatarBryan Whitehead <bryan.whitehead@microchip.com>
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8bb849d6
ocelot_vsc7514.c 36 KB