Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 180890c7 authored by Gerhard Sittig's avatar Gerhard Sittig Committed by Anatolij Gustschin
Browse files

mtd: mpc5121_nfc: cleanup clock API use



use devm_clk_get() for automatic put after device close, check for and
propagate errors when enabling clocks, need to prepare clocks before
they can get enabled, adjust error code paths to correctly balance
get/put and prepare/unprepare and enable/disable calls

Signed-off-by: default avatarGerhard Sittig <gsi@denx.de>
Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
parent 7282bdb2
Loading
Loading
Loading
Loading
+12 −9
Original line number Original line Diff line number Diff line
@@ -617,10 +617,8 @@ static void mpc5121_nfc_free(struct device *dev, struct mtd_info *mtd)
	struct nand_chip *chip = mtd->priv;
	struct nand_chip *chip = mtd->priv;
	struct mpc5121_nfc_prv *prv = chip->priv;
	struct mpc5121_nfc_prv *prv = chip->priv;


	if (prv->clk) {
	if (prv->clk)
		clk_disable(prv->clk);
		clk_disable_unprepare(prv->clk);
		clk_put(prv->clk);
	}


	if (prv->csreg)
	if (prv->csreg)
		iounmap(prv->csreg);
		iounmap(prv->csreg);
@@ -629,6 +627,7 @@ static void mpc5121_nfc_free(struct device *dev, struct mtd_info *mtd)
static int mpc5121_nfc_probe(struct platform_device *op)
static int mpc5121_nfc_probe(struct platform_device *op)
{
{
	struct device_node *rootnode, *dn = op->dev.of_node;
	struct device_node *rootnode, *dn = op->dev.of_node;
	struct clk *clk;
	struct device *dev = &op->dev;
	struct device *dev = &op->dev;
	struct mpc5121_nfc_prv *prv;
	struct mpc5121_nfc_prv *prv;
	struct resource res;
	struct resource res;
@@ -730,14 +729,18 @@ static int mpc5121_nfc_probe(struct platform_device *op)
	of_node_put(rootnode);
	of_node_put(rootnode);


	/* Enable NFC clock */
	/* Enable NFC clock */
	prv->clk = clk_get(dev, "nfc_clk");
	clk = devm_clk_get(dev, "nfc_clk");
	if (IS_ERR(prv->clk)) {
	if (IS_ERR(clk)) {
		dev_err(dev, "Unable to acquire NFC clock!\n");
		dev_err(dev, "Unable to acquire NFC clock!\n");
		retval = PTR_ERR(prv->clk);
		retval = PTR_ERR(clk);
		goto error;
		goto error;
	}
	}

	retval = clk_prepare_enable(clk);
	clk_enable(prv->clk);
	if (retval) {
		dev_err(dev, "Unable to enable NFC clock!\n");
		goto error;
	}
	prv->clk = clk;


	/* Reset NAND Flash controller */
	/* Reset NAND Flash controller */
	nfc_set(mtd, NFC_CONFIG1, NFC_RESET);
	nfc_set(mtd, NFC_CONFIG1, NFC_RESET);