aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/spi/spi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index ec395a6baf9c..a00d006d4c3a 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -2170,6 +2170,15 @@ int spi_register_controller(struct spi_controller *ctlr)
2170 if (WARN(id < 0, "couldn't get idr")) 2170 if (WARN(id < 0, "couldn't get idr"))
2171 return id; 2171 return id;
2172 ctlr->bus_num = id; 2172 ctlr->bus_num = id;
2173 } else {
2174 /* devices with a fixed bus num must check-in with the num */
2175 mutex_lock(&board_lock);
2176 id = idr_alloc(&spi_master_idr, ctlr, ctlr->bus_num,
2177 ctlr->bus_num + 1, GFP_KERNEL);
2178 mutex_unlock(&board_lock);
2179 if (WARN(id < 0, "couldn't get idr"))
2180 return id == -ENOSPC ? -EBUSY : id;
2181 ctlr->bus_num = id;
2173 } 2182 }
2174 INIT_LIST_HEAD(&ctlr->queue); 2183 INIT_LIST_HEAD(&ctlr->queue);
2175 spin_lock_init(&ctlr->queue_lock); 2184 spin_lock_init(&ctlr->queue_lock);