Skip to content

Commit 65bd9a2

Browse files
HoratiuVulturkuba-moo
authored andcommitted
net: phy: micrel: lan8842 errata
Add errata for lan8842. The errata document can be found here [1]. This is fixing the module 7 ("1000BASE-T PMA EEE TX wake timer is non-compliant") [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/Errata/LAN8842-Errata-DS80001172.pdf Fixes: 5a774b6 ("net: phy: micrel: Add support for lan8842") Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com> Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent c8732e9 commit 65bd9a2

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

drivers/net/phy/micrel.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5965,6 +5965,9 @@ static int lan8842_probe(struct phy_device *phydev)
59655965

59665966
#define LAN8814_POWER_MGMT_VAL5 LAN8814_POWER_MGMT_B_C_D
59675967

5968+
#define LAN8814_EEE_WAKE_TX_TIMER 0x0e
5969+
#define LAN8814_EEE_WAKE_TX_TIMER_MAX_VAL 0x1f
5970+
59685971
static const struct lanphy_reg_data short_center_tap_errata[] = {
59695972
{ LAN8814_PAGE_POWER_REGS,
59705973
LAN8814_POWER_MGMT_MODE_3_ANEG_MDI,
@@ -6004,6 +6007,12 @@ static const struct lanphy_reg_data short_center_tap_errata[] = {
60046007
LAN8814_POWER_MGMT_VAL4 },
60056008
};
60066009

6010+
static const struct lanphy_reg_data waketx_timer_errata[] = {
6011+
{ LAN8814_PAGE_EEE,
6012+
LAN8814_EEE_WAKE_TX_TIMER,
6013+
LAN8814_EEE_WAKE_TX_TIMER_MAX_VAL },
6014+
};
6015+
60076016
static int lanphy_write_reg_data(struct phy_device *phydev,
60086017
const struct lanphy_reg_data *data,
60096018
size_t num)
@@ -6022,8 +6031,15 @@ static int lanphy_write_reg_data(struct phy_device *phydev,
60226031

60236032
static int lan8842_erratas(struct phy_device *phydev)
60246033
{
6025-
return lanphy_write_reg_data(phydev, short_center_tap_errata,
6034+
int ret;
6035+
6036+
ret = lanphy_write_reg_data(phydev, short_center_tap_errata,
60266037
ARRAY_SIZE(short_center_tap_errata));
6038+
if (ret)
6039+
return ret;
6040+
6041+
return lanphy_write_reg_data(phydev, waketx_timer_errata,
6042+
ARRAY_SIZE(waketx_timer_errata));
60276043
}
60286044

60296045
static int lan8842_config_init(struct phy_device *phydev)

0 commit comments

Comments
 (0)