diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-11-15 14:19:57 -0500 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2012-11-21 18:25:33 -0500 |
commit | 743179849015dc71bb2ea63d8cd4bfa7fdfb4bc6 (patch) | |
tree | dcf0d554dd907740a5f4519355d4e896a94efd3b /include/linux/spi | |
parent | 15d0983f5cc862facc8453a592220598a36d7f9d (diff) |
of_spi: add generic binding support to specify cs gpio
This will allow to use gpio for chip select with no modification in the
driver binding
When use the cs-gpios, the gpio number will be passed via the cs_gpio field
and the number of chip select will automatically increased with max(hw cs, gpio cs).
So if for example the controller has 2 CS lines, and the cs-gpios
property looks like this:
cs-gpios = <&gpio1 0 0> <0> <&gpio1 1 0> <&gpio1 2 0>;
Then it should be configured so that num_chipselect = 4 with the
following mapping:
cs0 : &gpio1 0 0
cs1 : native
cs2 : &gpio1 1 0
cs3 : &gpio1 2 0
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: devicetree-discuss@lists.ozlabs.org
Cc: spi-devel-general@lists.sourceforge.net
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
[grant.likely: fixed up type of cs count so min() can do type checking]
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'include/linux/spi')
-rw-r--r-- | include/linux/spi/spi.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index fa702aeb5038..f62918946d86 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
@@ -90,6 +90,7 @@ struct spi_device { | |||
90 | void *controller_state; | 90 | void *controller_state; |
91 | void *controller_data; | 91 | void *controller_data; |
92 | char modalias[SPI_NAME_SIZE]; | 92 | char modalias[SPI_NAME_SIZE]; |
93 | int cs_gpio; /* chip select gpio */ | ||
93 | 94 | ||
94 | /* | 95 | /* |
95 | * likely need more hooks for more protocol options affecting how | 96 | * likely need more hooks for more protocol options affecting how |
@@ -362,6 +363,8 @@ struct spi_master { | |||
362 | int (*transfer_one_message)(struct spi_master *master, | 363 | int (*transfer_one_message)(struct spi_master *master, |
363 | struct spi_message *mesg); | 364 | struct spi_message *mesg); |
364 | int (*unprepare_transfer_hardware)(struct spi_master *master); | 365 | int (*unprepare_transfer_hardware)(struct spi_master *master); |
366 | /* gpio chip select */ | ||
367 | int *cs_gpios; | ||
365 | }; | 368 | }; |
366 | 369 | ||
367 | static inline void *spi_master_get_devdata(struct spi_master *master) | 370 | static inline void *spi_master_get_devdata(struct spi_master *master) |