• Marek Vasut's avatar
    net: phy: micrel: ksz9031/ksz9131: add cabletest support · 58389c00
    Marek Vasut authored
    Add cable test support for Micrel KSZ9x31 PHYs.
    
    Tested on i.MX8M Mini with KSZ9131RNX in 100/Full mode with pairs shuffled
    before magnetics:
    (note: Cable test started/completed messages are omitted)
    
      mx8mm-ksz9131-a-d-connected$ ethtool --cable-test eth0
      Pair A code OK
      Pair B code Short within Pair
      Pair B, fault length: 0.80m
      Pair C code Short within Pair
      Pair C, fault length: 0.80m
      Pair D code OK
    
      mx8mm-ksz9131-a-b-connected$ ethtool --cable-test eth0
      Pair A code OK
      Pair B code OK
      Pair C code Short within Pair
      Pair C, fault length: 0.00m
      Pair D code Short within Pair
      Pair D, fault length: 0.00m
    
    Tested on R8A77951 Salvator-XS with KSZ9031RNX and all four pairs connected:
    (note: Cable test started/completed messages are omitted)
    
      r8a7795-ksz9031-all-connected$ ethtool --cable-test eth0
      Pair A code OK
      Pair B code OK
      Pair C code OK
      Pair D code OK
    
    The CTRL1000 CTL1000_ENABLE_MASTER and CTL1000_AS_MASTER bits are not
    restored by calling phy_init_hw(), they must be manually cached in
    ksz9x31_cable_test_start() and restored at the end of
    ksz9x31_cable_test_get_status().
    Signed-off-by: default avatarMarek Vasut <marex@denx.de>
    Cc: Heiner Kallweit <hkallweit1@gmail.com>
    Cc: Oleksij Rempel <linux@rempel-privat.de>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Tested-by: default avatarClaudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220407105534.85833-1-marex@denx.deSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    58389c00
micrel.c 83 KB