diff options
author | Rasmus Villemoes <rasmus.villemoes@prevas.dk> | 2019-03-06 10:32:05 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-03-18 14:47:24 +0000 |
commit | 69b921acae8a5b7feef03921d9b42c3634f3b9d1 (patch) | |
tree | e58070328b6fbd2601d2f300fa3315b2f75b9691 /drivers/spi/spi-fsl-lib.h | |
parent | 84d8df745b622ada89ef427541ad03e928269f09 (diff) | |
download | linux-stable-69b921acae8a5b7feef03921d9b42c3634f3b9d1.tar.gz linux-stable-69b921acae8a5b7feef03921d9b42c3634f3b9d1.tar.bz2 linux-stable-69b921acae8a5b7feef03921d9b42c3634f3b9d1.zip |
spi: spi-fsl-spi: support use of the SPISEL_BOOT signal on MPC8309
The MPC8309 has a dedicated signal, SPISEL_BOOT, usually used as chip
select for the flash device from which the bootloader is loaded. It is
not an ordinary gpio, but is simply controlled via the SPI_CS register
in the system configuration.
To allow accessing such a spi slave, we need to teach
fsl_spi_cs_control() how to control the SPISEL_BOOT signal. To
distinguish the gpio-controlled slaves, continue to have those use
chip_select values of 0..ngpios-1, and use chip_select == ngpios for
the boot flash.
I'm not too happy with all the ifdeffery, but it seems to be necessary
for guarding the sysdev/fsl_soc.h and use of
get_immrbase() (spi-fsl-lib.c already contains similar ifdeffery).
Googling suggests that the MPC8306 is similar, with the SPI_CS
register at the same offset.
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-fsl-lib.h')
-rw-r--r-- | drivers/spi/spi-fsl-lib.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/spi/spi-fsl-lib.h b/drivers/spi/spi-fsl-lib.h index f303f306b38e..483734bc1b1e 100644 --- a/drivers/spi/spi-fsl-lib.h +++ b/drivers/spi/spi-fsl-lib.h @@ -95,8 +95,10 @@ static inline u32 mpc8xxx_spi_read_reg(__be32 __iomem *reg) struct mpc8xxx_spi_probe_info { struct fsl_spi_platform_data pdata; + int ngpios; int *gpios; bool *alow_flags; + __be32 __iomem *immr_spi_cs; }; extern u32 mpc8xxx_spi_tx_buf_u8(struct mpc8xxx_spi *mpc8xxx_spi); |