Skip to content

Commit f1f3dd1

Browse files
qianfengrongAndi Shyti
authored andcommitted
i2c: emev2: Use devm_clk_get_enabled() helpers
The devm_clk_get_enabled() helpers: - call devm_clk_get() - call clk_prepare_enable() and register what is needed in order to call clk_disable_unprepare() when needed, as a managed resource. This simplifies the code and avoids the calls to clk_disable_unprepare(). While at it, no need to save clk pointer, drop sclk from struct em_i2c_device. Signed-off-by: Rong Qianfeng <[email protected]> Reviewed-by: Geert Uytterhoeven <[email protected]> Reviewed-by: Wolfram Sang <[email protected]> Signed-off-by: Andi Shyti <[email protected]>
1 parent d0f8e97 commit f1f3dd1

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

drivers/i2c/busses/i2c-emev2.c

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ struct em_i2c_device {
6767
void __iomem *base;
6868
struct i2c_adapter adap;
6969
struct completion msg_done;
70-
struct clk *sclk;
7170
struct i2c_client *slave;
7271
int irq;
7372
};
@@ -361,6 +360,7 @@ static const struct i2c_algorithm em_i2c_algo = {
361360
static int em_i2c_probe(struct platform_device *pdev)
362361
{
363362
struct em_i2c_device *priv;
363+
struct clk *sclk;
364364
int ret;
365365

366366
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
@@ -373,13 +373,9 @@ static int em_i2c_probe(struct platform_device *pdev)
373373

374374
strscpy(priv->adap.name, "EMEV2 I2C", sizeof(priv->adap.name));
375375

376-
priv->sclk = devm_clk_get(&pdev->dev, "sclk");
377-
if (IS_ERR(priv->sclk))
378-
return PTR_ERR(priv->sclk);
379-
380-
ret = clk_prepare_enable(priv->sclk);
381-
if (ret)
382-
return ret;
376+
sclk = devm_clk_get_enabled(&pdev->dev, "sclk");
377+
if (IS_ERR(sclk))
378+
return PTR_ERR(sclk);
383379

384380
priv->adap.timeout = msecs_to_jiffies(100);
385381
priv->adap.retries = 5;
@@ -397,34 +393,29 @@ static int em_i2c_probe(struct platform_device *pdev)
397393

398394
ret = platform_get_irq(pdev, 0);
399395
if (ret < 0)
400-
goto err_clk;
396+
return ret;
401397
priv->irq = ret;
398+
402399
ret = devm_request_irq(&pdev->dev, priv->irq, em_i2c_irq_handler, 0,
403400
"em_i2c", priv);
404401
if (ret)
405-
goto err_clk;
402+
return ret;
406403

407404
ret = i2c_add_adapter(&priv->adap);
408-
409405
if (ret)
410-
goto err_clk;
406+
return ret;
411407

412408
dev_info(&pdev->dev, "Added i2c controller %d, irq %d\n", priv->adap.nr,
413409
priv->irq);
414410

415411
return 0;
416-
417-
err_clk:
418-
clk_disable_unprepare(priv->sclk);
419-
return ret;
420412
}
421413

422414
static void em_i2c_remove(struct platform_device *dev)
423415
{
424416
struct em_i2c_device *priv = platform_get_drvdata(dev);
425417

426418
i2c_del_adapter(&priv->adap);
427-
clk_disable_unprepare(priv->sclk);
428419
}
429420

430421
static const struct of_device_id em_i2c_ids[] = {

0 commit comments

Comments
 (0)