Thread (1 message) 1 message, 1 author, 2012-09-11

Re: [PATCH] i2c-mpc: Wait for STOP to hit the bus

From: Joakim Tjernlund <hidden>
Date: 2012-09-11 10:13:31
Also in: linux-i2c

Joakim Tjernlund/Transmode wrote on 2012/09/02 16:22:00:
Tabi Timur-B04825 [off-list ref] wrote on 2012/09/02 04:48:01:
quoted
On Thu, Aug 30, 2012 at 5:40 AM, Joakim Tjernlund
[off-list ref] wrote:
quoted
-       mpc_i2c_stop(i2c);
+       mpc_i2c_stop(i2c); /* Initiate STOP */
+       orig_jiffies = jiffies;
+       /* Wait until STOP is seen, allow up to 1 s */
+       while (readb(i2c->base + MPC_I2C_SR) & CSR_MBB) {
+               if (time_after(jiffies, orig_jiffies + HZ)) {
+                       u8 status = readb(i2c->base + MPC_I2C_SR);
+
+                       dev_dbg(i2c->dev, "timeout\n");
+                       if ((status & (CSR_MCF | CSR_MBB | CSR_RXAK)) != 0) {
+                               writeb(status & ~CSR_MAL,
+                                      i2c->base + MPC_I2C_SR);
+                               mpc_i2c_fixup(i2c);
+                       }
+                       return -EIO;
+               }
+               cond_resched();
+       }
Shouldn't the while-loop be inside mpc_i2c_stop() itself?
Possibly but I choosed to do it this way as there is a similar loop in the beginning of mpc_xfer().
I figured it has better visibility if it is in the same function.

 Jocke
Ping? Anything holding this patch back?

 Jocke
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help