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>
This commit is contained in:
parent
2826ba50ed
commit
fd5b82e640
|
@ -517,8 +517,6 @@ static int imx_spi_dt_probe(struct imx_spi *imx)
|
||||||
imx->cs_array[i] = cs_gpio;
|
imx->cs_array[i] = cs_gpio;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi_of_register_slaves(&imx->master, node);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -361,9 +361,6 @@ static int mvebu_spi_probe(struct device_d *dev)
|
||||||
master->transfer = mvebu_spi_transfer;
|
master->transfer = mvebu_spi_transfer;
|
||||||
master->num_chipselect = 1;
|
master->num_chipselect = 1;
|
||||||
|
|
||||||
if (dev->device_node)
|
|
||||||
spi_of_register_slaves(master, dev->device_node);
|
|
||||||
|
|
||||||
ret = spi_register_master(master);
|
ret = spi_register_master(master);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -100,12 +100,18 @@ fail:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(spi_new_device);
|
EXPORT_SYMBOL(spi_new_device);
|
||||||
|
|
||||||
#ifdef CONFIG_OFDEVICE
|
static void spi_of_register_slaves(struct spi_master *master)
|
||||||
void spi_of_register_slaves(struct spi_master *master, struct device_node *node)
|
|
||||||
{
|
{
|
||||||
struct device_node *n;
|
struct device_node *n;
|
||||||
struct spi_board_info chip;
|
struct spi_board_info chip;
|
||||||
struct property *reg;
|
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) {
|
for_each_child_of_node(node, n) {
|
||||||
memset(&chip, 0, sizeof(chip));
|
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);
|
spi_register_board_info(&chip, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* spi_register_board_info - register SPI devices for a given board
|
* 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);
|
list_add_tail(&master->list, &spi_master_list);
|
||||||
|
|
||||||
|
spi_of_register_slaves(master);
|
||||||
|
|
||||||
/* populate children from any spi device tables */
|
/* populate children from any spi device tables */
|
||||||
scan_boardinfo(master);
|
scan_boardinfo(master);
|
||||||
status = 0;
|
status = 0;
|
||||||
|
|
|
@ -446,6 +446,4 @@ static inline int spi_driver_register(struct driver_d *drv)
|
||||||
#define device_spi_driver(drv) \
|
#define device_spi_driver(drv) \
|
||||||
register_driver_macro(device,spi,drv)
|
register_driver_macro(device,spi,drv)
|
||||||
|
|
||||||
void spi_of_register_slaves(struct spi_master *master, struct device_node *node);
|
|
||||||
|
|
||||||
#endif /* __INCLUDE_SPI_H */
|
#endif /* __INCLUDE_SPI_H */
|
||||||
|
|
Loading…
Reference in New Issue