mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 11:11:26 +02:00
net: stmmac: qcom-ethqos: use phy interface mode for inband
qcom-ethqos currently forces inband to be enabled for the Cisco SGMII speeds (1G, 100M and 10M) but not for 2500BASE-X (2.5G). Rather than using the speed to determine the forced inband state, use phylink's PHY interface mode which will switch between SGMII for the 10M, 100M and 1G speeds, and 2500BASE-X for 2.5G. Reviewed-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com> Tested-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Link: https://patch.msgid.link/E1vuSL5-0000000AScX-2wuM@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
b560938163
commit
b8ab32315e
|
|
@ -615,30 +615,26 @@ static void ethqos_configure_sgmii(struct qcom_ethqos *ethqos,
|
|||
|
||||
switch (speed) {
|
||||
case SPEED_2500:
|
||||
rgmii_setmask(ethqos, RGMII_CONFIG2_RGMII_CLK_SEL_CFG,
|
||||
RGMII_IO_MACRO_CONFIG2);
|
||||
ethqos_set_serdes_speed(ethqos, SPEED_2500);
|
||||
ethqos_pcs_set_inband(priv, false);
|
||||
break;
|
||||
case SPEED_1000:
|
||||
rgmii_setmask(ethqos, RGMII_CONFIG2_RGMII_CLK_SEL_CFG,
|
||||
RGMII_IO_MACRO_CONFIG2);
|
||||
ethqos_set_serdes_speed(ethqos, SPEED_1000);
|
||||
ethqos_pcs_set_inband(priv, true);
|
||||
break;
|
||||
case SPEED_100:
|
||||
ethqos_set_serdes_speed(ethqos, SPEED_1000);
|
||||
ethqos_pcs_set_inband(priv, true);
|
||||
break;
|
||||
case SPEED_10:
|
||||
rgmii_updatel(ethqos, RGMII_CONFIG_SGMII_CLK_DVDR,
|
||||
FIELD_PREP(RGMII_CONFIG_SGMII_CLK_DVDR,
|
||||
SGMII_10M_RX_CLK_DVDR),
|
||||
RGMII_IO_MACRO_CONFIG);
|
||||
ethqos_set_serdes_speed(ethqos, SPEED_1000);
|
||||
ethqos_pcs_set_inband(priv, true);
|
||||
break;
|
||||
}
|
||||
|
||||
if (interface == PHY_INTERFACE_MODE_SGMII)
|
||||
ethqos_set_serdes_speed(ethqos, SPEED_1000);
|
||||
else
|
||||
ethqos_set_serdes_speed(ethqos, SPEED_2500);
|
||||
|
||||
ethqos_pcs_set_inband(priv, interface == PHY_INTERFACE_MODE_SGMII);
|
||||
}
|
||||
|
||||
static void ethqos_configure(struct qcom_ethqos *ethqos,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user