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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux