[PATCH] mediatek: backport upstream v6.17 Potron SFP+ XGSPON patches
Chris Morgan
macroalpha82 at gmail.com
Tue Jun 24 13:21:13 PDT 2025
From: Chris Morgan <macromorgan at hotmail.com>
Backport fixes for the Potron SFP+ XGSPON ONU stick. These fixes allow
the Potron SFP+ XGSPON ONU stick to work without manual workarounds
to prevent UART activity on pins 2 and 7 to be interpreted as TX_FAULT
or LOS signals on devices with support for these signals (such as the
Banana Pi R4).
[1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=dfec1c14aece
Signed-off-by: Chris Morgan <macroalpha82 at gmail.com>
---
...net-sfp-Add-quirk-for-SFP-ONU-XGSPON.patch | 66 +++++++++++++++++++
1 file changed, 66 insertions(+)
create mode 100644 target/linux/mediatek/patches-6.12/961-net-sfp-Add-quirk-for-SFP-ONU-XGSPON.patch
diff --git a/target/linux/mediatek/patches-6.12/961-net-sfp-Add-quirk-for-SFP-ONU-XGSPON.patch b/target/linux/mediatek/patches-6.12/961-net-sfp-Add-quirk-for-SFP-ONU-XGSPON.patch
new file mode 100644
index 0000000000..d83a91a589
--- /dev/null
+++ b/target/linux/mediatek/patches-6.12/961-net-sfp-Add-quirk-for-SFP-ONU-XGSPON.patch
@@ -0,0 +1,66 @@
+From d6899e971a19f525a2efe2d301c859e753462607 Mon Sep 17 00:00:00 2001
+From: Chris Morgan <macromorgan at hotmail.com>
+Date: Thu, 5 Jun 2025 14:18:21 -0500
+Subject: [PATCH] net: sfp: add quirk for SFP-ONU-XGSPON module
+
+Add quirk for YV SFP+ONT-XGSPON module.
+
+This device uses pins 2 and 7 for UART communication, so disable
+TX_FAULT and LOS. Additionally as it is an embedded system in an
+SFP+ form factor provide it enough time to fully boot before we
+attempt to use it.
+
+Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
+---
+ drivers/net/phy/sfp.c | 21 ++++++++++++++++++++-
+ 1 file changed, 20 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c
+index 347c1e0e94d9..7a070808ec46 100644
+--- a/drivers/net/phy/sfp.c
++++ b/drivers/net/phy/sfp.c
+@@ -350,6 +350,11 @@ static void sfp_fixup_ignore_tx_fault(struct sfp *sfp)
+ sfp->tx_fault_ignore = true;
+ }
+
++static void sfp_fixup_ignore_hw(struct sfp *sfp, unsigned int mask)
++{
++ sfp->state_hw_mask &= ~mask;
++}
++
+ // For 10GBASE-T short-reach modules
+ static void sfp_fixup_10gbaset_30m(struct sfp *sfp)
+ {
+@@ -377,7 +377,19 @@ static void sfp_fixup_halny_gsfp(struct sfp *sfp)
+ * these are possibly used for other purposes on this
+ * module, e.g. a serial port.
+ */
+- sfp->state_hw_mask &= ~(SFP_F_TX_FAULT | SFP_F_LOS);
++ sfp_fixup_ignore_hw(sfp, (SFP_F_TX_FAULT | SFP_F_LOS));
++}
++
++static void sfp_fixup_potron(struct sfp *sfp)
++{
++ /*
++ * The TX_FAULT and LOS pins on this device are used for serial
++ * communication, so ignore them. Additionally, provide extra
++ * time for this device to fully start up.
++ */
++
++ sfp_fixup_long_startup(sfp);
++ sfp_fixup_ignore_hw(sfp, (SFP_F_TX_FAULT | SFP_F_LOS));
+ }
+
+ static void sfp_fixup_rollball(struct sfp *sfp)
+@@ -490,6 +502,8 @@ static const struct sfp_quirk sfp_quirks[] = {
+ SFP_QUIRK("FS", "GPON-ONU-34-20BI", sfp_quirk_2500basex,
+ sfp_fixup_ignore_tx_fault),
+
++ SFP_QUIRK_F("YV", "SFP+ONU-XGSPON", sfp_fixup_potron),
++
+ SFP_QUIRK_F("HALNy", "HL-GSFP", sfp_fixup_halny_gsfp),
+
+ // HG MXPD-483II-F 2.5G supports 2500Base-X, but incorrectly reports
+--
+2.43.0
+
--
2.39.5
More information about the openwrt-devel
mailing list