Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0db01097 authored by Thomas Bogendoerfer's avatar Thomas Bogendoerfer Committed by David S. Miller
Browse files

xgene: Don't fail probe, if there is no clk resource for SGMII interfaces



This change fixes following problem

[    1.827940] xgene-enet: probe of 1f210030.ethernet failed with error -2

which leads to a missing ethernet interface (reproducable at least on
Gigabyte MP30-AR0 and APM Mustang systems).

The check for a valid clk resource fails, because DT doesn't provide a
clock for sgenet1. But the driver doesn't use this clk, if the ethernet
port is connected via SGMII. Therefore this patch avoids probing for clk
on SGMII interfaces.

Fixes: 9aea7779 ("drivers: net: xgene: Fix crash on DT systems")
Signed-off-by: default avatarThomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e4a6a342
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -1785,17 +1785,19 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)

	xgene_enet_gpiod_get(pdata);

	if (pdata->phy_mode != PHY_INTERFACE_MODE_SGMII) {
		pdata->clk = devm_clk_get(&pdev->dev, NULL);
		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.
			/* 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. */
			dev_info(dev, "clocks have been setup already\n");
		}
	}

	if (pdata->phy_mode != PHY_INTERFACE_MODE_XGMII)
		base_addr = pdata->base_addr - (pdata->port_id * MAC_OFFSET);