diff options
| author | David S. Miller <davem@davemloft.net> | 2021-06-08 14:31:43 -0700 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2021-06-08 14:31:43 -0700 |
| commit | 95848099a3dfaff20b3622ee2040b24bf40b2b21 (patch) | |
| tree | 432e04e0f0f45616b21737569921ff4ec683dea4 /include/linux | |
| parent | 303597e49b835471dc571849af02a99fa74ba3ae (diff) | |
| parent | 46682cb86a37da435e5668db98555a1de0f0448b (diff) | |
Merge branch 'stmmac-25gbps'
Michael Sit Wei Hong says:
====================
Enable 2.5Gbps speed for stmmac
Intel mGbE supports 2.5Gbps link speed by overclocking the clock rate
by 2.5 times to support 2.5Gbps link speed. In this mode, the serdes/PHY
operates at a serial baud rate of 3.125 Gbps and the PCS data path and
GMII interface of the MAC operate at 312.5 MHz instead of 125 MHz.
This is configured in the BIOS during boot up. The kernel driver is not able
access to modify the clock rate for 1Gbps/2.5G mode on the fly. The way to
determine the current 1G/2.5G mode is by reading a dedicated adhoc
register through mdio bus.
Changes:
v5 -> v6
patch 1/3
- Check if mdio_bus_data is populated to prevent NULL pointer dereferencing
when accesing mdio_bus_data member
v4 -> v5
patch 1/3
- Rebase to latest code changes after Vladimir's code is merged and fix
build warnings
v3 -> v4
patch 1/3
- Rebase to latest code and Initialize 'found' to 0 to avoid build warning
patch 2/3
- Fix indentation issue from v3
v2 -> v3
patch 1/3
-New patch added to restructure the code. enabling reading the dedicated
adhoc register to determine link speed mode.
patch 2/3
-Restructure for 2.5G speed to use 2500BaseX configuration as the
PHY interface.
patch 3/3
-Restructure to read serdes registers to set max_speed and configure to
use 2500BaseX in 2.5G speeds.
v1 -> v2
patch 1/2
-Remove MAC supported link speed masking
patch 2/2
-Add supported link speed masking in the PCS
iperf3 and ping for 2.5Gbps and regression test on 10M/100M/1000Mbps
is done to prevent regresson issues.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/pcs/pcs-xpcs.h | 1 | ||||
| -rw-r--r-- | include/linux/stmmac.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/pcs/pcs-xpcs.h b/include/linux/pcs/pcs-xpcs.h index 0860a5b59f10..4d815f03b4b2 100644 --- a/include/linux/pcs/pcs-xpcs.h +++ b/include/linux/pcs/pcs-xpcs.h @@ -13,6 +13,7 @@ /* AN mode */ #define DW_AN_C73 1 #define DW_AN_C37_SGMII 2 +#define DW_2500BASEX 3 struct xpcs_id; diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index e55a4807e3ea..b10be3385a30 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -223,6 +223,7 @@ struct plat_stmmacenet_data { void (*fix_mac_speed)(void *priv, unsigned int speed); int (*serdes_powerup)(struct net_device *ndev, void *priv); void (*serdes_powerdown)(struct net_device *ndev, void *priv); + void (*speed_mode_2500)(struct net_device *ndev, void *priv); void (*ptp_clk_freq_config)(void *priv); int (*init)(struct platform_device *pdev, void *priv); void (*exit)(struct platform_device *pdev, void *priv); |
