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

Commit 481815a6 authored by Arvind Yadav's avatar Arvind Yadav Committed by Boris Brezillon
Browse files

mtd: st_spi_fsm: Handle clk_prepare_enable/clk_disable_unprepare.



- clk_prepare_enable() can fail here and we must check its return value.
 - stfsm_probe() can fail here and we must disable clock.

Signed-off-by: default avatarArvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
parent 4d26f012
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -2073,15 +2073,17 @@ static int stfsm_probe(struct platform_device *pdev)
	ret = stfsm_init(fsm);
	if (ret) {
		dev_err(&pdev->dev, "Failed to initialise FSM Controller\n");
		return ret;
		goto err_clk_unprepare;
	}

	stfsm_fetch_platform_configs(pdev);

	/* Detect SPI FLASH device */
	info = stfsm_jedec_probe(fsm);
	if (!info)
		return -ENODEV;
	if (!info) {
		ret = -ENODEV;
		goto err_clk_unprepare;
	}
	fsm->info = info;

	/* Use device size to determine address width */
@@ -2095,11 +2097,11 @@ static int stfsm_probe(struct platform_device *pdev)
	if (info->config) {
		ret = info->config(fsm);
		if (ret)
			return ret;
			goto err_clk_unprepare;
	} else {
		ret = stfsm_prepare_rwe_seqs_default(fsm);
		if (ret)
			return ret;
			goto err_clk_unprepare;
	}

	fsm->mtd.name		= info->name;
@@ -2124,6 +2126,10 @@ static int stfsm_probe(struct platform_device *pdev)
		fsm->mtd.erasesize, (fsm->mtd.erasesize >> 10));

	return mtd_device_register(&fsm->mtd, NULL, 0);

err_clk_unprepare:
	clk_disable_unprepare(fsm->clk);
	return ret;
}

static int stfsm_remove(struct platform_device *pdev)
@@ -2147,9 +2153,7 @@ static int stfsmfsm_resume(struct device *dev)
{
	struct stfsm *fsm = dev_get_drvdata(dev);

	clk_prepare_enable(fsm->clk);

	return 0;
	return clk_prepare_enable(fsm->clk);
}
#endif