Thread (43 messages) 43 messages, 7 authors, 2012-08-01

[06/10,V2] spi: Add SPI driver for mx233/mx28

From: linux@roeck-us.net (Guenter Roeck)
Date: 2012-07-31 20:53:00
Also in: linux-spi

On Fri, Jul 06, 2012 at 06:17:25AM -0000, Marek Vasut wrote:
This is slightly reworked version of the SPI driver.
Support for DT has been added and it's been converted
to queued API.

Based on previous attempt by:
Fabio Estevam [off-list ref]

Signed-off-by: Fabio Estevam <redacted>
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chris Ball <redacted>
Cc: Detlev Zundel <redacted>
CC: Dong Aisheng <redacted>
Cc: Grant Likely <redacted>
Cc: Linux ARM kernel <redacted>
Cc: Rob Herring <redacted>
CC: Shawn Guo <redacted>
Cc: Stefano Babic <redacted>
Cc: Wolfgang Denk <redacted>

---
drivers/spi/Kconfig   |    7 +
 drivers/spi/Makefile  |    1 +
 drivers/spi/spi-mxs.c |  427 +++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 435 insertions(+)
 create mode 100644 drivers/spi/spi-mxs.c

V2: Fix my patch version management
    Select STMP_DEVICE (thanks Shawn for pointing this out)
Hi,

I have one question about this patch.

[ ... ]
quoted hunk ↗ jump to hunk
index 0000000..3c0b1ac
--- /dev/null
+++ b/drivers/spi/spi-mxs.c
[ ... ]
+
+static int __devinit mxs_spi_probe(struct platform_device *pdev)
+{
[ ... ]
+out_host_free:
+	clk_disable_unprepare(ssp->clk);
+	spi_master_put(host);
+	kfree(host);
+	return ret;
+}
+
+static int __devexit mxs_spi_remove(struct platform_device *pdev)
+{
+	struct spi_master *host;
+	struct mxs_spi *spi;
+	struct mxs_ssp *ssp;
+
+	host = platform_get_drvdata(pdev);
+	spi = spi_master_get_devdata(host);
+	ssp = &spi->ssp;
+
+	spi_unregister_master(host);
+
+	platform_set_drvdata(pdev, NULL);
+
+	clk_disable_unprepare(ssp->clk);
+
+	spi_master_put(host);
+	kfree(host);
+
Is the kfree() here and in the probe function really necessary ? 

Couple of reasons for asking: No other SPI master driver calls it in the remove
function (unless I missed it), most drivers don't call it in the probe
function error path, and if I call it in the remove function in a SPI master
driver I am working on, and load/unload the module several times in a row, I get
a nasty kernel crash.

Thanks,
Guenter
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help