mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
net: stmmac: socfpga: init dwmac->stmmac_rst before registration
Initialisation/setup after registration is a bug. This is the first of two patches fixing this in socfpga. dwmac->stmmac_rst is initialised from the stmmac plat_dat's stmmac_rst member, which is itself initialised by devm_stmmac_probe_config_dt(). Therefore, this can be initialised before we call stmmac_dvr_probe(). Move it there. dwmac->stmmac_rst is used by the set_phy_mode() method. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Link: https://patch.msgid.link/E1u5SnY-001IJY-90@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
544456b3b4
commit
9276bfc2df
|
|
@ -442,8 +442,6 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)
|
|||
struct device *dev = &pdev->dev;
|
||||
int ret;
|
||||
struct socfpga_dwmac *dwmac;
|
||||
struct net_device *ndev;
|
||||
struct stmmac_priv *stpriv;
|
||||
const struct socfpga_dwmac_ops *ops;
|
||||
|
||||
ops = device_get_match_data(&pdev->dev);
|
||||
|
|
@ -479,7 +477,13 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* The socfpga driver needs to control the stmmac reset to set the phy
|
||||
* mode. Create a copy of the core reset handle so it can be used by
|
||||
* the driver later.
|
||||
*/
|
||||
dwmac->stmmac_rst = plat_dat->stmmac_rst;
|
||||
dwmac->ops = ops;
|
||||
|
||||
plat_dat->bsp_priv = dwmac;
|
||||
plat_dat->fix_mac_speed = socfpga_dwmac_fix_mac_speed;
|
||||
plat_dat->pcs_init = socfpga_dwmac_pcs_init;
|
||||
|
|
@ -493,15 +497,6 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ndev = platform_get_drvdata(pdev);
|
||||
stpriv = netdev_priv(ndev);
|
||||
|
||||
/* The socfpga driver needs to control the stmmac reset to set the phy
|
||||
* mode. Create a copy of the core reset handle so it can be used by
|
||||
* the driver later.
|
||||
*/
|
||||
dwmac->stmmac_rst = stpriv->plat->stmmac_rst;
|
||||
|
||||
ret = ops->set_phy_mode(dwmac);
|
||||
if (ret)
|
||||
goto err_dvr_remove;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user