mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 07:31:29 +00:00
spi: use 'time_left' instead of 'timeout' with
Merge series from Wolfram Sang <wsa+renesas@sang-engineering.com>: There is a confusing pattern in the kernel to use a variable named 'timeout' to store the result of wait_for_*() functions causing patterns like: timeout = wait_for_completion_timeout(...) if (!timeout) return -ETIMEDOUT; with all kinds of permutations. Use 'time_left' as a variable to make the code obvious and self explaining. This is part of a tree-wide series. The rest of the patches can be found here (some parts may still be WIP): git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/time_left Because these patches are generated, I audit them before sending. This is why I will send series step by step. Build bot is happy with these patches, though. No functional changes intended.
This commit is contained in:
commit
6be871d5fd
@ -339,7 +339,7 @@ static irqreturn_t a3700_spi_interrupt(int irq, void *dev_id)
|
||||
static bool a3700_spi_wait_completion(struct spi_device *spi)
|
||||
{
|
||||
struct a3700_spi *a3700_spi;
|
||||
unsigned int timeout;
|
||||
unsigned long time_left;
|
||||
unsigned int ctrl_reg;
|
||||
unsigned long timeout_jiffies;
|
||||
|
||||
@ -361,12 +361,12 @@ static bool a3700_spi_wait_completion(struct spi_device *spi)
|
||||
a3700_spi->wait_mask);
|
||||
|
||||
timeout_jiffies = msecs_to_jiffies(A3700_SPI_TIMEOUT);
|
||||
timeout = wait_for_completion_timeout(&a3700_spi->done,
|
||||
timeout_jiffies);
|
||||
time_left = wait_for_completion_timeout(&a3700_spi->done,
|
||||
timeout_jiffies);
|
||||
|
||||
a3700_spi->wait_mask = 0;
|
||||
|
||||
if (timeout)
|
||||
if (time_left)
|
||||
return true;
|
||||
|
||||
/* there might be the case that right after we checked the
|
||||
|
@ -553,7 +553,7 @@ static int fsl_lpspi_dma_transfer(struct spi_controller *controller,
|
||||
{
|
||||
struct dma_async_tx_descriptor *desc_tx, *desc_rx;
|
||||
unsigned long transfer_timeout;
|
||||
unsigned long timeout;
|
||||
unsigned long time_left;
|
||||
struct sg_table *tx = &transfer->tx_sg, *rx = &transfer->rx_sg;
|
||||
int ret;
|
||||
|
||||
@ -594,9 +594,9 @@ static int fsl_lpspi_dma_transfer(struct spi_controller *controller,
|
||||
transfer->len);
|
||||
|
||||
/* Wait eDMA to finish the data transfer.*/
|
||||
timeout = wait_for_completion_timeout(&fsl_lpspi->dma_tx_completion,
|
||||
transfer_timeout);
|
||||
if (!timeout) {
|
||||
time_left = wait_for_completion_timeout(&fsl_lpspi->dma_tx_completion,
|
||||
transfer_timeout);
|
||||
if (!time_left) {
|
||||
dev_err(fsl_lpspi->dev, "I/O Error in DMA TX\n");
|
||||
dmaengine_terminate_all(controller->dma_tx);
|
||||
dmaengine_terminate_all(controller->dma_rx);
|
||||
@ -604,9 +604,9 @@ static int fsl_lpspi_dma_transfer(struct spi_controller *controller,
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
timeout = wait_for_completion_timeout(&fsl_lpspi->dma_rx_completion,
|
||||
transfer_timeout);
|
||||
if (!timeout) {
|
||||
time_left = wait_for_completion_timeout(&fsl_lpspi->dma_rx_completion,
|
||||
transfer_timeout);
|
||||
if (!time_left) {
|
||||
dev_err(fsl_lpspi->dev, "I/O Error in DMA RX\n");
|
||||
dmaengine_terminate_all(controller->dma_tx);
|
||||
dmaengine_terminate_all(controller->dma_rx);
|
||||
|
@ -1405,7 +1405,7 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
||||
{
|
||||
struct dma_async_tx_descriptor *desc_tx, *desc_rx;
|
||||
unsigned long transfer_timeout;
|
||||
unsigned long timeout;
|
||||
unsigned long time_left;
|
||||
struct spi_controller *controller = spi_imx->controller;
|
||||
struct sg_table *tx = &transfer->tx_sg, *rx = &transfer->rx_sg;
|
||||
struct scatterlist *last_sg = sg_last(rx->sgl, rx->nents);
|
||||
@ -1471,18 +1471,18 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
||||
transfer_timeout = spi_imx_calculate_timeout(spi_imx, transfer->len);
|
||||
|
||||
/* Wait SDMA to finish the data transfer.*/
|
||||
timeout = wait_for_completion_timeout(&spi_imx->dma_tx_completion,
|
||||
time_left = wait_for_completion_timeout(&spi_imx->dma_tx_completion,
|
||||
transfer_timeout);
|
||||
if (!timeout) {
|
||||
if (!time_left) {
|
||||
dev_err(spi_imx->dev, "I/O Error in DMA TX\n");
|
||||
dmaengine_terminate_all(controller->dma_tx);
|
||||
dmaengine_terminate_all(controller->dma_rx);
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
timeout = wait_for_completion_timeout(&spi_imx->dma_rx_completion,
|
||||
transfer_timeout);
|
||||
if (!timeout) {
|
||||
time_left = wait_for_completion_timeout(&spi_imx->dma_rx_completion,
|
||||
transfer_timeout);
|
||||
if (!time_left) {
|
||||
dev_err(&controller->dev, "I/O Error in DMA RX\n");
|
||||
spi_imx->devtype_data->reset(spi_imx);
|
||||
dmaengine_terminate_all(controller->dma_rx);
|
||||
@ -1501,7 +1501,7 @@ static int spi_imx_pio_transfer(struct spi_device *spi,
|
||||
{
|
||||
struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller);
|
||||
unsigned long transfer_timeout;
|
||||
unsigned long timeout;
|
||||
unsigned long time_left;
|
||||
|
||||
spi_imx->tx_buf = transfer->tx_buf;
|
||||
spi_imx->rx_buf = transfer->rx_buf;
|
||||
@ -1517,9 +1517,9 @@ static int spi_imx_pio_transfer(struct spi_device *spi,
|
||||
|
||||
transfer_timeout = spi_imx_calculate_timeout(spi_imx, transfer->len);
|
||||
|
||||
timeout = wait_for_completion_timeout(&spi_imx->xfer_done,
|
||||
transfer_timeout);
|
||||
if (!timeout) {
|
||||
time_left = wait_for_completion_timeout(&spi_imx->xfer_done,
|
||||
transfer_timeout);
|
||||
if (!time_left) {
|
||||
dev_err(&spi->dev, "I/O Error in PIO\n");
|
||||
spi_imx->devtype_data->reset(spi_imx);
|
||||
return -ETIMEDOUT;
|
||||
|
@ -344,7 +344,7 @@ static int pic32_sqi_one_message(struct spi_controller *host,
|
||||
struct spi_transfer *xfer;
|
||||
struct pic32_sqi *sqi;
|
||||
int ret = 0, mode;
|
||||
unsigned long timeout;
|
||||
unsigned long time_left;
|
||||
u32 val;
|
||||
|
||||
sqi = spi_controller_get_devdata(host);
|
||||
@ -410,8 +410,8 @@ static int pic32_sqi_one_message(struct spi_controller *host,
|
||||
writel(val, sqi->regs + PESQI_BD_CTRL_REG);
|
||||
|
||||
/* wait for xfer completion */
|
||||
timeout = wait_for_completion_timeout(&sqi->xfer_done, 5 * HZ);
|
||||
if (timeout == 0) {
|
||||
time_left = wait_for_completion_timeout(&sqi->xfer_done, 5 * HZ);
|
||||
if (time_left == 0) {
|
||||
dev_err(&sqi->host->dev, "wait timedout/interrupted\n");
|
||||
ret = -ETIMEDOUT;
|
||||
msg->status = ret;
|
||||
|
@ -498,7 +498,7 @@ static int pic32_spi_one_transfer(struct spi_controller *host,
|
||||
{
|
||||
struct pic32_spi *pic32s;
|
||||
bool dma_issued = false;
|
||||
unsigned long timeout;
|
||||
unsigned long time_left;
|
||||
int ret;
|
||||
|
||||
pic32s = spi_controller_get_devdata(host);
|
||||
@ -545,8 +545,8 @@ static int pic32_spi_one_transfer(struct spi_controller *host,
|
||||
}
|
||||
|
||||
/* wait for completion */
|
||||
timeout = wait_for_completion_timeout(&pic32s->xfer_done, 2 * HZ);
|
||||
if (timeout == 0) {
|
||||
time_left = wait_for_completion_timeout(&pic32s->xfer_done, 2 * HZ);
|
||||
if (time_left == 0) {
|
||||
dev_err(&spi->dev, "wait error/timedout\n");
|
||||
if (dma_issued) {
|
||||
dmaengine_terminate_all(host->dma_rx);
|
||||
|
@ -206,7 +206,8 @@ static int sun4i_spi_transfer_one(struct spi_controller *host,
|
||||
struct spi_transfer *tfr)
|
||||
{
|
||||
struct sun4i_spi *sspi = spi_controller_get_devdata(host);
|
||||
unsigned int mclk_rate, div, timeout;
|
||||
unsigned int mclk_rate, div;
|
||||
unsigned long time_left;
|
||||
unsigned int start, end, tx_time;
|
||||
unsigned int tx_len = 0;
|
||||
int ret = 0;
|
||||
@ -327,10 +328,10 @@ static int sun4i_spi_transfer_one(struct spi_controller *host,
|
||||
|
||||
tx_time = max(tfr->len * 8 * 2 / (tfr->speed_hz / 1000), 100U);
|
||||
start = jiffies;
|
||||
timeout = wait_for_completion_timeout(&sspi->done,
|
||||
msecs_to_jiffies(tx_time));
|
||||
time_left = wait_for_completion_timeout(&sspi->done,
|
||||
msecs_to_jiffies(tx_time));
|
||||
end = jiffies;
|
||||
if (!timeout) {
|
||||
if (!time_left) {
|
||||
dev_warn(&host->dev,
|
||||
"%s: timeout transferring %u bytes@%iHz for %i(%i)ms",
|
||||
dev_name(&spi->dev), tfr->len, tfr->speed_hz,
|
||||
|
@ -277,7 +277,8 @@ static int sun6i_spi_transfer_one(struct spi_controller *host,
|
||||
struct spi_transfer *tfr)
|
||||
{
|
||||
struct sun6i_spi *sspi = spi_controller_get_devdata(host);
|
||||
unsigned int div, div_cdr1, div_cdr2, timeout;
|
||||
unsigned int div, div_cdr1, div_cdr2;
|
||||
unsigned long time_left;
|
||||
unsigned int start, end, tx_time;
|
||||
unsigned int trig_level;
|
||||
unsigned int tx_len = 0, rx_len = 0, nbits = 0;
|
||||
@ -488,26 +489,26 @@ static int sun6i_spi_transfer_one(struct spi_controller *host,
|
||||
|
||||
tx_time = spi_controller_xfer_timeout(host, tfr);
|
||||
start = jiffies;
|
||||
timeout = wait_for_completion_timeout(&sspi->done,
|
||||
msecs_to_jiffies(tx_time));
|
||||
time_left = wait_for_completion_timeout(&sspi->done,
|
||||
msecs_to_jiffies(tx_time));
|
||||
|
||||
if (!use_dma) {
|
||||
sun6i_spi_drain_fifo(sspi);
|
||||
} else {
|
||||
if (timeout && rx_len) {
|
||||
if (time_left && rx_len) {
|
||||
/*
|
||||
* Even though RX on the peripheral side has finished
|
||||
* RX DMA might still be in flight
|
||||
*/
|
||||
timeout = wait_for_completion_timeout(&sspi->dma_rx_done,
|
||||
timeout);
|
||||
if (!timeout)
|
||||
time_left = wait_for_completion_timeout(&sspi->dma_rx_done,
|
||||
time_left);
|
||||
if (!time_left)
|
||||
dev_warn(&host->dev, "RX DMA timeout\n");
|
||||
}
|
||||
}
|
||||
|
||||
end = jiffies;
|
||||
if (!timeout) {
|
||||
if (!time_left) {
|
||||
dev_warn(&host->dev,
|
||||
"%s: timeout transferring %u bytes@%iHz for %i(%i)ms",
|
||||
dev_name(&spi->dev), tfr->len, tfr->speed_hz,
|
||||
|
@ -270,7 +270,7 @@ static int xlp_spi_xfer_block(struct xlp_spi_priv *xs,
|
||||
const unsigned char *tx_buf,
|
||||
unsigned char *rx_buf, int xfer_len, int cmd_cont)
|
||||
{
|
||||
int timeout;
|
||||
unsigned long time_left;
|
||||
u32 intr_mask = 0;
|
||||
|
||||
xs->tx_buf = tx_buf;
|
||||
@ -299,11 +299,11 @@ static int xlp_spi_xfer_block(struct xlp_spi_priv *xs,
|
||||
intr_mask |= XLP_SPI_INTR_DONE;
|
||||
xlp_spi_reg_write(xs, xs->cs, XLP_SPI_INTR_EN, intr_mask);
|
||||
|
||||
timeout = wait_for_completion_timeout(&xs->done,
|
||||
msecs_to_jiffies(1000));
|
||||
time_left = wait_for_completion_timeout(&xs->done,
|
||||
msecs_to_jiffies(1000));
|
||||
/* Disable interrupts */
|
||||
xlp_spi_reg_write(xs, xs->cs, XLP_SPI_INTR_EN, 0x0);
|
||||
if (!timeout) {
|
||||
if (!time_left) {
|
||||
dev_err(&xs->dev, "xfer timedout!\n");
|
||||
goto out;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user