[PATCH v5 1/2] net: stmmac: add support for platform specific reset
Simon Horman
simon.horman at corigine.com
Mon Apr 3 12:49:52 PDT 2023
On Mon, Apr 03, 2023 at 10:24:07AM -0500, Shenwei Wang wrote:
> This patch adds support for platform-specific reset logic in the
> stmmac driver. Some SoCs require a different reset mechanism than
> the standard dwmac IP reset. To support these platforms, a new function
> pointer 'fix_soc_reset' is added to the plat_stmmacenet_data structure.
> The stmmac_reset in hwif.h is modified to call the 'fix_soc_reset'
> function if it exists. This enables the driver to use the platform-specific
> reset logic when necessary.
>
> Signed-off-by: Shenwei Wang <shenwei.wang at nxp.com>
> ---
> v5:
> - add the missing __iomem tag in the stmmac_reset definition.
>
> drivers/net/ethernet/stmicro/stmmac/hwif.c | 10 ++++++++++
> drivers/net/ethernet/stmicro/stmmac/hwif.h | 3 +--
> include/linux/stmmac.h | 1 +
> 3 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.c b/drivers/net/ethernet/stmicro/stmmac/hwif.c
> index bb7114f970f8..0eefa697ffe8 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/hwif.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.c
> @@ -87,6 +87,16 @@ static int stmmac_dwxlgmac_quirks(struct stmmac_priv *priv)
> return 0;
> }
>
> +int stmmac_reset(struct stmmac_priv *priv, void __iomem *ioaddr)
> +{
> + struct plat_stmmacenet_data *plat = priv ? priv->plat : NULL;
Here the case where priv is NULL is handled.
> +
> + if (plat && plat->fix_soc_reset)
> + return plat->fix_soc_reset(plat, ioaddr);
> +
> + return stmmac_do_callback(priv, dma, reset, ioaddr);
But this will dereference priv unconditionally.
I think perhaps this is code that I suggested.
If so, sorry about not noticing this then.
> +}
> +
> static const struct stmmac_hwif_entry {
> bool gmac;
> bool gmac4;
...
More information about the linux-arm-kernel
mailing list