mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
net: stmmac: qcom-ethqos: move loopback disable to .mac_finish()
Loopback is enabled to allow the dwmac soft reset to succeed. This is enabled when clocks are enabled in ethqos_clks_config(), which happens at driver probe and runtime PM resume - e.g. when the network device is administratively brought up. Currently, the loopback is disabled when the link comes up (via .mac_link_up() calling this driver's .fix_mac_speed().) Move the qcom_ethqos_set_sgmii_loopback() call which disables loopback from ethqos_fix_mac_speed() into ethqos' SerDes specific .mac_finish() method so that loopback is disabled a little earlier after reset has completed, and dwmac setup has completed. 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/E1vuSKq-0000000AScA-1Wh3@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3baa791f19
commit
834c72ca30
|
|
@ -647,7 +647,6 @@ static void ethqos_fix_mac_speed(void *priv, int speed, unsigned int mode)
|
|||
{
|
||||
struct qcom_ethqos *ethqos = priv;
|
||||
|
||||
qcom_ethqos_set_sgmii_loopback(ethqos, false);
|
||||
ethqos_update_link_clk(ethqos, speed);
|
||||
ethqos_configure(ethqos, speed);
|
||||
}
|
||||
|
|
@ -684,6 +683,17 @@ static void qcom_ethqos_serdes_powerdown(struct net_device *ndev, void *priv)
|
|||
phy_exit(ethqos->serdes_phy);
|
||||
}
|
||||
|
||||
static int ethqos_mac_finish_serdes(struct net_device *ndev, void *priv,
|
||||
unsigned int mode,
|
||||
phy_interface_t interface)
|
||||
{
|
||||
struct qcom_ethqos *ethqos = priv;
|
||||
|
||||
qcom_ethqos_set_sgmii_loopback(ethqos, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ethqos_clks_config(void *priv, bool enabled)
|
||||
{
|
||||
struct qcom_ethqos *ethqos = priv;
|
||||
|
|
@ -770,6 +780,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev)
|
|||
case PHY_INTERFACE_MODE_2500BASEX:
|
||||
case PHY_INTERFACE_MODE_SGMII:
|
||||
ethqos->configure_func = ethqos_configure_sgmii;
|
||||
plat_dat->mac_finish = ethqos_mac_finish_serdes;
|
||||
break;
|
||||
default:
|
||||
dev_err(dev, "Unsupported phy mode %s\n",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user