From 120cd1e83e32d284adba1f4fa8bd885f9421b0fd Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 4 Sep 2012 04:40:18 +0200 Subject: [PATCH] --- yaml --- r: 328630 b: refs/heads/master c: f13639dc6043eb67e308aa5cf96717a86c10f8b9 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/spi/spi-mxs.c | 20 +++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 9dbde890fd38..eab898f220b9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 727c10e3e54c4404f6842d246b15fe3703d33556 +refs/heads/master: f13639dc6043eb67e308aa5cf96717a86c10f8b9 diff --git a/trunk/drivers/spi/spi-mxs.c b/trunk/drivers/spi/spi-mxs.c index 21e1dcad3914..556e5ef907fa 100644 --- a/trunk/drivers/spi/spi-mxs.c +++ b/trunk/drivers/spi/spi-mxs.c @@ -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)