* Paul Walmsley <[EMAIL PROTECTED]> [080723 08:11]:
> [ This is the second version of these patches - they now check the
> SIH_CTRL.COR bit to determine whether to read or write to clear ]
> 
> At boot, twl_init_irq() tries to mask off all TWL4030 secondary
> interrupts and clear them, since no secondary interrupt handlers are
> registered yet (that happens later in the boot).
> 
> However, this code is flawed.  MADC, BCI, keypad, and GPIO ISRs are
> either not cleared or are incompletely cleared.  Some BCI register
> addresses are nonsensical.  And some code attempts to clear ISRs
> before masking IMRs, which is race-prone (an interrupt could occur
> after the ISR clear, but before the mask).
> 
> These problems can cause large numbers of boot messages similar to
> this:
> 
>     TWL4030 module irq 368 is disabled but can't be masked!
> 
> and I2C transmit overflows, both observed during boot on the
> BeagleBoard here.  The actual IRQ number sometimes varied depending on
> which interrupt was unacknowledged.
> 
> This series fixes these issues and does some code cleanup, saving 272
> bytes.
> 
> Thanks to Philip Balister <[EMAIL PROTECTED]>, Koen Kooi
> <[EMAIL PROTECTED]>, Måns Rullgård <[EMAIL PROTECTED]>, Steve
> Sakoman <[EMAIL PROTECTED]> and others on #beagle for help tracing
> these problems.
> 
> Thanks also to Peter De Schrijver <[EMAIL PROTECTED]> for
> help with this second version, allowing several unnecessary I2C
> transactions to be elided from twl_init_irq().
> 
> Tested on BeagleBoard rev B4 (3530ES2.2).

Pushing this series today.

Tony

> 
> 
> - Paul
> 
> ---
> 
> size:
>    text    data     bss     dec     hex filename
> 3076157  142840  104248 3323245  32b56d vmlinux.beagle.orig
> 3075885  142840  104248 3322973  32b45d vmlinux.beagle
> 
> diffstat:
> 
>  drivers/i2c/chips/twl4030-core.c   |  383 
> ++++++++++++++++++++++--------------
>  drivers/i2c/chips/twl4030-gpio.c   |   48 -----
>  drivers/i2c/chips/twl4030-pwrirq.c |   15 +
>  include/linux/i2c/twl4030-gpio.h   |   76 +++++++
>  include/linux/i2c/twl4030-pwrirq.h |   37 +++
>  5 files changed, 359 insertions(+), 200 deletions(-)
>  create mode 100644 include/linux/i2c/twl4030-gpio.h
>  create mode 100644 include/linux/i2c/twl4030-pwrirq.h
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to