Skip to content

Commit 2b34e8b

Browse files
Li Zetaomiquelraynal
authored andcommitted
mtd: rawnand: mtk: Use helper function devm_clk_get_enabled()
Since commit 7ef9651 ("clk: Provide new devm_clk helpers for prepared and enabled clocks"), devm_clk_get() and clk_prepare_enable() can now be replaced by devm_clk_get_enabled() when driver enables (and possibly prepares) the clocks for the whole lifetime of the device. Moreover, it is no longer necessary to unprepare and disable the clocks explicitly, so drop the label "clk_disable". And both mtk_nfc_enable_clk() and mtk_nfc_disable_clk() now have a single user, which is the resume or suspend callback, so drop this two helper function and just move related operations in the resume or suspend function. Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> Signed-off-by: Li Zetao <lizetao1@huawei.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20230821031737.1973183-8-lizetao1@huawei.com
1 parent 008b239 commit 2b34e8b

File tree

1 file changed

+19
-43
lines changed

1 file changed

+19
-43
lines changed

drivers/mtd/nand/raw/mtk_nand.c

Lines changed: 19 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,32 +1119,6 @@ static irqreturn_t mtk_nfc_irq(int irq, void *id)
11191119
return IRQ_HANDLED;
11201120
}
11211121

1122-
static int mtk_nfc_enable_clk(struct device *dev, struct mtk_nfc_clk *clk)
1123-
{
1124-
int ret;
1125-
1126-
ret = clk_prepare_enable(clk->nfi_clk);
1127-
if (ret) {
1128-
dev_err(dev, "failed to enable nfi clk\n");
1129-
return ret;
1130-
}
1131-
1132-
ret = clk_prepare_enable(clk->pad_clk);
1133-
if (ret) {
1134-
dev_err(dev, "failed to enable pad clk\n");
1135-
clk_disable_unprepare(clk->nfi_clk);
1136-
return ret;
1137-
}
1138-
1139-
return 0;
1140-
}
1141-
1142-
static void mtk_nfc_disable_clk(struct mtk_nfc_clk *clk)
1143-
{
1144-
clk_disable_unprepare(clk->nfi_clk);
1145-
clk_disable_unprepare(clk->pad_clk);
1146-
}
1147-
11481122
static int mtk_nfc_ooblayout_free(struct mtd_info *mtd, int section,
11491123
struct mtd_oob_region *oob_region)
11501124
{
@@ -1546,55 +1520,48 @@ static int mtk_nfc_probe(struct platform_device *pdev)
15461520
goto release_ecc;
15471521
}
15481522

1549-
nfc->clk.nfi_clk = devm_clk_get(dev, "nfi_clk");
1523+
nfc->clk.nfi_clk = devm_clk_get_enabled(dev, "nfi_clk");
15501524
if (IS_ERR(nfc->clk.nfi_clk)) {
15511525
dev_err(dev, "no clk\n");
15521526
ret = PTR_ERR(nfc->clk.nfi_clk);
15531527
goto release_ecc;
15541528
}
15551529

1556-
nfc->clk.pad_clk = devm_clk_get(dev, "pad_clk");
1530+
nfc->clk.pad_clk = devm_clk_get_enabled(dev, "pad_clk");
15571531
if (IS_ERR(nfc->clk.pad_clk)) {
15581532
dev_err(dev, "no pad clk\n");
15591533
ret = PTR_ERR(nfc->clk.pad_clk);
15601534
goto release_ecc;
15611535
}
15621536

1563-
ret = mtk_nfc_enable_clk(dev, &nfc->clk);
1564-
if (ret)
1565-
goto release_ecc;
1566-
15671537
irq = platform_get_irq(pdev, 0);
15681538
if (irq < 0) {
15691539
ret = -EINVAL;
1570-
goto clk_disable;
1540+
goto release_ecc;
15711541
}
15721542

15731543
ret = devm_request_irq(dev, irq, mtk_nfc_irq, 0x0, "mtk-nand", nfc);
15741544
if (ret) {
15751545
dev_err(dev, "failed to request nfi irq\n");
1576-
goto clk_disable;
1546+
goto release_ecc;
15771547
}
15781548

15791549
ret = dma_set_mask(dev, DMA_BIT_MASK(32));
15801550
if (ret) {
15811551
dev_err(dev, "failed to set dma mask\n");
1582-
goto clk_disable;
1552+
goto release_ecc;
15831553
}
15841554

15851555
platform_set_drvdata(pdev, nfc);
15861556

15871557
ret = mtk_nfc_nand_chips_init(dev, nfc);
15881558
if (ret) {
15891559
dev_err(dev, "failed to init nand chips\n");
1590-
goto clk_disable;
1560+
goto release_ecc;
15911561
}
15921562

15931563
return 0;
15941564

1595-
clk_disable:
1596-
mtk_nfc_disable_clk(&nfc->clk);
1597-
15981565
release_ecc:
15991566
mtk_ecc_release(nfc->ecc);
16001567

@@ -1619,15 +1586,15 @@ static void mtk_nfc_remove(struct platform_device *pdev)
16191586
}
16201587

16211588
mtk_ecc_release(nfc->ecc);
1622-
mtk_nfc_disable_clk(&nfc->clk);
16231589
}
16241590

16251591
#ifdef CONFIG_PM_SLEEP
16261592
static int mtk_nfc_suspend(struct device *dev)
16271593
{
16281594
struct mtk_nfc *nfc = dev_get_drvdata(dev);
16291595

1630-
mtk_nfc_disable_clk(&nfc->clk);
1596+
clk_disable_unprepare(nfc->clk.nfi_clk);
1597+
clk_disable_unprepare(nfc->clk.pad_clk);
16311598

16321599
return 0;
16331600
}
@@ -1642,9 +1609,18 @@ static int mtk_nfc_resume(struct device *dev)
16421609

16431610
udelay(200);
16441611

1645-
ret = mtk_nfc_enable_clk(dev, &nfc->clk);
1646-
if (ret)
1612+
ret = clk_prepare_enable(nfc->clk.nfi_clk);
1613+
if (ret) {
1614+
dev_err(dev, "failed to enable nfi clk\n");
16471615
return ret;
1616+
}
1617+
1618+
ret = clk_prepare_enable(nfc->clk.pad_clk);
1619+
if (ret) {
1620+
dev_err(dev, "failed to enable pad clk\n");
1621+
clk_disable_unprepare(nfc->clk.nfi_clk);
1622+
return ret;
1623+
}
16481624

16491625
/* reset NAND chip if VCC was powered off */
16501626
list_for_each_entry(chip, &nfc->chips, node) {

0 commit comments

Comments
 (0)