mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
net: sfp: enhance quirk for Fibrestore 2.5G copper SFP module
Enhance the quirk for Fibrestore 2.5G copper SFP module. The original
commit e27aca3760
("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>
This commit is contained in:
parent
6999e0fc9a
commit
cd4a32e600
1 changed files with 12 additions and 6 deletions
|
@ -385,18 +385,23 @@ static void sfp_fixup_rollball(struct sfp *sfp)
|
||||||
sfp->phy_t_retry = msecs_to_jiffies(1000);
|
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);
|
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
|
* 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.
|
* while initializing. They need a 4 second wait before accessing PHY.
|
||||||
*/
|
*/
|
||||||
sfp->module_t_wait = msecs_to_jiffies(4000);
|
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)
|
static void sfp_fixup_halny_gsfp(struct sfp *sfp)
|
||||||
{
|
{
|
||||||
/* Ignore the TX_FAULT and LOS signals on this module.
|
/* Ignore the TX_FAULT and LOS signals on this module.
|
||||||
|
@ -473,6 +478,10 @@ static const struct sfp_quirk sfp_quirks[] = {
|
||||||
// PHY.
|
// PHY.
|
||||||
SFP_QUIRK_F("FS", "SFP-10G-T", sfp_fixup_fs_10gt),
|
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
|
// Fiberstore GPON-ONU-34-20BI can operate at 2500base-X, but report 1.2GBd
|
||||||
// NRZ in their EEPROM
|
// NRZ in their EEPROM
|
||||||
SFP_QUIRK("FS", "GPON-ONU-34-20BI", sfp_quirk_2500basex,
|
SFP_QUIRK("FS", "GPON-ONU-34-20BI", sfp_quirk_2500basex,
|
||||||
|
@ -489,9 +498,6 @@ static const struct sfp_quirk sfp_quirks[] = {
|
||||||
SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
|
SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
|
||||||
sfp_fixup_ignore_tx_fault),
|
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
|
// Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report
|
||||||
// 2500MBd NRZ in their EEPROM
|
// 2500MBd NRZ in their EEPROM
|
||||||
SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex),
|
SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex),
|
||||||
|
|
Loading…
Reference in a new issue