Use the generic cable tester functions from bcm-phy-lib to add cable tester support.
100m cable, A/B/C/D open: Cable test started for device eth0. Cable test completed for device eth0. Pair: Pair A, result: Open Circuit Pair: Pair B, result: Open Circuit Pair: Pair C, result: Open Circuit Pair: Pair D, result: Open Circuit Pair: Pair A, fault length: 106.60m Pair: Pair B, fault length: 103.32m Pair: Pair C, fault length: 104.96m Pair: Pair D, fault length: 106.60m 1m cable, A/B connected, pair C shorted, D open: Cable test started for device eth0. Cable test completed for device eth0. Pair: Pair A, result: OK Pair: Pair B, result: OK Pair: Pair C, result: Short within Pair Pair: Pair D, result: Open Circuit Pair: Pair C, fault length: 0.82m Pair: Pair D, fault length: 1.64m 1m cable, A/B connected, pair C shorted with D: Cable test started for device eth0. Cable test completed for device eth0. Pair: Pair A, result: OK Pair: Pair B, result: OK Pair: Pair C, result: Short to another pair Pair: Pair D, result: Short to another pair Pair: Pair C, fault length: 1.64m Pair: Pair D, fault length: 1.64m The granularity of the length measurement seems to be 82cm. Signed-off-by: Michael Walle <mich...@walle.cc> --- drivers/net/phy/bcm54140.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/phy/bcm54140.c b/drivers/net/phy/bcm54140.c index 9ef37a3bc2bb..8998e68bb26b 100644 --- a/drivers/net/phy/bcm54140.c +++ b/drivers/net/phy/bcm54140.c @@ -831,6 +831,7 @@ static struct phy_driver bcm54140_drivers[] = { .phy_id = PHY_ID_BCM54140, .phy_id_mask = BCM54140_PHY_ID_MASK, .name = "Broadcom BCM54140", + .flags = PHY_POLL_CABLE_TEST, .features = PHY_GBIT_FEATURES, .config_init = bcm54140_config_init, .did_interrupt = bcm54140_did_interrupt, @@ -842,6 +843,8 @@ static struct phy_driver bcm54140_drivers[] = { .soft_reset = genphy_soft_reset, .get_tunable = bcm54140_get_tunable, .set_tunable = bcm54140_set_tunable, + .cable_test_start = bcm_phy_cable_test_start_rdb, + .cable_test_get_status = bcm_phy_cable_test_get_status_rdb, }, }; module_phy_driver(bcm54140_drivers); -- 2.20.1