mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
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: Sourav Poddar <sourav.poddar@ti.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
05b96675db
commit
cbcabb7a30
@ -516,10 +516,26 @@ free_master:
|
|||||||
|
|
||||||
static int ti_qspi_remove(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);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user