]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: xilinx: Use helper function devm_clk_get_optional_enabled()
authorZhang Zekun <zhangzekun11@huawei.com>
Wed, 4 Sep 2024 09:23:11 +0000 (17:23 +0800)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 5 Sep 2024 13:04:44 +0000 (15:04 +0200)
devm_clk_get_optional() and clk_prepare_enable() can be replaced by helper
function devm_clk_get_optional_enabled(). Let's simplify code with use of
devm_clk_get_optional_enabled() and avoid calling clk_disable_unprepare().

Signed-off-by: Zhang Zekun <zhangzekun11@huawei.com>
Link: https://lore.kernel.org/r/20240904092311.9544-5-zhangzekun11@huawei.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-xilinx.c

index 7348df38519815879673b3a7561882ee1143d1fb..afcf432a1573ed9952862e76dbb891e38a27893b 100644 (file)
@@ -333,12 +333,9 @@ static int __maybe_unused xgpio_suspend(struct device *dev)
  */
 static void xgpio_remove(struct platform_device *pdev)
 {
-       struct xgpio_instance *gpio = platform_get_drvdata(pdev);
-
        pm_runtime_get_sync(&pdev->dev);
        pm_runtime_put_noidle(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
-       clk_disable_unprepare(gpio->clk);
 }
 
 /**
@@ -644,15 +641,10 @@ static int xgpio_probe(struct platform_device *pdev)
                return PTR_ERR(chip->regs);
        }
 
-       chip->clk = devm_clk_get_optional(&pdev->dev, NULL);
+       chip->clk = devm_clk_get_optional_enabled(&pdev->dev, NULL);
        if (IS_ERR(chip->clk))
                return dev_err_probe(&pdev->dev, PTR_ERR(chip->clk), "input clock not found.\n");
 
-       status = clk_prepare_enable(chip->clk);
-       if (status < 0) {
-               dev_err(&pdev->dev, "Failed to prepare clk\n");
-               return status;
-       }
        pm_runtime_get_noresume(&pdev->dev);
        pm_runtime_set_active(&pdev->dev);
        pm_runtime_enable(&pdev->dev);
@@ -699,7 +691,6 @@ skip_irq:
 err_pm_put:
        pm_runtime_disable(&pdev->dev);
        pm_runtime_put_noidle(&pdev->dev);
-       clk_disable_unprepare(chip->clk);
        return status;
 }