net: stmmac: Run HWIF Quirks after getting HW caps
Currently we were running HWIF quirks before getting HW capabilities.
This is not right because some HWIF callbacks depend on HW caps.
Lets save the quirks callback and use it in a later stage.
This fixes Altera socfpga.
Signed-off-by: Jose Abreu <joabreu@synopsys.com>
Fixes: 5f0456b431
("net: stmmac: Implement logic to automatically select HW Interface")
Reported-by: Dinh Nguyen <dinh.linux@gmail.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Joao Pinto <jpinto@synopsys.com>
Cc: Vitor Soares <soares@synopsys.com>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Dinh Nguyen <dinh.linux@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
f6a6f203d5
Коммит
7cfde0af73
|
@ -252,13 +252,8 @@ int stmmac_hwif_init(struct stmmac_priv *priv)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run quirks, if needed */
|
/* Save quirks, if needed for posterior use */
|
||||||
if (entry->quirks) {
|
priv->hwif_quirks = entry->quirks;
|
||||||
ret = entry->quirks(priv);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -129,6 +129,7 @@ struct stmmac_priv {
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
struct device *device;
|
struct device *device;
|
||||||
struct mac_device_info *hw;
|
struct mac_device_info *hw;
|
||||||
|
int (*hwif_quirks)(struct stmmac_priv *priv);
|
||||||
struct mutex lock;
|
struct mutex lock;
|
||||||
|
|
||||||
/* RX Queue */
|
/* RX Queue */
|
||||||
|
|
|
@ -4135,6 +4135,13 @@ static int stmmac_hw_init(struct stmmac_priv *priv)
|
||||||
if (priv->dma_cap.tsoen)
|
if (priv->dma_cap.tsoen)
|
||||||
dev_info(priv->device, "TSO supported\n");
|
dev_info(priv->device, "TSO supported\n");
|
||||||
|
|
||||||
|
/* Run HW quirks, if any */
|
||||||
|
if (priv->hwif_quirks) {
|
||||||
|
ret = priv->hwif_quirks(priv);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче