diff options
author | Christophe Ricard <christophe.ricard@gmail.com> | 2016-03-20 21:30:17 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-03-28 21:42:14 +0300 |
commit | a52db659c79ceede44e2d5ca63ca058d49df8dea (patch) | |
tree | 5a1d4a12730ddc99ae22553b689240f67925836c | |
parent | 8c3ad488fe0e4478b3b29b9501074c5fb1bfda0d (diff) | |
download | linux-a52db659c79ceede44e2d5ca63ca058d49df8dea.tar.xz |
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>
-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) /* see if the next and current messages point * to the same chip */ - if (next_msg && next_msg->spi != msg->spi) - next_msg = NULL; - if (!next_msg || msg->state == ERROR_STATE) + if ((next_msg && next_msg->spi != msg->spi) || + msg->state == ERROR_STATE) cs_deassert(drv_data); } |