Skip to content

Commit

Permalink
mxs/spi: Rework the mxs_ssp_timeout to be more readable
Browse files Browse the repository at this point in the history
Rework the mxs_ssp_timeout() function to make it a bit more readable
and hopefully less error prone. Also, have only one successful exit
from the function and one failing exit instead of two.

Finally, discard the udelay() from this function altogether, as this
tightloop is quick enough it's pointless.

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Marek Vasut authored and Mark Brown committed Sep 5, 2012
1 parent 727c10e commit f13639d
Showing 1 changed file with 9 additions and 11 deletions.
20 changes: 9 additions & 11 deletions drivers/spi/spi-mxs.c
Original file line number Diff line number Diff line change
Expand Up @@ -177,25 +177,23 @@ static inline void mxs_spi_disable(struct mxs_spi *spi)

static int mxs_ssp_wait(struct mxs_spi *spi, int offset, int mask, bool set)
{
unsigned long timeout = jiffies + msecs_to_jiffies(SSP_TIMEOUT);
const unsigned long timeout = jiffies + msecs_to_jiffies(SSP_TIMEOUT);
struct mxs_ssp *ssp = &spi->ssp;
uint32_t reg;

while (1) {
do {
reg = readl_relaxed(ssp->base + offset);

if (set && ((reg & mask) == mask))
break;
if (!set)
reg = ~reg;

if (!set && ((~reg & mask) == mask))
break;
reg &= mask;

udelay(1);
if (reg == mask)
return 0;
} while (time_before(jiffies, timeout));

if (time_after(jiffies, timeout))
return -ETIMEDOUT;
}
return 0;
return -ETIMEDOUT;
}

static void mxs_ssp_dma_irq_callback(void *param)
Expand Down

0 comments on commit f13639d

Please sign in to comment.