[U-Boot] [PATCH 1/5] mpc8xxx_spi: fix SPI support on MPC8308RDB

Ira W. Snyder iws at ovro.caltech.edu
Wed Sep 12 23:17:31 CEST 2012


From: "Ira W. Snyder" <iws at ovro.caltech.edu>

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 at ovro.caltech.edu>
---
 drivers/spi/mpc8xxx_spi.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/spi/mpc8xxx_spi.c b/drivers/spi/mpc8xxx_spi.c
index 44ab39d..4e46041 100644
--- a/drivers/spi/mpc8xxx_spi.c
+++ b/drivers/spi/mpc8xxx_spi.c
@@ -124,6 +124,8 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 		 * len > 16               0
 		 */
 
+		spi->mode &= ~SPI_MODE_EN;
+
 		if (bitlen <= 16) {
 			if (bitlen <= 4)
 				spi->mode = (spi->mode & 0xff0fffff) |
@@ -138,6 +140,8 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 			dout += 4;
 		}
 
+		spi->mode |= SPI_MODE_EN;
+
 		spi->tx = tmpdout;	/* Write the data out */
 		debug("*** spi_xfer: ... %08x written\n", tmpdout);
 
-- 
1.7.8.6



More information about the U-Boot mailing list