• Oleksij Rempel's avatar
    net: dsa: microchip: do per-port Gbit detection instead of per-chip · 505bf320
    Oleksij Rempel authored
    KSZ8563 has two 100Mbit PHYs and CPU port with RGMII support. Since
    1000Mbit configuration for the RGMII capable MAC is present, we should
    use per port validation.
    
    As main part of migration to per-port validation we need to rework
    ksz9477_switch_init() function. Which is using undocumented
    REG_GLOBAL_OPTIONS register to detect per-chip Gbit support. So, it is
    related to some sort of risk for regressions.
    
    To reduce this risk I compared the code with publicly available
    documentations. This function will executed on following currently
    supported chips:
    struct ksz_chip_data            OF compatible
    KSZ9477				KSZ9477
    KSZ9897				KSZ9897
    KSZ9893				KSZ9893, KSZ9563
    KSZ8563				KSZ8563
    KSZ9567				KSZ9567
    
    Only KSZ9893, KSZ9563, KSZ8563 document existence of 0xf ==
    REG_GLOBAL_OPTIONS register with bit field description "SKU ID":
    KSZ9893 0x0C
    KSZ9563 0x1C
    KSZ8563 0x3C
    
    The existence of hidden flags is not documented.
    
    KSZ9477, KSZ9897, KSZ9567 do not document this register at all.
    
    Only KSZ8563 is documented as non Gbit chip: 100Mbit PHYs and RGMII CPU
    port. So, this change should not introduce a regression for
    configurations with properly used OF compatibles.
    Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    505bf320
ksz_common.c 52.5 KB