diff mbox series

[v2] i2c: mpc: Use devm_clk_get_optional_enabled() to simplify code

Message ID 20240904122226.85377-1-zhangzekun11@huawei.com
State Accepted
Delegated to: Andi Shyti
Headers show
Series [v2] i2c: mpc: Use devm_clk_get_optional_enabled() to simplify code | expand

Commit Message

Zhang Zekun Sept. 4, 2024, 12:22 p.m. UTC
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>
---
v2: Fix mistakes in commit message.

 drivers/i2c/busses/i2c-mpc.c | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

Comments

Chris Packham Sept. 4, 2024, 9:27 p.m. UTC | #1
Hi Zhang,

On 5/09/24 00:22, Zhang Zekun wrote:
> 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>

Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>

Thanks

> ---
> v2: Fix mistakes in commit message.
>
>   drivers/i2c/busses/i2c-mpc.c | 23 ++++-------------------
>   1 file changed, 4 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index 41d6c8ed163a..236d6b8ba867 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -88,7 +88,6 @@ struct mpc_i2c {
>   	int irq;
>   	u32 real_clk;
>   	u8 fdr, dfsrr;
> -	struct clk *clk_per;
>   	u32 cntl_bits;
>   	enum mpc_i2c_action action;
>   	struct i2c_msg *msgs;
> @@ -779,7 +778,6 @@ static int fsl_i2c_probe(struct platform_device *op)
>   	struct clk *clk;
>   	int result;
>   	u32 clock;
> -	int err;
>   
>   	i2c = devm_kzalloc(&op->dev, sizeof(*i2c), GFP_KERNEL);
>   	if (!i2c)
> @@ -809,18 +807,12 @@ static int fsl_i2c_probe(struct platform_device *op)
>   	 * enable clock for the I2C peripheral (non fatal),
>   	 * keep a reference upon successful allocation
>   	 */
> -	clk = devm_clk_get_optional(&op->dev, NULL);
> -	if (IS_ERR(clk))
> -		return PTR_ERR(clk);
> -
> -	err = clk_prepare_enable(clk);
> -	if (err) {
> +	clk = devm_clk_get_optional_enabled(&op->dev, NULL);
> +	if (IS_ERR(clk)) {
>   		dev_err(&op->dev, "failed to enable clock\n");
> -		return err;
> +		return PTR_ERR(clk);
>   	}
>   
> -	i2c->clk_per = clk;
> -
>   	if (of_property_read_bool(op->dev.of_node, "fsl,preserve-clocking")) {
>   		clock = MPC_I2C_CLOCK_PRESERVE;
>   	} else {
> @@ -876,14 +868,9 @@ static int fsl_i2c_probe(struct platform_device *op)
>   
>   	result = i2c_add_numbered_adapter(&i2c->adap);
>   	if (result)
> -		goto fail_add;
> +		return result;
>   
>   	return 0;
> -
> - fail_add:
> -	clk_disable_unprepare(i2c->clk_per);
> -
> -	return result;
>   };
>   
>   static void fsl_i2c_remove(struct platform_device *op)
> @@ -891,8 +878,6 @@ static void fsl_i2c_remove(struct platform_device *op)
>   	struct mpc_i2c *i2c = platform_get_drvdata(op);
>   
>   	i2c_del_adapter(&i2c->adap);
> -
> -	clk_disable_unprepare(i2c->clk_per);
>   };
>   
>   static int __maybe_unused mpc_i2c_suspend(struct device *dev)
Andi Shyti Sept. 5, 2024, 5:33 p.m. UTC | #2
Hi Zhang,

On Wed, Sep 04, 2024 at 08:22:26PM GMT, Zhang Zekun wrote:
> 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>

Merged to i2c/i2c-host, with some minimum grammatical fixes in
the commit log

Thanks,
Andi
diff mbox series

Patch

diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index 41d6c8ed163a..236d6b8ba867 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -88,7 +88,6 @@  struct mpc_i2c {
 	int irq;
 	u32 real_clk;
 	u8 fdr, dfsrr;
-	struct clk *clk_per;
 	u32 cntl_bits;
 	enum mpc_i2c_action action;
 	struct i2c_msg *msgs;
@@ -779,7 +778,6 @@  static int fsl_i2c_probe(struct platform_device *op)
 	struct clk *clk;
 	int result;
 	u32 clock;
-	int err;
 
 	i2c = devm_kzalloc(&op->dev, sizeof(*i2c), GFP_KERNEL);
 	if (!i2c)
@@ -809,18 +807,12 @@  static int fsl_i2c_probe(struct platform_device *op)
 	 * enable clock for the I2C peripheral (non fatal),
 	 * keep a reference upon successful allocation
 	 */
-	clk = devm_clk_get_optional(&op->dev, NULL);
-	if (IS_ERR(clk))
-		return PTR_ERR(clk);
-
-	err = clk_prepare_enable(clk);
-	if (err) {
+	clk = devm_clk_get_optional_enabled(&op->dev, NULL);
+	if (IS_ERR(clk)) {
 		dev_err(&op->dev, "failed to enable clock\n");
-		return err;
+		return PTR_ERR(clk);
 	}
 
-	i2c->clk_per = clk;
-
 	if (of_property_read_bool(op->dev.of_node, "fsl,preserve-clocking")) {
 		clock = MPC_I2C_CLOCK_PRESERVE;
 	} else {
@@ -876,14 +868,9 @@  static int fsl_i2c_probe(struct platform_device *op)
 
 	result = i2c_add_numbered_adapter(&i2c->adap);
 	if (result)
-		goto fail_add;
+		return result;
 
 	return 0;
-
- fail_add:
-	clk_disable_unprepare(i2c->clk_per);
-
-	return result;
 };
 
 static void fsl_i2c_remove(struct platform_device *op)
@@ -891,8 +878,6 @@  static void fsl_i2c_remove(struct platform_device *op)
 	struct mpc_i2c *i2c = platform_get_drvdata(op);
 
 	i2c_del_adapter(&i2c->adap);
-
-	clk_disable_unprepare(i2c->clk_per);
 };
 
 static int __maybe_unused mpc_i2c_suspend(struct device *dev)