On Sun, Nov 11, 2012 at 08:42:00PM +0530, Laxman Dewangan wrote: > +#define TPS80031_RGEMAP_IRQ(_reg, _mask) \ Why RGEMAP_IRQ? > +static struct regmap_irq_chip tps80031_irq_chip = { > + .name = "tps80031", > + .irqs = tps80031_main_irqs, > + .num_irqs = ARRAY_SIZE(tps80031_main_irqs), > + .num_regs = 3, > + .status_base = TPS80031_INT_STS_A, > + .mask_base = TPS80031_INT_MSK_LINE_A, > + .wake_base = 1, I'm not sure your wake_base setting is sane here - this is expected to be a register. If it is a register why is it not a #define? > +static int __devinit tps80031_irq_init(struct tps80031 *tps80031, int irq, > + int irq_base) > +{ > + struct device *dev = tps80031->dev; > + int i, ret; > + > + for (i = 0; i < 3; i++) > + tps80031_write(dev, SLAVE_ID2, > + TPS80031_INT_MSK_STS_A + i, 0x00); regmap ought to be masking everything for you on init.