summaryrefslogtreecommitdiffstats
path: root/drivers/spi
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-10-28 12:05:47 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-10-31 12:53:05 +0100
commitfd5b82e640e8f7b8d62bf305123e974567e41e48 (patch)
tree2cc51b796f4475e3c84ff9836beefd181bdb0235 /drivers/spi
parent2826ba50ed2e4cc33ac1f6058a3925d058089e5c (diff)
downloadbarebox-fd5b82e640e8f7b8d62bf305123e974567e41e48.tar.gz
barebox-fd5b82e640e8f7b8d62bf305123e974567e41e48.tar.xz
spi: Call spi_of_register_slaves from core
Makes individual handling of OF spi slaves unnecessary in the bus drivers. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/imx_spi.c2
-rw-r--r--drivers/spi/mvebu_spi.c3
-rw-r--r--drivers/spi/spi.c13
3 files changed, 10 insertions, 8 deletions
diff --git a/drivers/spi/imx_spi.c b/drivers/spi/imx_spi.c
index 6f942bf57b..1c6b68448b 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 7aaa9fe165..4a6d96f978 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 55bebe0de3..bf8265ac12 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -100,12 +100,18 @@ 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 (!IS_ENABLED(CONFIG_OFDEVICE))
+ return;
+
+ if (!node)
+ return;
for_each_child_of_node(node, n) {
memset(&chip, 0, sizeof(chip));
@@ -130,7 +136,6 @@ void spi_of_register_slaves(struct spi_master *master, struct device_node *node)
spi_register_board_info(&chip, 1);
}
}
-#endif
/**
* spi_register_board_info - register SPI devices for a given board
@@ -222,6 +227,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;