[PATCH 07/18] fec_imx: Deallocate clocks when probe fails
Andrey Smirnov
andrew.smirnov at gmail.com
Tue Feb 16 17:29:08 PST 2016
Signed-off-by: Andrey Smirnov <andrew.smirnov at gmail.com>
---
drivers/net/fec_imx.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index 4465788..f413acd 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -710,7 +710,9 @@ static int fec_probe(struct device_d *dev)
goto err_free;
}
- clk_enable(fec->clk);
+ ret = clk_enable(fec->clk);
+ if (ret < 0)
+ goto put_clk;
fec->regs = dev_request_mem_region(dev, 0);
@@ -720,11 +722,11 @@ static int fec_probe(struct device_d *dev)
ret = gpio_request(phy_reset, "phy-reset");
if (ret)
- goto err_free;
+ goto disable_clk;
ret = gpio_direction_output(phy_reset, 0);
if (ret)
- goto err_free;
+ goto disable_clk;
mdelay(msec);
gpio_set_value(phy_reset, 1);
@@ -764,7 +766,7 @@ static int fec_probe(struct device_d *dev)
}
if (ret)
- goto err_free;
+ goto disable_clk;
fec_init(edev);
@@ -784,6 +786,10 @@ static int fec_probe(struct device_d *dev)
return 0;
+disable_clk:
+ clk_disable(fec->clk);
+put_clk:
+ clk_put(fec->clk);
err_free:
free(fec);
return ret;
--
2.5.0
More information about the barebox
mailing list