From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/4 v4] mailbox: Enable BCM2835 mailbox support
Date: Fri, 20 Mar 2015 13:29:56 -0600 [thread overview]
Message-ID: <550C7534.8070100@wwwdotorg.org> (raw)
In-Reply-To: <87wq2bk2ez.fsf@eliezer.anholt.net>
On 03/20/2015 11:24 AM, Eric Anholt wrote:
> Stephen Warren <swarren@wwwdotorg.org> writes:
>
>> On 03/18/2015 05:28 PM, Eric Anholt wrote:
>>> Stephen Warren <swarren@wwwdotorg.org> writes:
>>>
>>>> On 03/12/2015 08:32 PM, Eric Anholt wrote:
>>>>> diff --git a/drivers/mailbox/bcm2835-mailbox.c
>>>>> b/drivers/mailbox/bcm2835-mailbox.c
>>>>
>>>>> +#define MBOX_MSG(chan, data28) (((data28) & ~0xf) | ((chan) &
>>>>> 0xf)) +#define MBOX_CHAN(msg) ((msg) & 0xf) +#define
>>>>> MBOX_DATA28(msg) ((msg) & ~0xf)
>>>>
>>>> Even the concept of storing channel IDs in the LSBs feels like it
>>>> might be RPi-firmware-specific rather than HW-specific?
>>>
>>> I guess? If we found another firmware protocol, we could have
>>> that device's dt just specify a different compatible string. But
>>> in the absence of another firmware to talk to, I'm not sure what
>>> you want here.
>>
>> I would expect the mailbox driver to expose a single channel that just
>> transports 32-bit values, since the HW doesn't impose any kind of
>> structure on the values it transports AFAIK. Clients of the mailbox
>> driver would formulate the messages they send through the mailox using
>> the macros above.
>>
>> I'm not sure whether the mailbox core allows multiple clients for the
>> same mailbox channel though? This HW appears to require it.
>
> Yeah, that's the problem.
I expect you'd end up representing the low-level mbox HW and the remote
firmware as separate nodes in DT. There's certainly precedent for
representing firmware in DT as a separate node. Perhaps something like:
// Exports just one channel, since there's 1 channel in HW
// Driver solely transports u32s through the registers and nothing else
// Driver allows a single client on the channel
mailbox: mailbox at 7e00b800 {
compatible = "brcm,bcm2835-mbox";
reg = <0x7e00b880 0x40>;
interrupts = <0 1>;
#mbox-cells = <1>;
};
// implements all RPI- (rather than bcm2835-)specific aspects of the
// firmware interface, such as merging data and channel ID into the data
// sent into the mailbox registers, handling multiple clients on a
// channel, etc.
firmware {
compatible = "raspberrypi,firmware";
mboxes = <&mailbox 8>;
};
The driver for the FW node could either register itself with all the
relevant subsystems (power domains, clocks, ...) or in turn exports its
services to other nodes like:
firmware {
compatible = "raspberrypi,firmware";
mboxes = <&mailbox 8>;
+ #fw-cells = <1>; # or whatever's needed
};
clocks {
compatible = "raspberrypi,clocks";
fw = <&firmware 0>; // or whatever channel # clocks are on
};
next prev parent reply other threads:[~2015-03-20 19:29 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1426213936-4139-1-git-send-email-eric@anholt.net>
2015-03-17 3:24 ` [PATCH 1/4] ARM: BCM2835: Add a function for doing an rmb() between device reads Stephen Warren
2015-03-17 19:06 ` Eric Anholt
[not found] ` <1426213936-4139-3-git-send-email-eric@anholt.net>
2015-03-17 3:33 ` [PATCH 3/4 v4] mailbox: Enable BCM2835 mailbox support Stephen Warren
2015-03-17 18:05 ` Lee Jones
2015-03-17 19:04 ` Eric Anholt
2015-03-18 23:28 ` Eric Anholt
2015-03-20 4:48 ` Stephen Warren
2015-03-20 5:12 ` Jassi Brar
2015-03-20 17:38 ` Eric Anholt
2015-03-20 17:24 ` Eric Anholt
2015-03-20 19:29 ` Stephen Warren [this message]
[not found] ` <20150318084255.GJ3318@x1>
[not found] ` <87bnjqorpe.fsf@eliezer.anholt.net>
2015-03-20 4:44 ` Stephen Warren
[not found] ` <20150319075836.GU3318@x1>
2015-03-20 4:46 ` Stephen Warren
[not found] ` <1426213936-4139-4-git-send-email-eric@anholt.net>
2015-03-17 3:34 ` [PATCH 4/4] ARM: bcm2835: Add the mailbox to the device tree Stephen Warren
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=550C7534.8070100@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).