Re: [PATCH 0/9] TWL4030 bugfixes and cleanups: version 2

Tony Lindgren
2008-08-04T14:16:10Z

* Paul Walmsley <paul@pwsan.com> [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 <philip@balister.org>, Koen Kooi
> <k.kooi@student.utwente.nl>, Måns Rullgård <mans@mansr.org>, Steve
> Sakoman <sakoman@gmail.com> and others on #beagle for help tracing
> these problems.
>
> Thanks also to Peter De Schrijver <peter.de-schrijver@nokia.com> 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 majordomo@vger.kernel.org
> 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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html