i2c: stm32f4: Use devm_clk_get_enabled()
authorAndi Shyti <andi.shyti@kernel.org>
Sun, 11 Jun 2023 22:56:58 +0000 (00:56 +0200)
committerWolfram Sang <wsa@kernel.org>
Mon, 23 Oct 2023 15:29:34 +0000 (17:29 +0200)
Replace the pair of functions, devm_clk_get() and
clk_prepare_enable(), with a single function
devm_clk_get_enabled().

Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Acked-by: Alain Volmat <alain.volmat@foss.st.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-stm32f4.c

index ecc54792a66f1dc6b9b010cab9751234e5a6d293..859ac0cf7f6cb156a5bde7a5ad81be6440f5eed9 100644 (file)
@@ -783,23 +783,17 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       i2c_dev->clk = devm_clk_get(&pdev->dev, NULL);
+       i2c_dev->clk = devm_clk_get_enabled(&pdev->dev, NULL);
        if (IS_ERR(i2c_dev->clk)) {
-               dev_err(&pdev->dev, "Error: Missing controller clock\n");
+               dev_err(&pdev->dev, "Failed to enable clock\n");
                return PTR_ERR(i2c_dev->clk);
        }
-       ret = clk_prepare_enable(i2c_dev->clk);
-       if (ret) {
-               dev_err(i2c_dev->dev, "Failed to prepare_enable clock\n");
-               return ret;
-       }
 
        rst = devm_reset_control_get_exclusive(&pdev->dev, NULL);
-       if (IS_ERR(rst)) {
-               ret = dev_err_probe(&pdev->dev, PTR_ERR(rst),
-                                   "Error: Missing reset ctrl\n");
-               goto clk_free;
-       }
+       if (IS_ERR(rst))
+               return dev_err_probe(&pdev->dev, PTR_ERR(rst),
+                                    "Error: Missing reset ctrl\n");
+
        reset_control_assert(rst);
        udelay(2);
        reset_control_deassert(rst);
@@ -816,7 +810,7 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
        if (ret) {
                dev_err(&pdev->dev, "Failed to request irq event %i\n",
                        irq_event);
-               goto clk_free;
+               return ret;
        }
 
        ret = devm_request_irq(&pdev->dev, irq_error, stm32f4_i2c_isr_error, 0,
@@ -824,12 +818,12 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
        if (ret) {
                dev_err(&pdev->dev, "Failed to request irq error %i\n",
                        irq_error);
-               goto clk_free;
+               return ret;
        }
 
        ret = stm32f4_i2c_hw_config(i2c_dev);
        if (ret)
-               goto clk_free;
+               return ret;
 
        adap = &i2c_dev->adap;
        i2c_set_adapdata(adap, i2c_dev);
@@ -845,7 +839,7 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
 
        ret = i2c_add_adapter(adap);
        if (ret)
-               goto clk_free;
+               return ret;
 
        platform_set_drvdata(pdev, i2c_dev);
 
@@ -854,10 +848,6 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
        dev_info(i2c_dev->dev, "STM32F4 I2C driver registered\n");
 
        return 0;
-
-clk_free:
-       clk_disable_unprepare(i2c_dev->clk);
-       return ret;
 }
 
 static void stm32f4_i2c_remove(struct platform_device *pdev)
@@ -865,8 +855,6 @@ static void stm32f4_i2c_remove(struct platform_device *pdev)
        struct stm32f4_i2c_dev *i2c_dev = platform_get_drvdata(pdev);
 
        i2c_del_adapter(&i2c_dev->adap);
-
-       clk_unprepare(i2c_dev->clk);
 }
 
 static const struct of_device_id stm32f4_i2c_match[] = {