aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-pxa2xx.c
diff options
context:
space:
mode:
authorChristophe Ricard <christophe.ricard@gmail.com>2016-03-20 14:30:17 -0400
committerMark Brown <broonie@kernel.org>2016-03-28 14:42:14 -0400
commita52db659c79ceede44e2d5ca63ca058d49df8dea (patch)
tree5a1d4a12730ddc99ae22553b689240f67925836c /drivers/spi/spi-pxa2xx.c
parent8c3ad488fe0e4478b3b29b9501074c5fb1bfda0d (diff)
spi: pxa2xx: Fix cs_change management
Fix cs_change management so that it is in line with other spi drivers. In the spi core api helpers such as spi_bus_lock/unlock and spi_sync_locked or cs_change field in spi_transfer help to manage chip select from the device driver. The driver was setting the chip select to idle if the message queue was empty despite cs_change or other status field set by spi_bus_lock/unlock or spi_sync_locked. Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-pxa2xx.c')
-rw-r--r--drivers/spi/spi-pxa2xx.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index 86c155aea0cf..0ce82db8e484 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -570,9 +570,8 @@ static void giveback(struct driver_data *drv_data)
570 /* see if the next and current messages point 570 /* see if the next and current messages point
571 * to the same chip 571 * to the same chip
572 */ 572 */
573 if (next_msg && next_msg->spi != msg->spi) 573 if ((next_msg && next_msg->spi != msg->spi) ||
574 next_msg = NULL; 574 msg->state == ERROR_STATE)
575 if (!next_msg || msg->state == ERROR_STATE)
576 cs_deassert(drv_data); 575 cs_deassert(drv_data);
577 } 576 }
578 577