[PATCH 1/7] spi: Call spi_of_register_slaves from core

Sascha Hauer s.hauer at pengutronix.de
Mon Oct 28 08:01:34 EDT 2013


Makes individual handling of OF spi slaves unnecessary in the bus drivers.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 drivers/spi/imx_spi.c   | 2 --
 drivers/spi/mvebu_spi.c | 3 ---
 drivers/spi/spi.c       | 8 +++++++-
 include/spi/spi.h       | 2 --
 4 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/spi/imx_spi.c b/drivers/spi/imx_spi.c
index 6f942bf..1c6b684 100644
--- a/drivers/spi/imx_spi.c
+++ b/drivers/spi/imx_spi.c
@@ -517,8 +517,6 @@ static int imx_spi_dt_probe(struct imx_spi *imx)
 		imx->cs_array[i] = cs_gpio;
 	}
 
-	spi_of_register_slaves(&imx->master, node);
-
 	return 0;
 }
 
diff --git a/drivers/spi/mvebu_spi.c b/drivers/spi/mvebu_spi.c
index 7aaa9fe..4a6d96f 100644
--- a/drivers/spi/mvebu_spi.c
+++ b/drivers/spi/mvebu_spi.c
@@ -361,9 +361,6 @@ static int mvebu_spi_probe(struct device_d *dev)
 	master->transfer = mvebu_spi_transfer;
 	master->num_chipselect = 1;
 
-	if (dev->device_node)
-		spi_of_register_slaves(master, dev->device_node);
-
 	ret = spi_register_master(master);
 	if (!ret)
 		return 0;
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 55bebe0..d273050 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -101,11 +101,15 @@ fail:
 EXPORT_SYMBOL(spi_new_device);
 
 #ifdef CONFIG_OFDEVICE
-void spi_of_register_slaves(struct spi_master *master, struct device_node *node)
+static void spi_of_register_slaves(struct spi_master *master)
 {
 	struct device_node *n;
 	struct spi_board_info chip;
 	struct property *reg;
+	struct device_node *node = master->dev->device_node;
+
+	if (!node)
+		return;
 
 	for_each_child_of_node(node, n) {
 		memset(&chip, 0, sizeof(chip));
@@ -222,6 +226,8 @@ int spi_register_master(struct spi_master *master)
 
 	list_add_tail(&master->list, &spi_master_list);
 
+	spi_of_register_slaves(master);
+
 	/* populate children from any spi device tables */
 	scan_boardinfo(master);
 	status = 0;
diff --git a/include/spi/spi.h b/include/spi/spi.h
index 45fd22c..b4358a8 100644
--- a/include/spi/spi.h
+++ b/include/spi/spi.h
@@ -446,6 +446,4 @@ static inline int spi_driver_register(struct driver_d *drv)
 #define device_spi_driver(drv)	\
 	register_driver_macro(device,spi,drv)
 
-void spi_of_register_slaves(struct spi_master *master, struct device_node *node);
-
 #endif /* __INCLUDE_SPI_H */
-- 
1.8.4.rc3




More information about the barebox mailing list