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

Commit cbcabb7a authored by Sourav Poddar's avatar Sourav Poddar Committed by Mark Brown
Browse files

spi/qspi: Fix qspi remove path.



There is a bug in qspi removal path, as a result of which
qspi cannot be removed when used as a module. The patch
solves the bug and qspi can be removed cleanly.

The bugs fixed are:
-pm_runtime used around register access.
- pm_runtime_disable need to be done before removal.
- spi_unregister_master need to be called to unregister
   the spi device.
Tested on DRA7 board.

Signed-off-by: default avatarSourav Poddar <sourav.poddar@ti.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 05b96675
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -516,10 +516,26 @@ static int ti_qspi_probe(struct platform_device *pdev)

static int ti_qspi_remove(struct platform_device *pdev)
{
	struct	ti_qspi *qspi = platform_get_drvdata(pdev);
	struct spi_master *master;
	struct ti_qspi *qspi;
	int ret;

	master = platform_get_drvdata(pdev);
	qspi = spi_master_get_devdata(master);

	ret = pm_runtime_get_sync(qspi->dev);
	if (ret < 0) {
		dev_err(qspi->dev, "pm_runtime_get_sync() failed\n");
		return ret;
	}

	ti_qspi_write(qspi, QSPI_WC_INT_DISABLE, QSPI_INTR_ENABLE_CLEAR_REG);

	pm_runtime_put(qspi->dev);
	pm_runtime_disable(&pdev->dev);

	spi_unregister_master(master);

	return 0;
}