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

2008-08-04 Thread Tony Lindgren
* 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:
textdata 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


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

2008-07-22 Thread Paul Walmsley
[ 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).


- Paul

---

size:
   textdata 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