* [PATCH] spi/qspi: cleanup qspi remova path and error check.
@ 2013-11-19 10:58 Sourav Poddar
[not found] ` <1384858703-30938-1-git-send-email-sourav.poddar-l0cyMroinI0@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Sourav Poddar @ 2013-11-19 10:58 UTC (permalink / raw)
To: broonie-DgEjT+Ai2ygdnm+yROfE0A
Cc: linux-spi-u79uwXL29TY76Z2rM5mHXA, Sourav Poddar
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.
Also align the runtime error path check through out the code.
Tested on DRA7 board.
Signed-off-by: Sourav Poddar <sourav.poddar-l0cyMroinI0@public.gmane.org>
---
drivers/spi/spi-ti-qspi.c | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-ti-qspi.c b/drivers/spi/spi-ti-qspi.c
index 0b71270..033ef8d 100644
--- a/drivers/spi/spi-ti-qspi.c
+++ b/drivers/spi/spi-ti-qspi.c
@@ -161,7 +161,7 @@ static int ti_qspi_setup(struct spi_device *spi)
qspi->spi_max_frequency, clk_div);
ret = pm_runtime_get_sync(qspi->dev);
- if (ret) {
+ if (ret < 0) {
dev_err(qspi->dev, "pm_runtime_get_sync() failed\n");
return ret;
}
@@ -517,10 +517,26 @@ free_master:
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;
}
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 4+ messages in thread[parent not found: <1384858703-30938-1-git-send-email-sourav.poddar-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH] spi/qspi: cleanup qspi remova path and error check. [not found] ` <1384858703-30938-1-git-send-email-sourav.poddar-l0cyMroinI0@public.gmane.org> @ 2013-11-19 11:00 ` Sourav Poddar 2013-11-19 11:31 ` Mark Brown 1 sibling, 0 replies; 4+ messages in thread From: Sourav Poddar @ 2013-11-19 11:00 UTC (permalink / raw) To: Sourav Poddar Cc: broonie-DgEjT+Ai2ygdnm+yROfE0A, linux-spi-u79uwXL29TY76Z2rM5mHXA On Tuesday 19 November 2013 04:28 PM, Sourav Poddar wrote: > 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. > Also align the runtime error path check through out the code. > > Tested on DRA7 board. > > Signed-off-by: Sourav Poddar<sourav.poddar-l0cyMroinI0@public.gmane.org> This is on Mark Brown SPI tree, branch: topic/qspi > --- > drivers/spi/spi-ti-qspi.c | 20 ++++++++++++++++++-- > 1 files changed, 18 insertions(+), 2 deletions(-) > > diff --git a/drivers/spi/spi-ti-qspi.c b/drivers/spi/spi-ti-qspi.c > index 0b71270..033ef8d 100644 > --- a/drivers/spi/spi-ti-qspi.c > +++ b/drivers/spi/spi-ti-qspi.c > @@ -161,7 +161,7 @@ static int ti_qspi_setup(struct spi_device *spi) > qspi->spi_max_frequency, clk_div); > > ret = pm_runtime_get_sync(qspi->dev); > - if (ret) { > + if (ret< 0) { > dev_err(qspi->dev, "pm_runtime_get_sync() failed\n"); > return ret; > } > @@ -517,10 +517,26 @@ free_master: > > 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; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] spi/qspi: cleanup qspi remova path and error check. [not found] ` <1384858703-30938-1-git-send-email-sourav.poddar-l0cyMroinI0@public.gmane.org> 2013-11-19 11:00 ` Sourav Poddar @ 2013-11-19 11:31 ` Mark Brown [not found] ` <20131119113125.GZ2674-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> 1 sibling, 1 reply; 4+ messages in thread From: Mark Brown @ 2013-11-19 11:31 UTC (permalink / raw) To: Sourav Poddar; +Cc: linux-spi-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 409 bytes --] On Tue, Nov 19, 2013 at 04:28:23PM +0530, Sourav Poddar wrote: > 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. What is the bug? The important bit of information is what's actually being changed. > Also align the runtime error path check through out the code. This should be split out. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <20131119113125.GZ2674-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>]
* Re: [PATCH] spi/qspi: cleanup qspi remova path and error check. [not found] ` <20131119113125.GZ2674-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> @ 2013-11-19 11:50 ` Sourav Poddar 0 siblings, 0 replies; 4+ messages in thread From: Sourav Poddar @ 2013-11-19 11:50 UTC (permalink / raw) To: Mark Brown; +Cc: linux-spi-u79uwXL29TY76Z2rM5mHXA On Tuesday 19 November 2013 05:01 PM, Mark Brown wrote: > On Tue, Nov 19, 2013 at 04:28:23PM +0530, Sourav Poddar wrote: >> 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. > What is the bug? The important bit of information is what's actually > being changed. > pm_runtime api is not used to properly disable the PM part. spi_unregister_master(qspi->master) shows a NULL pointer dereference. >> Also align the runtime error path check through out the code. Ok. > This should be split out. -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-11-19 11:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-19 10:58 [PATCH] spi/qspi: cleanup qspi remova path and error check Sourav Poddar
[not found] ` <1384858703-30938-1-git-send-email-sourav.poddar-l0cyMroinI0@public.gmane.org>
2013-11-19 11:00 ` Sourav Poddar
2013-11-19 11:31 ` Mark Brown
[not found] ` <20131119113125.GZ2674-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-11-19 11:50 ` Sourav Poddar
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.