mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-15 18:03:30 +00:00

Some checks failed
OpenWrt-CI / Build OpenWrt Firmware (push) Failing after 6s
This fixes the handling of some FS copper SFP modules using the RollBall protocol and needing some extra treatment. Signed-off-by: Martin Schiller <ms@dev.tdt.de>
78 lines
2.8 KiB
Diff
78 lines
2.8 KiB
Diff
From cd4a32e60061789676f7f018a94fcc9ec56732a0 Mon Sep 17 00:00:00 2001
|
|
From: Marek Behún <kabel@kernel.org>
|
|
Date: Tue, 23 Apr 2024 10:50:39 +0200
|
|
Subject: net: sfp: enhance quirk for Fibrestore 2.5G copper SFP module
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Enhance the quirk for Fibrestore 2.5G copper SFP module. The original
|
|
commit e27aca3760c0 ("net: sfp: add quirk for FS's 2.5G copper SFP")
|
|
introducing the quirk says that the PHY is inaccessible, but that is
|
|
not true.
|
|
|
|
The module uses Rollball protocol to talk to the PHY, and needs a 4
|
|
second wait before probing it, same as FS 10G module.
|
|
|
|
The PHY inside the module is Realtek RTL8221B-VB-CG PHY. The realtek
|
|
driver recently gained support to set it up via clause 45 accesses.
|
|
|
|
Signed-off-by: Marek Behún <kabel@kernel.org>
|
|
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
|
|
Link: https://lore.kernel.org/r/20240423085039.26957-2-kabel@kernel.org
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
drivers/net/phy/sfp.c | 18 ++++++++++++------
|
|
1 file changed, 12 insertions(+), 6 deletions(-)
|
|
|
|
--- a/drivers/net/phy/sfp.c
|
|
+++ b/drivers/net/phy/sfp.c
|
|
@@ -370,18 +370,23 @@ static void sfp_fixup_rollball(struct sf
|
|
sfp->phy_t_retry = msecs_to_jiffies(1000);
|
|
}
|
|
|
|
-static void sfp_fixup_fs_10gt(struct sfp *sfp)
|
|
+static void sfp_fixup_fs_2_5gt(struct sfp *sfp)
|
|
{
|
|
- sfp_fixup_10gbaset_30m(sfp);
|
|
sfp_fixup_rollball(sfp);
|
|
|
|
- /* The RollBall fixup is not enough for FS modules, the AQR chip inside
|
|
+ /* The RollBall fixup is not enough for FS modules, the PHY chip inside
|
|
* them does not return 0xffff for PHY ID registers in all MMDs for the
|
|
* while initializing. They need a 4 second wait before accessing PHY.
|
|
*/
|
|
sfp->module_t_wait = msecs_to_jiffies(4000);
|
|
}
|
|
|
|
+static void sfp_fixup_fs_10gt(struct sfp *sfp)
|
|
+{
|
|
+ sfp_fixup_10gbaset_30m(sfp);
|
|
+ sfp_fixup_fs_2_5gt(sfp);
|
|
+}
|
|
+
|
|
static void sfp_fixup_halny_gsfp(struct sfp *sfp)
|
|
{
|
|
/* Ignore the TX_FAULT and LOS signals on this module.
|
|
@@ -459,6 +464,10 @@ static const struct sfp_quirk sfp_quirks
|
|
// PHY.
|
|
SFP_QUIRK_F("FS", "SFP-10G-T", sfp_fixup_fs_10gt),
|
|
|
|
+ // Fiberstore SFP-2.5G-T uses Rollball protocol to talk to the PHY and
|
|
+ // needs 4 sec wait before probing the PHY.
|
|
+ SFP_QUIRK_F("FS", "SFP-2.5G-T", sfp_fixup_fs_2_5gt),
|
|
+
|
|
// Fiberstore GPON-ONU-34-20BI can operate at 2500base-X, but report 1.2GBd
|
|
// NRZ in their EEPROM
|
|
SFP_QUIRK("FS", "GPON-ONU-34-20BI", sfp_quirk_2500basex,
|
|
@@ -475,9 +484,6 @@ static const struct sfp_quirk sfp_quirks
|
|
SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
|
|
sfp_fixup_ignore_tx_fault),
|
|
|
|
- // FS 2.5G Base-T
|
|
- SFP_QUIRK_M("FS", "SFP-2.5G-T", sfp_quirk_oem_2_5g),
|
|
-
|
|
// Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report
|
|
// 2500MBd NRZ in their EEPROM
|
|
SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex),
|