diff options
Diffstat (limited to 'include/linux/platform_data')
| -rw-r--r-- | include/linux/platform_data/spi-imx.h | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/include/linux/platform_data/spi-imx.h b/include/linux/platform_data/spi-imx.h index 6f012fefa1a2..328f670d10bd 100644 --- a/include/linux/platform_data/spi-imx.h +++ b/include/linux/platform_data/spi-imx.h | |||
| @@ -5,24 +5,29 @@ | |||
| 5 | 5 | ||
| 6 | /* | 6 | /* |
| 7 | * struct spi_imx_master - device.platform_data for SPI controller devices. | 7 | * struct spi_imx_master - device.platform_data for SPI controller devices. |
| 8 | * @chipselect: Array of chipselects for this master. Numbers >= 0 mean gpio | 8 | * @chipselect: Array of chipselects for this master or NULL. Numbers >= 0 |
| 9 | * pins, numbers < 0 mean internal CSPI chipselects according | 9 | * mean GPIO pins, -ENOENT means internal CSPI chipselect |
| 10 | * to MXC_SPI_CS(). Normally you want to use gpio based chip | 10 | * matching the position in the array. E.g., if chipselect[1] = |
| 11 | * selects as the CSPI module tries to be intelligent about | 11 | * -ENOENT then a SPI slave using chip select 1 will use the |
| 12 | * when to assert the chipselect: The CSPI module deasserts the | 12 | * native SS1 line of the CSPI. Omitting the array will use |
| 13 | * chipselect once it runs out of input data. The other problem | 13 | * all native chip selects. |
| 14 | * is that it is not possible to mix between high active and low | 14 | |
| 15 | * active chipselects on one single bus using the internal | 15 | * Normally you want to use gpio based chip selects as the CSPI |
| 16 | * chipselects. Unfortunately Freescale decided to put some | 16 | * module tries to be intelligent about when to assert the |
| 17 | * chipselect: The CSPI module deasserts the chipselect once it | ||
| 18 | * runs out of input data. The other problem is that it is not | ||
| 19 | * possible to mix between high active and low active chipselects | ||
| 20 | * on one single bus using the internal chipselects. | ||
| 21 | * Unfortunately, on some SoCs, Freescale decided to put some | ||
| 17 | * chipselects on dedicated pins which are not usable as gpios, | 22 | * chipselects on dedicated pins which are not usable as gpios, |
| 18 | * so we have to support the internal chipselects. | 23 | * so we have to support the internal chipselects. |
| 19 | * @num_chipselect: ARRAY_SIZE(chipselect) | 24 | * |
| 25 | * @num_chipselect: If @chipselect is specified, ARRAY_SIZE(chipselect), | ||
| 26 | * otherwise the number of native chip selects. | ||
| 20 | */ | 27 | */ |
| 21 | struct spi_imx_master { | 28 | struct spi_imx_master { |
| 22 | int *chipselect; | 29 | int *chipselect; |
| 23 | int num_chipselect; | 30 | int num_chipselect; |
| 24 | }; | 31 | }; |
| 25 | 32 | ||
| 26 | #define MXC_SPI_CS(no) ((no) - 32) | ||
| 27 | |||
| 28 | #endif /* __MACH_SPI_H_*/ | 33 | #endif /* __MACH_SPI_H_*/ |
