diff options
author | Christophe Ricard <christophe.ricard@gmail.com> | 2016-03-20 14:30:17 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-03-28 14:42:14 -0400 |
commit | a52db659c79ceede44e2d5ca63ca058d49df8dea (patch) | |
tree | 5a1d4a12730ddc99ae22553b689240f67925836c /drivers/spi/spi-pxa2xx.c | |
parent | 8c3ad488fe0e4478b3b29b9501074c5fb1bfda0d (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.c | 5 |
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 | ||