Thread (8 messages) 8 messages, 3 authors, 2009-11-10

Re: [PATCH] mpc52xx-psc-spi: refactor probe and remove to make use of of_register_spi_devices()

From: Wolfram Sang <hidden>
Date: 2009-11-02 13:14:34
Also in: linux-spi

Hi Grant,
the patch referenced above is a little ugly.  Adding the call should
Agreed. I just referenced it to show there are more people wanting this
feature.
be really simple.  I've drafted a patch to do only that step and
attached it to this mail.  If this one works for you, then I'll merge
it immediately into -next.
One minor comment, but works in general:

Acked-by: Wolfram Sang <redacted>
Also, I'm resistant to changing the probe layout on this driver at
this time.  With the work being done to generalize the OF support
code, there is a strong possibility that of_platform will be
deprecated in favor of going back to using the platform bus directly
(just like how OF support works for i2c, spi, etc).  I'd rather not
refactor the driver until I'm certain of the direction that things are
going to go.
And this was possibly the best answer I could get \o/ Sounds really promising,
is there somewhere a discussion about how OF-generalization could happen?
quoted hunk ↗ jump to hunk
From 7629d40dc343ff216b752d5c68654dc9d30f0c91 Mon Sep 17 00:00:00 2001
From: Grant Likely <redacted>
Date: Sat, 31 Oct 2009 17:49:38 -0600
Subject: [PATCH] spi/mpc5200: Register SPI devices described in device tree

Add call to of_register_spi_devices() to register SPI devices described
in the OF device tree.

Signed-off-by: Grant Likely <redacted>
---
 drivers/spi/mpc52xx_psc_spi.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/drivers/spi/mpc52xx_psc_spi.c b/drivers/spi/mpc52xx_psc_spi.c
index 1b74d5c..b445464 100644
--- a/drivers/spi/mpc52xx_psc_spi.c
+++ b/drivers/spi/mpc52xx_psc_spi.c
@@ -17,6 +17,7 @@
 #include <linux/errno.h>
 #include <linux/interrupt.h>
 #include <linux/of_platform.h>
+#include <linux/of_spi.h>
 #include <linux/workqueue.h>
 #include <linux/completion.h>
 #include <linux/io.h>
@@ -464,6 +465,7 @@ static int __init mpc52xx_psc_spi_of_probe(struct of_device *op,
 	const u32 *regaddr_p;
 	u64 regaddr64, size64;
 	s16 id = -1;
+	int rc;
 
 	regaddr_p = of_get_address(op->node, 0, &size64, NULL);
 	if (!regaddr_p) {
@@ -485,8 +487,12 @@ static int __init mpc52xx_psc_spi_of_probe(struct of_device *op,
 		id = *psc_nump + 1;
 	}
 
-	return mpc52xx_psc_spi_do_probe(&op->dev, (u32)regaddr64, (u32)size64,
+	rc = mpc52xx_psc_spi_do_probe(&op->dev, (u32)regaddr64, (u32)size64,
 					irq_of_parse_and_map(op->node, 0), id);
+	if (!rc)
A matter of taste, maybe: I'd prefer

	if (rc == 0)

as (!ptr) is often used for catching errors with pointers, but here it is the
'all went OK'-path.
+		of_register_spi_devices(dev_get_drvdata(&op->dev), op->node);
+
+	return rc;
 }
 
 static int __exit mpc52xx_psc_spi_of_remove(struct of_device *op)
-- 
1.6.3.3
Regards,

   Wolfram

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

Attachments

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