Bob Feretich wrote:
Test 1 results:
With the Adeos patch installed, but Adeos disabled, the system ran
normally. IRQ 384s were presented and serviced. (The SD card removal
amd insertion was handled correctly.)
Ok. Could you try the following patch? It fixes the "always growing PIH
interrupt count" number here, and now I have some twl4030_usb
interrupts. However, I could not test the SD card insertion/removal,
because I am working on the board remotely.
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 8d608a1..0037e31 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -478,10 +478,6 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
if (msg->len == 0)
return -EINVAL;
-#ifdef CONFIG_IPIPE
- disable_irq(dev->irq);
-#endif /* CONFIG_IPIPE */
-
omap_i2c_write_reg(dev, OMAP_I2C_SA_REG, msg->addr);
/* REVISIT: Could the STB bit of I2C_CON be used with probing? */
@@ -525,9 +521,6 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
/* Let the user know if i2c is in a bad state */
if (time_after(jiffies, delay)) {
-#ifdef CONFIG_IPIPE
- enable_irq(dev->irq);
-#endif /* CONFIG_IPIPE */
dev_err(dev->dev, "controller timed out "
"waiting for start condition to finish\n");
return -ETIMEDOUT;
@@ -539,9 +532,6 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
w &= ~OMAP_I2C_CON_STT;
omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, w);
}
-#ifdef CONFIG_IPIPE
- enable_irq(dev->irq);
-#endif /* CONFIG_IPIPE */
/*
* REVISIT: We should abort the transfer on signals, but the bus goes
diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
index 9df9a5a..fb4b9f2 100644
--- a/drivers/mfd/twl4030-irq.c
+++ b/drivers/mfd/twl4030-irq.c
@@ -332,7 +332,7 @@ static int twl4030_irq_thread(void *data)
note_interrupt(module_irq, d,
IRQ_NONE);
else
- d->handle_irq(module_irq, d);
+ ipipe_handle_irq_cond(module_irq);
}
}
local_irq_enable();