From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
To: Scott Wood <scottwood@freescale.com>
Cc: linuxppc-dev@ozlabs.org,
Sebastian Andrzej Siewior <sebastian@breakpoint.cc>,
Alemao <xcarandiru@gmail.com>,
linux-kernel@vger.kernel.org
Subject: [RFC] doc/powerpc: try to explain why the interrupt numbers are off by 16
Date: Sun, 6 Dec 2009 12:32:47 +0100 [thread overview]
Message-ID: <20091206113247.GB9937@Chamillionaire.breakpoint.cc> (raw)
In-Reply-To: <4AA97D50.40209@freescale.com>
Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
Documentation/powerpc/dts-bindings/fsl/mpic.txt | 42 +++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
create mode 100644 Documentation/powerpc/dts-bindings/fsl/mpic.txt
diff --git a/Documentation/powerpc/dts-bindings/fsl/mpic.txt b/Documentation/powerpc/dts-bindings/fsl/mpic.txt
new file mode 100644
index 0000000..71e39cf
--- /dev/null
+++ b/Documentation/powerpc/dts-bindings/fsl/mpic.txt
@@ -0,0 +1,42 @@
+* OpenPIC and its interrupt numbers on Freescale's e500/e600 cores
+
+The OpenPIC specification does not specify which interrupt source has to
+become which interrupt number. This is up to the software implementation
+of the interrupt controller. The only requirement is that every
+interrupt source has to have an unique interrupt number / vector number.
+To accomplish this the current implementation assigns the number zero to
+the first source, the number one to the second source and so on until
+all interrupt sources have their unique number.
+Usually the assigned vector number equals the interrupt number mentioned
+in the documentation for a given core / CPU. This is however not true
+for the e500 cores (MPC85XX CPUs) where the documentation distinguishes
+between internal and external interrupt sources and starts counting at
+zero for both of them.
+
+So what to write for external interrupt source X or internal interrupt
+source Y into the device tree? Here is an example:
+
+The memory map for the interrupt controller in the MPC8544[0] shows,
+that the first interrupt source starts at 0x5_0000 (PIC Register Address
+Map-Interrupt Source Configuration Registers). This source becomes the
+number zero therefore:
+ External interrupt 0 = interrupt number 0
+ External interrupt 1 = interrupt number 1
+ External interrupt 2 = interrupt number 2
+ ...
+Every interrupt number allocates 0x20 bytes register space. So to get
+its number it is sufficient to shift the lower 16bits to right by five.
+So for the external interrupt 10 we have:
+ 0x0140 >> 5 = 10
+
+After the external sources, the internal sources follow. The in core I2C
+controller on the MPC8544 for instance has the internal source number
+27. Oo obtain its interrupt number we take the lower 16bits of its memory
+address (0x5_0560) and shift it right:
+ 0x0560 >> 5 = 43
+
+Therefore the I2C device node for the MPC8544 CPU has to have the
+interrupt number 43 specified in the device tree.
+
+[0] MPC8544E PowerQUICCTM III, Integrated Host Processor Family Reference Manual
+ MPC8544ERM Rev. 1 10/2007
--
1.6.5.3
next prev parent reply other threads:[~2009-12-06 11:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <d970ff420909040604h1bb3874eg5c79f79f85e713a3@mail.gmail.com>
2009-09-04 13:13 ` Fwd: MPC85xx External/Internal Interrupts Alemao
2009-09-04 19:01 ` Alemao
2009-09-04 19:14 ` Alemao
2009-09-04 19:24 ` Alemao
[not found] ` <d970ff420909041228h3638e840r34c0c0e79f178e55@mail.gmail.com>
[not found] ` <d970ff420909041229hb3aa96dya329e06ea56dd1ac@mail.gmail.com>
2009-09-06 11:06 ` Sebastian Andrzej Siewior
2009-09-09 18:28 ` Scott Wood
2009-09-10 13:15 ` Sebastian Andrzej Siewior
2009-09-10 22:24 ` Sebastian Andrzej Siewior
2009-09-10 22:27 ` Scott Wood
2009-12-06 11:32 ` Sebastian Andrzej Siewior [this message]
2009-12-09 20:51 ` [RFC] doc/powerpc: try to explain why the interrupt numbers are off by 16 Kumar Gala
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=20091206113247.GB9937@Chamillionaire.breakpoint.cc \
--to=sebastian@breakpoint.cc \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=scottwood@freescale.com \
--cc=xcarandiru@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).