public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Paul Walmsley <paul@pwsan.com>
To: linux-omap@vger.kernel.org
Subject: [PATCH 0/9] TWL4030 bugfixes and cleanups
Date: Thu, 17 Jul 2008 19:34:48 -0600	[thread overview]
Message-ID: <20080718013205.18943.34047.stgit@localhost.localdomain> (raw)

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!

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 336
bytes.  The __init changes cause an extra 4KB page to be freed after
kernel init on Beagle.

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.

Tested on BeagleBoard rev B4 (3530ES2.2).

- Paul

---

Paul Walmsley (9):
      TWL4030: convert early interrupt mask/clear funcs to use array
      TWL4030: use symbolic ISR/IMR register names during twl_init_irq()
      TWL4030: move TWL module register defs into separate include files
      TWL4030: change init-time IMR mask code to WARN if error
      TWL4030: read and write module ISRs to clear them at init
      TWL4030: clear MADC interrupt status registers upon init
      TWL4030: use correct register addresses for BCI IMR registers
      TWL4030: clear TWL GPIO interrupt status registers
      TWL4030: remove superfluous PWR interrupt status clear before masking


 drivers/i2c/chips/twl4030-core.c   |  335 ++++++++++++++++++++----------------
 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, 303 insertions(+), 208 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

             reply	other threads:[~2008-07-18  1:35 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-18  1:34 Paul Walmsley [this message]
2008-07-18  1:34 ` [PATCH 1/9] TWL4030: remove superfluous PWR interrupt status clear before masking Paul Walmsley
2008-07-18  1:34 ` [PATCH 3/9] TWL4030: use correct register addresses for BCI IMR registers Paul Walmsley
2008-07-18  1:34 ` [PATCH 2/9] TWL4030: clear TWL GPIO interrupt status registers Paul Walmsley
2008-07-18  1:34 ` [PATCH 4/9] TWL4030: clear MADC interrupt status registers upon init Paul Walmsley
2008-07-18  1:34 ` [PATCH 5/9] TWL4030: read and write module ISRs to clear them at init Paul Walmsley
2008-07-18  9:12   ` Peter 'p2' De Schrijver
2008-07-22  0:30     ` Paul Walmsley
2008-07-18  1:34 ` [PATCH 6/9] TWL4030: change init-time IMR mask code to WARN if error Paul Walmsley
2008-07-18  1:34 ` [PATCH 7/9] TWL4030: move TWL module register defs into separate include files Paul Walmsley
2008-07-18  1:34 ` [PATCH 8/9] TWL4030: use symbolic ISR/IMR register names during twl_init_irq() Paul Walmsley
2008-07-18  1:34 ` [PATCH 9/9] TWL4030: convert early interrupt mask/clear funcs to use array Paul Walmsley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080718013205.18943.34047.stgit@localhost.localdomain \
    --to=paul@pwsan.com \
    --cc=linux-omap@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox