9
0
Fork 0

Merge branch 'for-next/spi'

This commit is contained in:
Sascha Hauer 2013-11-07 08:31:47 +01:00
commit c803c74cb8
4 changed files with 18 additions and 10 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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
@ -210,6 +215,7 @@ static LIST_HEAD(spi_master_list);
*/
int spi_register_master(struct spi_master *master)
{
static int dyn_bus_id = (1 << 15) - 1;
int status = -ENODEV;
debug("%s: %s:%d\n", __func__, master->dev->name, master->dev->id);
@ -220,8 +226,17 @@ int spi_register_master(struct spi_master *master)
if (master->num_chipselect == 0)
return -EINVAL;
if ((master->bus_num < 0) && master->dev->device_node)
master->bus_num = of_alias_get_id(master->dev->device_node, "spi");
/* convention: dynamically assigned bus IDs count down from the max */
if (master->bus_num < 0)
master->bus_num = dyn_bus_id--;
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;

View File

@ -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 */