Commit 35bba23e authored by Mark Brown's avatar Mark Brown

Merge remote-tracking branch 'spi/for-6.2' into spi-6.2

parents 50028988 eede42c9
...@@ -366,7 +366,7 @@ static void dw_spi_irq_setup(struct dw_spi *dws) ...@@ -366,7 +366,7 @@ static void dw_spi_irq_setup(struct dw_spi *dws)
* will be adjusted at the final stage of the IRQ-based SPI transfer * will be adjusted at the final stage of the IRQ-based SPI transfer
* execution so not to lose the leftover of the incoming data. * execution so not to lose the leftover of the incoming data.
*/ */
level = min_t(u16, dws->fifo_len / 2, dws->tx_len); level = min_t(unsigned int, dws->fifo_len / 2, dws->tx_len);
dw_writel(dws, DW_SPI_TXFTLR, level); dw_writel(dws, DW_SPI_TXFTLR, level);
dw_writel(dws, DW_SPI_RXFTLR, level - 1); dw_writel(dws, DW_SPI_RXFTLR, level - 1);
......
...@@ -89,10 +89,22 @@ MODULE_PARM_DESC(bufsiz, "data bytes in biggest supported SPI message"); ...@@ -89,10 +89,22 @@ MODULE_PARM_DESC(bufsiz, "data bytes in biggest supported SPI message");
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
static ssize_t
spidev_sync_unlocked(struct spi_device *spi, struct spi_message *message)
{
ssize_t status;
status = spi_sync(spi, message);
if (status == 0)
status = message->actual_length;
return status;
}
static ssize_t static ssize_t
spidev_sync(struct spidev_data *spidev, struct spi_message *message) spidev_sync(struct spidev_data *spidev, struct spi_message *message)
{ {
int status; ssize_t status;
struct spi_device *spi; struct spi_device *spi;
mutex_lock(&spidev->spi_lock); mutex_lock(&spidev->spi_lock);
...@@ -101,10 +113,9 @@ spidev_sync(struct spidev_data *spidev, struct spi_message *message) ...@@ -101,10 +113,9 @@ spidev_sync(struct spidev_data *spidev, struct spi_message *message)
if (spi == NULL) if (spi == NULL)
status = -ESHUTDOWN; status = -ESHUTDOWN;
else else
status = spi_sync(spi, message); status = spidev_sync_unlocked(spi, message);
if (status == 0) mutex_unlock(&spidev->spi_lock);
status = message->actual_length;
mutex_unlock(&spidev->spi_lock); mutex_unlock(&spidev->spi_lock);
return status; return status;
...@@ -294,7 +305,7 @@ static int spidev_message(struct spidev_data *spidev, ...@@ -294,7 +305,7 @@ static int spidev_message(struct spidev_data *spidev,
spi_message_add_tail(k_tmp, &msg); spi_message_add_tail(k_tmp, &msg);
} }
status = spidev_sync(spidev, &msg); status = spidev_sync_unlocked(spidev->spi, &msg);
if (status < 0) if (status < 0)
goto done; goto done;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment