net: fec: Do proper error checking for optional clks
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Sat, 21 May 2022 08:34:25 +0000 (10:34 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 22 May 2022 20:47:13 +0000 (21:47 +0100)
An error code returned by devm_clk_get() might have other meanings than
"This clock doesn't exist". So use devm_clk_get_optional() and handle
all remaining errors as fatal.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/fec_main.c

index 9f33ec8..9b31a9c 100644 (file)
@@ -3866,17 +3866,21 @@ fec_probe(struct platform_device *pdev)
        fep->itr_clk_rate = clk_get_rate(fep->clk_ahb);
 
        /* enet_out is optional, depends on board */
-       fep->clk_enet_out = devm_clk_get(&pdev->dev, "enet_out");
-       if (IS_ERR(fep->clk_enet_out))
-               fep->clk_enet_out = NULL;
+       fep->clk_enet_out = devm_clk_get_optional(&pdev->dev, "enet_out");
+       if (IS_ERR(fep->clk_enet_out)) {
+               ret = PTR_ERR(fep->clk_enet_out);
+               goto failed_clk;
+       }
 
        fep->ptp_clk_on = false;
        mutex_init(&fep->ptp_clk_mutex);
 
        /* clk_ref is optional, depends on board */
-       fep->clk_ref = devm_clk_get(&pdev->dev, "enet_clk_ref");
-       if (IS_ERR(fep->clk_ref))
-               fep->clk_ref = NULL;
+       fep->clk_ref = devm_clk_get_optional(&pdev->dev, "enet_clk_ref");
+       if (IS_ERR(fep->clk_ref)) {
+               ret = PTR_ERR(fep->clk_ref);
+               goto failed_clk;
+       }
        fep->clk_ref_rate = clk_get_rate(fep->clk_ref);
 
        /* clk_2x_txclk is optional, depends on board */