linux/3.8: backport 'spi/of: Use DT aliases for assigning bus number' from 3.9
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 36328
This commit is contained in:
parent
d3a46c4b7f
commit
54635e7f78
1 changed files with 37 additions and 0 deletions
|
@ -0,0 +1,37 @@
|
|||
From bb29785e0d6d150181704be2efcc3141044625e2 Mon Sep 17 00:00:00 2001
|
||||
From: Grant Likely <grant.likely@secretlab.ca>
|
||||
Date: Fri, 21 Dec 2012 19:32:09 +0000
|
||||
Subject: [PATCH] spi/of: Use DT aliases for assigning bus number
|
||||
|
||||
Linux assigns a number to each spi_master in the system, but when the
|
||||
platform used the device tree, the numbers are dynamically assigned and
|
||||
are not predictable. In general this shouldn't matter since the kernel
|
||||
doesn't use the bus number for anything other than matching a bus to
|
||||
spi_boardinfo (not used for DT). However, sometimes userspace needs to
|
||||
figure out which bus is which, so it makes sense to use the global
|
||||
/aliases namespace to choose a specific bus number.
|
||||
|
||||
It is safe to derive the bus number from an alias because aliases will
|
||||
never cause two buses to try and use the same bus number. (At one time
|
||||
the cell-index property was used for this purpose, but cell-index has
|
||||
the risk of an id collision).
|
||||
|
||||
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
|
||||
Cc: Anatolij Gustschin <agust@denx.de>
|
||||
Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
||||
---
|
||||
drivers/spi/spi.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -1135,6 +1135,9 @@ int spi_register_master(struct spi_maste
|
||||
if (master->num_chipselect == 0)
|
||||
return -EINVAL;
|
||||
|
||||
+ if ((master->bus_num < 0) && master->dev.of_node)
|
||||
+ master->bus_num = of_alias_get_id(master->dev.of_node, "spi");
|
||||
+
|
||||
/* convention: dynamically assigned bus IDs count down from the max */
|
||||
if (master->bus_num < 0) {
|
||||
/* FIXME switch to an IDR based scheme, something like
|
Loading…
Reference in a new issue