mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 11:21:26 -04:00
net: stmmac: provide PCS initialisation hook
dwmac cores provide a feature bit to indicate when the PCS block is present, but features are only read after the core's setup() function has been called, meaning we can't decide whether to initialise the integrated PCS in the setup function. Provide a new MAC core hook for PCS initialisation, which will be called after the feature registers have been read. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Link: https://patch.msgid.link/E1v9P6x-0000000AomL-3OKd@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
045d7e5727
commit
237e54caea
@@ -313,6 +313,8 @@ enum stmmac_lpi_mode {
|
||||
|
||||
/* Helpers to program the MAC core */
|
||||
struct stmmac_ops {
|
||||
/* Initialise any PCS instances */
|
||||
int (*pcs_init)(struct stmmac_priv *priv);
|
||||
/* MAC core initialization */
|
||||
void (*core_init)(struct mac_device_info *hw, struct net_device *dev);
|
||||
/* Update MAC capabilities */
|
||||
@@ -413,6 +415,8 @@ struct stmmac_ops {
|
||||
u32 pclass);
|
||||
};
|
||||
|
||||
#define stmmac_mac_pcs_init(__priv) \
|
||||
stmmac_do_callback(__priv, mac, pcs_init, __priv)
|
||||
#define stmmac_core_init(__priv, __args...) \
|
||||
stmmac_do_void_callback(__priv, mac, core_init, __args)
|
||||
#define stmmac_mac_update_caps(__priv) \
|
||||
|
||||
@@ -7239,6 +7239,13 @@ static int stmmac_hw_init(struct stmmac_priv *priv)
|
||||
"Enable RX Mitigation via HW Watchdog Timer\n");
|
||||
}
|
||||
|
||||
/* Unimplemented PCS init (as indicated by stmmac_do_callback()
|
||||
* perversely returning -EINVAL) is non-fatal.
|
||||
*/
|
||||
ret = stmmac_mac_pcs_init(priv);
|
||||
if (ret != -EINVAL)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user