From 6c0b1cfe99cab837ca5dc599e231123eeb658720 Mon Sep 17 00:00:00 2001 From: Nishanth Menon Date: Wed, 22 Feb 2012 20:03:45 -0600 Subject: [PATCH] --- yaml --- r: 296847 b: refs/heads/master c: 3f8349e6e98ba0455437724589072523865eae5e h: refs/heads/master i: 296845: 8d15786946e1352bc72e4d34dee8d7af0366c448 296843: 6131ea23d612e32eb4950034f955e00c8e540312 296839: 12cffe1ba101f36b2de758aeb1b2241d2d6b61ce 296831: 9a955b4fdb7745ff9787053b875528e5dcdb497d v: v3 --- [refs] | 2 +- trunk/drivers/mfd/twl6030-irq.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f0bc2dff292a..2cd5fe3b4f6d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 91d6a9a6c0d98ef6daeaf229e5acada652b4f6f0 +refs/heads/master: 3f8349e6e98ba0455437724589072523865eae5e diff --git a/trunk/drivers/mfd/twl6030-irq.c b/trunk/drivers/mfd/twl6030-irq.c index c6b456ad7342..aa367a2c846c 100644 --- a/trunk/drivers/mfd/twl6030-irq.c +++ b/trunk/drivers/mfd/twl6030-irq.c @@ -185,8 +185,17 @@ static int twl6030_irq_thread(void *data) } local_irq_enable(); } - ret = twl_i2c_write(TWL_MODULE_PIH, sts.bytes, - REG_INT_STS_A, 3); /* clear INT_STS_A */ + + /* + * NOTE: + * Simulation confirms that documentation is wrong w.r.t the + * interrupt status clear operation. A single *byte* write to + * any one of STS_A to STS_C register results in all three + * STS registers being reset. Since it does not matter which + * value is written, all three registers are cleared on a + * single byte write, so we just use 0x0 to clear. + */ + ret = twl_i2c_write_u8(TWL_MODULE_PIH, 0x00, REG_INT_STS_A); if (ret) pr_warning("twl6030: I2C error in clearing PIH ISR\n");