RE: [PATCH v7 3/6] dt-bindings: mailbox: imx-mu: add generic MU channel support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jassi,

> -----Original Message-----
> From: Jassi Brar [mailto:jassisinghbrar@xxxxxxxxx]
> Sent: Thursday, July 26, 2018 5:50 PM
> To: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>
> Cc: Shawn Guo <shawnguo@xxxxxxxxxx>; Fabio Estevam
> <fabio.estevam@xxxxxxx>; Rob Herring <robh+dt@xxxxxxxxxx>; Mark
> Rutland <mark.rutland@xxxxxxx>; A.s. Dong <aisheng.dong@xxxxxxx>;
> Vladimir Zapolskiy <vladimir_zapolskiy@xxxxxxxxxx>; , Sascha Hauer
> <kernel@xxxxxxxxxxxxxx>; , linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-
> mediatek@xxxxxxxxxxxxxxxxxxx, srv_heupstream <linux-arm-
> kernel@xxxxxxxxxxxxxxxxxxx>; Devicetree List <devicetree@xxxxxxxxxxxxxxx>;
> dl-linux-imx <linux-imx@xxxxxxx>
> Subject: Re: [PATCH v7 3/6] dt-bindings: mailbox: imx-mu: add generic MU
> channel support
> 
> On Thu, Jul 26, 2018 at 12:23 PM, Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>
> wrote:
> 
> > Each MU has four pairs of rx/tx data register with four rx/tx
> > interrupts which can also be used as a separate channel.
> >
> So the hardware actually supports 4 channels.
> 
> > -- #mbox-cells:  Must be 0. Number of cells in a mailbox
> > +- #mbox-cells:  Must be:
> > +               0 - for single channel mode. i.MX8* SCU protocol specific.
> > +               1 - for multichannel (generic) mode.
> > +
> No, please.
> DT bindings should reflect the real hardware, and not the software mode we
> want the driver to work in.
> Please define mbox-cells=1  and have the i.MX8* platform always ask for
> channel-0.

The reality is that MU hardware does not define channels in reference manual.
However, it does have four separate data tx/rx register which can be used
as 'virtual' channels which is supported by this current driver.

See below HW description from the reference manual:
For messaging, the MU has four, 32-bit write-only transmit registers and four, 32-bit
read-only receive registers on the Processor B and Processor A-sides. These registers are
used for sending messages to each other.

Passing short messages
Transmit register(s) can be used to pass short messages
from one to four words in length. For example, when a four-word message is desired,
only one of the registers needs to have its corresponding interrupt enable bit set at the
receiver side; the message’s first three words are written to the registers whose
interrupt is masked, and the fourth word is written to the other register (which
triggers an interrupt at the receiver side).

The reference manual is at here: (Chapter 42 Messaging Unit (MU)
https://www.nxp.com/docs/en/reference-manual/IMX6ULRM.pdf

And SCU firmware does use MU in above way specified by reference manual.
Even from HW point of view, it's still one channel only mailbox.
That's why we change the mbox-cells to 0 accordingly to avoid confusing
the multi channels users supported in this driver.

As per Sasha's request, we're going to support both protocol (SCU and generic M4)
in one mailbox driver, that means we need deal with this two case property.

If we use mbox-cells 1 case for SCU, then the using would be like:
mboxes = <&mailbox 0> which is mixed with the normal multi channel
users. And we also must state clearly in binding doc that for mbox-cells
 1 case for SCU, the cell value must be 0 which is also confusing with
Multi channel users.

How do you suggest for such case?

Regards
Dong Aisheng
��.n��������+%������w��{.n����z�{��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux