Merge tag 'dmaengine-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul...
[platform/kernel/linux-starfive.git] / drivers / dma / mv_xor_v2.c
index b4de7d4..0e1e9ca 100644 (file)
@@ -739,32 +739,18 @@ static int mv_xor_v2_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       xor_dev->reg_clk = devm_clk_get(&pdev->dev, "reg");
-       if (PTR_ERR(xor_dev->reg_clk) != -ENOENT) {
-               if (!IS_ERR(xor_dev->reg_clk)) {
-                       ret = clk_prepare_enable(xor_dev->reg_clk);
-                       if (ret)
-                               return ret;
-               } else {
-                       return PTR_ERR(xor_dev->reg_clk);
-               }
-       }
+       xor_dev->reg_clk = devm_clk_get_optional_enabled(&pdev->dev, "reg");
+       if (IS_ERR(xor_dev->reg_clk))
+               return PTR_ERR(xor_dev->reg_clk);
 
-       xor_dev->clk = devm_clk_get(&pdev->dev, NULL);
-       if (PTR_ERR(xor_dev->clk) == -EPROBE_DEFER) {
-               ret = EPROBE_DEFER;
-               goto disable_reg_clk;
-       }
-       if (!IS_ERR(xor_dev->clk)) {
-               ret = clk_prepare_enable(xor_dev->clk);
-               if (ret)
-                       goto disable_reg_clk;
-       }
+       xor_dev->clk = devm_clk_get_enabled(&pdev->dev, NULL);
+       if (IS_ERR(xor_dev->clk))
+               return PTR_ERR(xor_dev->clk);
 
        ret = platform_msi_domain_alloc_irqs(&pdev->dev, 1,
                                             mv_xor_v2_set_msi_msg);
        if (ret)
-               goto disable_clk;
+               return ret;
 
        xor_dev->irq = msi_get_virq(&pdev->dev, 0);
 
@@ -866,10 +852,6 @@ free_hw_desq:
                          xor_dev->hw_desq_virt, xor_dev->hw_desq);
 free_msi_irqs:
        platform_msi_domain_free_irqs(&pdev->dev);
-disable_clk:
-       clk_disable_unprepare(xor_dev->clk);
-disable_reg_clk:
-       clk_disable_unprepare(xor_dev->reg_clk);
        return ret;
 }
 
@@ -889,9 +871,6 @@ static int mv_xor_v2_remove(struct platform_device *pdev)
 
        tasklet_kill(&xor_dev->irq_tasklet);
 
-       clk_disable_unprepare(xor_dev->clk);
-       clk_disable_unprepare(xor_dev->reg_clk);
-
        return 0;
 }