aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/spi
diff options
context:
space:
mode:
authorFeng Tang <feng.tang@intel.com>2010-08-02 15:52:15 +0800
committerGrant Likely <grant.likely@secretlab.ca>2010-10-21 23:52:16 -0600
commit2b9603a0d7e395fb844af90fba71448bc8019077 (patch)
treeb828ff7c6819766e92dd304eb5e63e12527e516a /include/linux/spi
parentd4429f608abde89e8bc1e24b43cd503feb95c496 (diff)
downloadkernel_samsung_smdk4412-2b9603a0d7e395fb844af90fba71448bc8019077.zip
kernel_samsung_smdk4412-2b9603a0d7e395fb844af90fba71448bc8019077.tar.gz
kernel_samsung_smdk4412-2b9603a0d7e395fb844af90fba71448bc8019077.tar.bz2
spi: enable spi_board_info to be registered after spi_master
Currently spi_register_board_info() has to be called before its related spi_master be registered, otherwise these board info will be just ignored. This patch will remove this order limit, it adds a global spi master list like the existing global board info listr. Whenever a board info or a spi_master is registered, the spi master list or board info list will be scanned, and a new spi device will be created if there is a master-board info match. Signed-off-by: Feng Tang <feng.tang@intel.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'include/linux/spi')
-rw-r--r--include/linux/spi/spi.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
index 92e52a1..b4d7710 100644
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
@@ -204,6 +204,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
/**
* struct spi_master - interface to SPI master controller
* @dev: device interface to this driver
+ * @list: link with the global spi_master list
* @bus_num: board-specific (and often SOC-specific) identifier for a
* given SPI controller.
* @num_chipselect: chipselects are used to distinguish individual
@@ -238,6 +239,8 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
struct spi_master {
struct device dev;
+ struct list_head list;
+
/* other than negative (== assign one dynamically), bus_num is fully
* board-specific. usually that simplifies to being SOC-specific.
* example: one SOC has three SPI controllers, numbered 0..2,