Thread (23 messages) 23 messages, 4 authors, 2018-03-01

[PATCH 3/3] mailbox: sunxi-msgbox: Add a new mailbox driver

From: samuel@sholland.org (Samuel Holland)
Date: 2018-02-28 17:53:29
Also in: linux-devicetree, linux-mediatek, lkml

Hi,

On 02/28/18 03:16, Jassi Brar wrote:
On Wed, Feb 28, 2018 at 7:57 AM, Samuel Holland [off-list ref] wrote:
....
quoted
+/*
+ * The message box hardware provides 8 unidirectional channels. As the mailbox
+ * framework expects them to be bidirectional
That is incorrect. Mailbox framework does not require a channel to be
TX and RX capable.
Sorry, it would be more accurate to say that the intended mailbox _client_
expects the channels to be bidirectional.
You should expose each channel as per its physical capability, let the
client configure it for direction (if its bidirectional) and acquire
separate channels for RX and TX if it needs to.
Is there any way for the mailbox framework to inform the client that a channel
is uni/bidirectional? Or if the channel supports RX/TX specifically? I couldn't
find any.

It looks like all of the clients assume one case or the other, based on the
hardware they were initially designed to support. For example arm_scpi expects
one channel per client, while ti_sci and st_remoteproc expect two separate RX
and TX channels per client.

Since there's no API for the client to know the hardware properties, modifying
arm_scpi to support unidirectional mailbox channels would break support for all
existing bidirectional mailboxes.

To expose the physical channels individually, there would need to be an API to:
a) Determine if a mailbox channel supports unidirectional or bidirectional
   operation.
b) If a channel is unidirectional, determine which direction(s) it supports.
c) If a unidirectional channel supports both directions, configure which
   direction it should run in.

Since that API doesn't currently exist, I wrote the driver to match what the
intended client expected (as all other mailbox controller drivers currently do).
Cheers!
Regards,
Samuel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help