mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
mpc8xxx_spi: fix SPI support on MPC8308RDB
The MPC8308RDB Reference Manual states that no bits in the SPMODE register are allowed to change while the enable (EN) bit is set. This driver changes the character length bits (LEN) while the enable (EN) bit is set. Clearing the EN bit while changing the LEN bits makes the driver work correctly on MPC8308RDB. Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu> Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
This commit is contained in:
parent
037e9d33db
commit
f138ca1373
1 changed files with 4 additions and 0 deletions
|
@ -124,6 +124,8 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
|
||||||
* len > 16 0
|
* len > 16 0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
spi->mode &= ~SPI_MODE_EN;
|
||||||
|
|
||||||
if (bitlen <= 16) {
|
if (bitlen <= 16) {
|
||||||
if (bitlen <= 4)
|
if (bitlen <= 4)
|
||||||
spi->mode = (spi->mode & 0xff0fffff) |
|
spi->mode = (spi->mode & 0xff0fffff) |
|
||||||
|
@ -138,6 +140,8 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
|
||||||
dout += 4;
|
dout += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spi->mode |= SPI_MODE_EN;
|
||||||
|
|
||||||
spi->tx = tmpdout; /* Write the data out */
|
spi->tx = tmpdout; /* Write the data out */
|
||||||
debug("*** spi_xfer: ... %08x written\n", tmpdout);
|
debug("*** spi_xfer: ... %08x written\n", tmpdout);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue