On 16 Aug 08:10 PM, Joachim Eastwood wrote: [..] > + > +static int i2c_lpc2k_clear_arb(struct lpc2k_i2c *i2c) > +{ > + unsigned long timeout = jiffies + msecs_to_jiffies(1000); > + > + /* > + * If the transfer needs to abort for some reason, we'll try to > + * force a stop condition to clear any pending bus conditions > + */ > + writel(LPC24XX_STO, i2c->base + LPC24XX_I2CONSET); > + > + /* Wait for status change */ > + while (readl(i2c->base + LPC24XX_I2STAT) != M_I2C_IDLE) { > + if (time_after(jiffies, timeout)) { > + /* Bus was not idle, try to reset adapter */ > + i2c_lpc2k_reset(i2c); > + return -EBUSY; > + } > + > + cpu_relax(); > + } I believe you can use readl_{relaxed}_poll_timeout_{atomic} here. Ccing Ariel, maybe he can help with a test. -- Ezequiel Garcia, VanguardiaSur www.vanguardiasur.com.ar -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html