From: Meador Inge <meador_inge@mentor.com>
To: Scott Wood <scottwood@freescale.com>
Cc: linuxppc-dev@lists.ozlabs.org,
devicetree-discuss@lists.ozlabs.org, "Blanchard,
Hollis" <Hollis_Blanchard@mentor.com>
Subject: Re: [RFC] MPIC Bindings and Bindings for AMP Systems
Date: Tue, 04 Jan 2011 17:52:38 -0600 [thread overview]
Message-ID: <4D23B2C6.8050607@mentor.com> (raw)
In-Reply-To: <20110103142200.738c0b17@udp111988uds.am.freescale.net>
Thanks for the feedback Scott.
On 01/03/2011 02:22 PM, Scott Wood wrote:
> On Wed, 22 Dec 2010 23:58:09 -0600
> These nodes cannot go under the mpic node, because interrupt
> controllers need #address-cells =<0>.
Good point. Do they actually need it or is that just the way it
currently is? [1] mandates it, I didn't see anything in [2] and I can't
access [3].
However, AFAIK '#address-cells' is taken directly from the parent node
and is not inherited from ancestors higher in the tree. So another
option would be to do something like:
mpic: pic@40000 {
...
message-registers@0 {
#address-cells = <1>;
#size-cells = <1>;
msgr@1400 {
compatible = "fsl,mpic-v3.0-msgr";
reg = <0x1400 0x200>;
interrupts = <0xb0 0x2 0xb1 0x2 0xb2 0x2 0xb3 0x2>;
};
msgr@2400 {
compatible = "fsl,mpic-v3.0-msgr";
reg = <0x2400 0x200>;
interrupts = <0xb4 0x2 0xb5 0x2 0xb6 0x2 0xb7 0x2>;
};
};
};
I like the nesting as it models the physical relationship closer and
creates a clean namespace.
> It would be nice if the binding provided some way of partitioning
> up individual message interrupts within a block.
>
> Interrupt generation could be exported as a "service", similar to
> (inbound) interrupts and gpios.
>
> Perhaps a something like this, with "doorbell" being a new standard
> hw-independent service with its own binding:
I need to think about this proposal more, but our original intent was to
just have a simple description of the message registers in the device
tree and the policy for how those message registers are used is in
software (not necessarily an exact API use case, but you get the point):
/* Core 0 */
mpic_msgr_reserve(0);
mpic_msgr_reserve(1);
/* Send message to Core 1 */
mpic_msgr_write(3, 13);
/* Read a value */
u32 value;
mpic_msgr_read(0, &value);
/* Free the register */
mpic_msgr_release(0);
...
/* Core 1 */
mpic_msgr_reserve(3);
mpic_msgr_reserve(4);
/* Send message to Core 0 */
mpic_msgr_write(0, 1);
Note that a "reservation" is still isolated to a particular core, e.g.
'mpic_msgr_reserve(0)' on core 0 will not cause 'mpic_msgr_reserve(0)'
to fail on another core. Where as two invocations of
'mpic_msgr_reserve(0)' on the same core without an interleaved
'mpic_msgr_release(0)' would, of course, fail.
> msg1: mpic-msg@1400 {
> compatible = "fsl,mpic-v3.0-msg";
> reg =<0x1400 0x200>;
> interrupts<176 2 178 2>;
>
> // We have message registers 0 and 2 for sending,
> // and 1 and 3 for receiving.
> // If absent, we own all message registers in this block.
> fsl,mpic-msg-send-mask =<0x5>;
> fsl,mpic-msg-receive-mask =<0xa>;
>
> doorbell-controller;
>
> // split into #doorbell-send-cells and #doorbell-receive-cells?
> #doorbell-cells =<1>;
> };
>
> some-amp-protocol-thingy {
> send-doorbells =<&msg1 0>; // generate messages on MSGR0
> receive-doorbells =<&msg1 0>; // receive messages on MSGR1
> };
>
> some-other-amp-protocol-thingy {
> send-doorbells =<&msg1 1>; // generate messages on MSGR2
> receive-doorbells =<&msg1 1>; // receive messages on MSGR3
> };
>
> Doorbell capabilities such as passing a 32-bit message can be negotiated
> between the drivers for the doorbell controller and the doorbell client.
--
Meador Inge | meador_inge AT mentor.com
Mentor Embedded | http://www.mentor.com/embedded-software
[1] Power.org™ Standard for Embedded Power Architecture™ Platform
Requirements (ePAPR) Version 1.0
[2] PowerPC Microprocessor Common Hardware Reference Platform (CHRP)
Binding, Version 1.8, 1998. Published by the Open Firmware Working Group.
[3] The Open Programmable Interrupt Controller (PIC) Register Interface
Specification Revision 1.2
next prev parent reply other threads:[~2011-01-04 23:52 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-23 5:58 [RFC] MPIC Bindings and Bindings for AMP Systems Meador Inge
2011-01-03 20:22 ` Scott Wood
2011-01-04 23:52 ` Meador Inge [this message]
2011-01-05 0:13 ` Scott Wood
2011-01-05 21:19 ` Meador Inge
2011-01-06 2:58 ` Meador Inge
2011-01-06 20:10 ` Scott Wood
-- strict thread matches above, loose matches on Subject: below --
2010-12-23 6:51 Meador Inge
2010-12-23 18:56 ` Grant Likely
2010-12-23 21:49 ` Meador Inge
2010-12-23 22:33 ` Grant Likely
2011-01-03 19:51 ` Scott Wood
2011-01-05 21:58 ` Meador Inge
2011-01-05 22:09 ` Scott Wood
2011-01-05 22:49 ` Blanchard, Hollis
2011-01-05 23:07 ` Scott Wood
2011-01-06 21:52 ` Blanchard, Hollis
2011-01-07 15:48 ` Grant Likely
2011-01-07 16:00 ` Blanchard, Hollis
2011-01-07 16:44 ` Grant Likely
2011-01-07 20:30 ` Blanchard, Hollis
2011-01-07 20:57 ` Scott Wood
2011-01-05 22:20 ` Meador Inge
2011-01-04 20:14 ` Blanchard, Hollis
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=4D23B2C6.8050607@mentor.com \
--to=meador_inge@mentor.com \
--cc=Hollis_Blanchard@mentor.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=scottwood@freescale.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).