spi: pxa2xx: Fix cs_change management
authorChristophe Ricard <christophe.ricard@gmail.com>
Sun, 20 Mar 2016 18:30:17 +0000 (19:30 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 28 Mar 2016 18:42:14 +0000 (19:42 +0100)
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>
drivers/spi/spi-pxa2xx.c

index 86c155aea0cfa5bb2eef15a5888ade9e560fc743..0ce82db8e484f2471f117d1123d4481e44a64c1e 100644 (file)
@@ -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);
        }