summaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi.c
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/spi.c
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/spi.c')
-rw-r--r--drivers/spi/spi.c13
1 files changed, 10 insertions, 3 deletions
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;