Message ID | 1374595624-15054-3-git-send-email-grygorii.strashko@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 23/07/13 17:07, Grygorii Strashko wrote: > Add a missed check for errors when TWL IRQs are masked > initially on probe and report an error in case of failure. > > Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> > --- > drivers/mfd/twl6030-irq.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c > index b6030d9..790cc28 100644 > --- a/drivers/mfd/twl6030-irq.c > +++ b/drivers/mfd/twl6030-irq.c > @@ -313,7 +313,7 @@ int twl6030_init_irq(struct device *dev, int irq_num) > struct device_node *node = dev->of_node; > int nr_irqs, irq_base, irq_end; > static struct irq_chip twl6030_irq_chip; > - int status = 0; > + int status; > int i; > u8 mask[3]; > > @@ -335,11 +335,16 @@ int twl6030_init_irq(struct device *dev, int irq_num) > mask[2] = 0xFF; > > /* mask all int lines */ > - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); > + status = twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); > /* mask all int sts */ > - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_STS_A, 3); > + status |= twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_STS_A, 3); > /* clear INT_STS_A,B,C */ > - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_STS_A, 3); > + status |= twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_STS_A, 3); > + You can save two i2c writes here for slightly faster initialisation, only one of the REG_INT_STS_A registers needs to be written to clear them all. As per the irq handling routine comment. > + if (status < 0) { > + dev_err(dev, "I2C err writing TWL_MODULE_PIH: %d\n", status); > + return status; > + } > > twl6030_irq_base = irq_base; > Graeme -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 07/23/2013 09:08 PM, Graeme Gregory wrote: > On 23/07/13 17:07, Grygorii Strashko wrote: >> Add a missed check for errors when TWL IRQs are masked >> initially on probe and report an error in case of failure. >> >> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> >> --- >> drivers/mfd/twl6030-irq.c | 13 +++++++++---- >> 1 file changed, 9 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c >> index b6030d9..790cc28 100644 >> --- a/drivers/mfd/twl6030-irq.c >> +++ b/drivers/mfd/twl6030-irq.c >> @@ -313,7 +313,7 @@ int twl6030_init_irq(struct device *dev, int irq_num) >> struct device_node *node = dev->of_node; >> int nr_irqs, irq_base, irq_end; >> static struct irq_chip twl6030_irq_chip; >> - int status = 0; >> + int status; >> int i; >> u8 mask[3]; >> >> @@ -335,11 +335,16 @@ int twl6030_init_irq(struct device *dev, int irq_num) >> mask[2] = 0xFF; >> >> /* mask all int lines */ >> - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); >> + status = twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); >> /* mask all int sts */ >> - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_STS_A, 3); >> + status |= twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_STS_A, 3); >> /* clear INT_STS_A,B,C */ >> - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_STS_A, 3); >> + status |= twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_STS_A, 3); >> + > You can save two i2c writes here for slightly faster initialisation, > only one of the REG_INT_STS_A registers needs to be written to clear > them all. As per the irq handling routine comment. Good point. thanks >> + if (status < 0) { >> + dev_err(dev, "I2C err writing TWL_MODULE_PIH: %d\n", status); >> + return status; >> + } >> >> twl6030_irq_base = irq_base; >> > > Graeme > Regards, - grygorii -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c index b6030d9..790cc28 100644 --- a/drivers/mfd/twl6030-irq.c +++ b/drivers/mfd/twl6030-irq.c @@ -313,7 +313,7 @@ int twl6030_init_irq(struct device *dev, int irq_num) struct device_node *node = dev->of_node; int nr_irqs, irq_base, irq_end; static struct irq_chip twl6030_irq_chip; - int status = 0; + int status; int i; u8 mask[3]; @@ -335,11 +335,16 @@ int twl6030_init_irq(struct device *dev, int irq_num) mask[2] = 0xFF; /* mask all int lines */ - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); + status = twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); /* mask all int sts */ - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_STS_A, 3); + status |= twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_STS_A, 3); /* clear INT_STS_A,B,C */ - twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_STS_A, 3); + status |= twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_STS_A, 3); + + if (status < 0) { + dev_err(dev, "I2C err writing TWL_MODULE_PIH: %d\n", status); + return status; + } twl6030_irq_base = irq_base;
Add a missed check for errors when TWL IRQs are masked initially on probe and report an error in case of failure. Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> --- drivers/mfd/twl6030-irq.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)