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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>

Reviewed-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>

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)




[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux