diff options
author | Mingkai Hu <Mingkai.hu@freescale.com> | 2010-10-12 18:18:32 +0800 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-10-12 21:38:12 -0600 |
commit | 8b60d6c25b2a2d3525d5322de856c3ca408e5783 (patch) | |
tree | 2dd4c2c98f9facd87e052795ea79be0c734ec400 /drivers/spi/spi_fsl_lib.h | |
parent | b36ece832512c1a0afa54ff0a56d63492a1caf08 (diff) | |
download | linux-8b60d6c25b2a2d3525d5322de856c3ca408e5783.tar.gz linux-8b60d6c25b2a2d3525d5322de856c3ca408e5783.tar.bz2 linux-8b60d6c25b2a2d3525d5322de856c3ca408e5783.zip |
spi/fsl_spi: add eSPI controller support
Add eSPI controller support based on the library code spi_fsl_lib.c.
The eSPI controller is newer controller 85xx/Pxxx devices supported.
There're some differences comparing to the SPI controller:
1. Has different register map and different bit definition
So leave the code operated the register to the driver code, not
the common code.
2. Support 4 dedicated chip selects
The software can't controll the chip selects directly, The SPCOM[CS]
field is used to select which chip selects is used, and the
SPCOM[TRANLEN] field is set to tell the controller how long the CS
signal need to be asserted. So the driver doesn't need the chipselect
related function when transfering data, just set corresponding register
fields to controll the chipseclect.
3. Different Transmit/Receive FIFO access register behavior
For SPI controller, the Tx/Rx FIFO access register can hold only
one character regardless of the character length, but for eSPI
controller, the register can hold 4 or 2 characters according to
the character lengths. Access the Tx/Rx FIFO access register of the
eSPI controller will shift out/in 4/2 characters one time. For SPI
subsystem, the command and data are put into different transfers, so
we need to combine all the transfers to one transfer in order to pass
the transfer to eSPI controller.
4. The max transaction length limitation
The max transaction length one time is limitted by the SPCOM[TRANSLEN]
field which is 0xFFFF. When used mkfs.ext2 command to create ext2
filesystem on the flash, the read length will exceed the max value of
the SPCOM[TRANSLEN] field.
Signed-off-by: Mingkai Hu <Mingkai.hu@freescale.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'drivers/spi/spi_fsl_lib.h')
-rw-r--r-- | drivers/spi/spi_fsl_lib.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/spi/spi_fsl_lib.h b/drivers/spi/spi_fsl_lib.h index 6ae894917387..15aa6c21c729 100644 --- a/drivers/spi/spi_fsl_lib.h +++ b/drivers/spi/spi_fsl_lib.h @@ -26,6 +26,9 @@ struct mpc8xxx_spi { /* rx & tx bufs from the spi_transfer */ const void *tx; void *rx; +#ifdef CONFIG_SPI_FSL_ESPI + int len; +#endif int subblock; struct spi_pram __iomem *pram; |