diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-10-28 12:05:47 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-10-31 12:53:05 +0100 |
commit | fd5b82e640e8f7b8d62bf305123e974567e41e48 (patch) | |
tree | 2cc51b796f4475e3c84ff9836beefd181bdb0235 /drivers/spi | |
parent | 2826ba50ed2e4cc33ac1f6058a3925d058089e5c (diff) | |
download | barebox-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.c | 2 | ||||
-rw-r--r-- | drivers/spi/mvebu_spi.c | 3 | ||||
-rw-r--r-- | drivers/spi/spi.c | 13 |
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; |