Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net/phy: fix DP83865 10 Mbps HDX loopback disable function

According to the DP83865 datasheet "the 10 Mbps HDX loopback can be
disabled in the expanded memory register 0x1C0.1". The driver erroneously
used bit 0 instead of bit 1.

Fixes: 4621bf129856 ("phy: Add file missed in previous commit.")
Signed-off-by: Peter Mamonov <pmamonov@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>

authored by

Peter Mamonov and committed by
Jakub Kicinski
e47488b2 8d3d7c20

+6 -3
+6 -3
drivers/net/phy/national.c
··· 105 105 106 106 static void ns_10_base_t_hdx_loopack(struct phy_device *phydev, int disable) 107 107 { 108 + u16 lb_dis = BIT(1); 109 + 108 110 if (disable) 109 - ns_exp_write(phydev, 0x1c0, ns_exp_read(phydev, 0x1c0) | 1); 111 + ns_exp_write(phydev, 0x1c0, 112 + ns_exp_read(phydev, 0x1c0) | lb_dis); 110 113 else 111 114 ns_exp_write(phydev, 0x1c0, 112 - ns_exp_read(phydev, 0x1c0) & 0xfffe); 115 + ns_exp_read(phydev, 0x1c0) & ~lb_dis); 113 116 114 117 pr_debug("10BASE-T HDX loopback %s\n", 115 - (ns_exp_read(phydev, 0x1c0) & 0x0001) ? "off" : "on"); 118 + (ns_exp_read(phydev, 0x1c0) & lb_dis) ? "off" : "on"); 116 119 } 117 120 118 121 static int ns_config_init(struct phy_device *phydev)