[ 3.5.y.z extended stable ] Patch "spi/mpc512x-psc: optionally keep PSC SS asserted across xfer" has been added to staging queue

Luis Henriques luis.henriques at canonical.com
Thu Apr 11 09:08:59 UTC 2013

This is a note to let you know that I have just added a patch titled

    spi/mpc512x-psc: optionally keep PSC SS asserted across xfer

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:


If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see



>From cf0740a2dc99bb197d63acd0045b852f82059362 Mon Sep 17 00:00:00 2001
From: Anatolij Gustschin <agust at denx.de>
Date: Wed, 13 Mar 2013 14:57:43 +0100
Subject: [PATCH] spi/mpc512x-psc: optionally keep PSC SS asserted across xfer

commit 1ad849aee5f53353ed88d9cd3d68a51b03a7d44f upstream.

Some SPI slave devices require asserted chip select signal across
multiple transfer segments of an SPI message. Currently the driver
always de-asserts the internal SS signal for every single transfer
segment of the message and ignores the 'cs_change' flag of the
transfer description. Disable the internal chip select (SS) only
if this is needed and indicated by the 'cs_change' flag.

Without this change, each partial transfer of a surrounding
multi-part SPI transaction might erroneously change the SS
signal, which might prevent slaves from answering the request
that was sent in a previous transfer segment because the
transaction could be considered aborted (SS was de-asserted
before reading the response).

Reported-by: Gerhard Sittig <gerhard.sittig at ifm.com>
Signed-off-by: Anatolij Gustschin <agust at denx.de>
Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
 drivers/spi/spi-mpc512x-psc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-mpc512x-psc.c b/drivers/spi/spi-mpc512x-psc.c
index 4c63f77..2e2b04f 100644
--- a/drivers/spi/spi-mpc512x-psc.c
+++ b/drivers/spi/spi-mpc512x-psc.c
@@ -164,7 +164,7 @@ static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi,

 		for (i = count; i > 0; i--) {
 			data = tx_buf ? *tx_buf++ : 0;
-			if (len == EOFBYTE)
+			if (len == EOFBYTE && t->cs_change)
 				setbits32(&fifo->txcmd, MPC512x_PSC_FIFO_EOF);
 			out_8(&fifo->txdata_8, data);

More information about the kernel-team mailing list