123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- From 9692c07ee8bf8f68b74d553d861d092e33264781 Mon Sep 17 00:00:00 2001
- From: Claudiu Beznea <[email protected]>
- Date: Wed, 9 Dec 2020 15:03:35 +0200
- Subject: [PATCH 118/247] net: macb: unprepare clocks in case of failure
- Unprepare clocks in case of any failure in fu540_c000_clk_init().
- Fixes: c218ad559020 ("macb: Add support for SiFive FU540-C000")
- Signed-off-by: Claudiu Beznea <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/ethernet/cadence/macb_main.c | 24 ++++++++++++++++++------
- 1 file changed, 18 insertions(+), 6 deletions(-)
- --- a/drivers/net/ethernet/cadence/macb_main.c
- +++ b/drivers/net/ethernet/cadence/macb_main.c
- @@ -4335,8 +4335,10 @@ static int fu540_c000_clk_init(struct pl
- return err;
-
- mgmt = devm_kzalloc(&pdev->dev, sizeof(*mgmt), GFP_KERNEL);
- - if (!mgmt)
- - return -ENOMEM;
- + if (!mgmt) {
- + err = -ENOMEM;
- + goto err_disable_clks;
- + }
-
- init.name = "sifive-gemgxl-mgmt";
- init.ops = &fu540_c000_ops;
- @@ -4347,16 +4349,26 @@ static int fu540_c000_clk_init(struct pl
- mgmt->hw.init = &init;
-
- *tx_clk = devm_clk_register(&pdev->dev, &mgmt->hw);
- - if (IS_ERR(*tx_clk))
- - return PTR_ERR(*tx_clk);
- + if (IS_ERR(*tx_clk)) {
- + err = PTR_ERR(*tx_clk);
- + goto err_disable_clks;
- + }
-
- err = clk_prepare_enable(*tx_clk);
- - if (err)
- + if (err) {
- dev_err(&pdev->dev, "failed to enable tx_clk (%u)\n", err);
- - else
- + *tx_clk = NULL;
- + goto err_disable_clks;
- + } else {
- dev_info(&pdev->dev, "Registered clk switch '%s'\n", init.name);
- + }
-
- return 0;
- +
- +err_disable_clks:
- + macb_clks_disable(*pclk, *hclk, *tx_clk, *rx_clk, *tsu_clk);
- +
- + return err;
- }
-
- static int fu540_c000_init(struct platform_device *pdev)
|