Skip to content

Commit f7e41b6

Browse files
Huan Yangbebarino
authored andcommitted
clk: lmk04832: 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(). Signed-off-by: Huan Yang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Stephen Boyd <[email protected]>
1 parent 1b2ed9d commit f7e41b6

File tree

1 file changed

+13
-30
lines changed

1 file changed

+13
-30
lines changed

drivers/clk/clk-lmk04832.c

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,39 +1405,35 @@ static int lmk04832_probe(struct spi_device *spi)
14051405

14061406
lmk->dev = &spi->dev;
14071407

1408-
lmk->oscin = devm_clk_get(lmk->dev, "oscin");
1408+
lmk->oscin = devm_clk_get_enabled(lmk->dev, "oscin");
14091409
if (IS_ERR(lmk->oscin)) {
14101410
dev_err(lmk->dev, "failed to get oscin clock\n");
14111411
return PTR_ERR(lmk->oscin);
14121412
}
14131413

1414-
ret = clk_prepare_enable(lmk->oscin);
1415-
if (ret)
1416-
return ret;
1417-
14181414
lmk->reset_gpio = devm_gpiod_get_optional(&spi->dev, "reset",
14191415
GPIOD_OUT_LOW);
14201416

14211417
lmk->dclk = devm_kcalloc(lmk->dev, info->num_channels >> 1,
14221418
sizeof(struct lmk_dclk), GFP_KERNEL);
14231419
if (!lmk->dclk) {
14241420
ret = -ENOMEM;
1425-
goto err_disable_oscin;
1421+
return ret;
14261422
}
14271423

14281424
lmk->clkout = devm_kcalloc(lmk->dev, info->num_channels,
14291425
sizeof(*lmk->clkout), GFP_KERNEL);
14301426
if (!lmk->clkout) {
14311427
ret = -ENOMEM;
1432-
goto err_disable_oscin;
1428+
return ret;
14331429
}
14341430

14351431
lmk->clk_data = devm_kzalloc(lmk->dev, struct_size(lmk->clk_data, hws,
14361432
info->num_channels),
14371433
GFP_KERNEL);
14381434
if (!lmk->clk_data) {
14391435
ret = -ENOMEM;
1440-
goto err_disable_oscin;
1436+
return ret;
14411437
}
14421438

14431439
device_property_read_u32(lmk->dev, "ti,vco-hz", &lmk->vco_rate);
@@ -1465,7 +1461,7 @@ static int lmk04832_probe(struct spi_device *spi)
14651461
dev_err(lmk->dev, "missing reg property in child: %s\n",
14661462
child->full_name);
14671463
of_node_put(child);
1468-
goto err_disable_oscin;
1464+
return ret;
14691465
}
14701466

14711467
of_property_read_u32(child, "ti,clkout-fmt",
@@ -1486,7 +1482,7 @@ static int lmk04832_probe(struct spi_device *spi)
14861482

14871483
__func__, PTR_ERR(lmk->regmap));
14881484
ret = PTR_ERR(lmk->regmap);
1489-
goto err_disable_oscin;
1485+
return ret;
14901486
}
14911487

14921488
regmap_write(lmk->regmap, LMK04832_REG_RST3W, LMK04832_BIT_RESET);
@@ -1496,43 +1492,43 @@ static int lmk04832_probe(struct spi_device *spi)
14961492
&rdbk_pin);
14971493
ret = lmk04832_set_spi_rdbk(lmk, rdbk_pin);
14981494
if (ret)
1499-
goto err_disable_oscin;
1495+
return ret;
15001496
}
15011497

15021498
regmap_bulk_read(lmk->regmap, LMK04832_REG_ID_PROD_MSB, &tmp, 3);
15031499
if ((tmp[0] << 8 | tmp[1]) != info->pid || tmp[2] != info->maskrev) {
15041500
dev_err(lmk->dev, "unsupported device type: pid 0x%04x, maskrev 0x%02x\n",
15051501
tmp[0] << 8 | tmp[1], tmp[2]);
15061502
ret = -EINVAL;
1507-
goto err_disable_oscin;
1503+
return ret;
15081504
}
15091505

15101506
ret = lmk04832_register_vco(lmk);
15111507
if (ret) {
15121508
dev_err(lmk->dev, "failed to init device clock path\n");
1513-
goto err_disable_oscin;
1509+
return ret;
15141510
}
15151511

15161512
if (lmk->vco_rate) {
15171513
dev_info(lmk->dev, "setting VCO rate to %u Hz\n", lmk->vco_rate);
15181514
ret = clk_set_rate(lmk->vco.clk, lmk->vco_rate);
15191515
if (ret) {
15201516
dev_err(lmk->dev, "failed to set VCO rate\n");
1521-
goto err_disable_oscin;
1517+
return ret;
15221518
}
15231519
}
15241520

15251521
ret = lmk04832_register_sclk(lmk);
15261522
if (ret) {
15271523
dev_err(lmk->dev, "failed to init SYNC/SYSREF clock path\n");
1528-
goto err_disable_oscin;
1524+
return ret;
15291525
}
15301526

15311527
for (i = 0; i < info->num_channels; i++) {
15321528
ret = lmk04832_register_clkout(lmk, i);
15331529
if (ret) {
15341530
dev_err(lmk->dev, "failed to register clk %d\n", i);
1535-
goto err_disable_oscin;
1531+
return ret;
15361532
}
15371533
}
15381534

@@ -1541,24 +1537,12 @@ static int lmk04832_probe(struct spi_device *spi)
15411537
lmk->clk_data);
15421538
if (ret) {
15431539
dev_err(lmk->dev, "failed to add provider (%d)\n", ret);
1544-
goto err_disable_oscin;
1540+
return ret;
15451541
}
15461542

15471543
spi_set_drvdata(spi, lmk);
15481544

15491545
return 0;
1550-
1551-
err_disable_oscin:
1552-
clk_disable_unprepare(lmk->oscin);
1553-
1554-
return ret;
1555-
}
1556-
1557-
static void lmk04832_remove(struct spi_device *spi)
1558-
{
1559-
struct lmk04832 *lmk = spi_get_drvdata(spi);
1560-
1561-
clk_disable_unprepare(lmk->oscin);
15621546
}
15631547

15641548
static const struct spi_device_id lmk04832_id[] = {
@@ -1579,7 +1563,6 @@ static struct spi_driver lmk04832_driver = {
15791563
.of_match_table = lmk04832_of_id,
15801564
},
15811565
.probe = lmk04832_probe,
1582-
.remove = lmk04832_remove,
15831566
.id_table = lmk04832_id,
15841567
};
15851568
module_spi_driver(lmk04832_driver);

0 commit comments

Comments
 (0)