drivers: net: xgene: Fix crash on DT systems
On DT systems the driver require a clock, but the probe just print a warning and continue, leading to a crash when resetting the device. To fix this crash and properly handle probe deferals only ignore the missing clock if DT isn't used or if the clock doesn't exist. Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> Acked-by: Iyappan Subramanian <isubramanian@apm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e3330039ea
commit
9aea7779b7
|
@ -1749,6 +1749,12 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
|
||||||
|
|
||||||
pdata->clk = devm_clk_get(&pdev->dev, NULL);
|
pdata->clk = devm_clk_get(&pdev->dev, NULL);
|
||||||
if (IS_ERR(pdata->clk)) {
|
if (IS_ERR(pdata->clk)) {
|
||||||
|
/* Abort if the clock is defined but couldn't be retrived.
|
||||||
|
* Always abort if the clock is missing on DT system as
|
||||||
|
* the driver can't cope with this case.
|
||||||
|
*/
|
||||||
|
if (PTR_ERR(pdata->clk) != -ENOENT || dev->of_node)
|
||||||
|
return PTR_ERR(pdata->clk);
|
||||||
/* Firmware may have set up the clock already. */
|
/* Firmware may have set up the clock already. */
|
||||||
dev_info(dev, "clocks have been setup already\n");
|
dev_info(dev, "clocks have been setup already\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue