mailbox: arm_mhu: add driver for ARM MHU controller
[firefly-linux-kernel-4.4.55.git] / Documentation / devicetree / bindings / mailbox / arm-mhu.txt
diff --git a/Documentation/devicetree/bindings/mailbox/arm-mhu.txt b/Documentation/devicetree/bindings/mailbox/arm-mhu.txt
new file mode 100644 (file)
index 0000000..4971f03
--- /dev/null
@@ -0,0 +1,43 @@
+ARM MHU Mailbox Driver
+======================
+
+The ARM's Message-Handling-Unit (MHU) is a mailbox controller that has
+3 independent channels/links to communicate with remote processor(s).
+ MHU links are hardwired on a platform. A link raises interrupt for any
+received data. However, there is no specified way of knowing if the sent
+data has been read by the remote. This driver assumes the sender polls
+STAT register and the remote clears it after having read the data.
+The last channel is specified to be a 'Secure' resource, hence can't be
+used by Linux running NS.
+
+Mailbox Device Node:
+====================
+
+Required properties:
+--------------------
+- compatible:          Shall be "arm,mhu" & "arm,primecell"
+- reg:                 Contains the mailbox register address range (base
+                       address and length)
+- #mbox-cells          Shall be 1 - the index of the channel needed.
+- interrupts:          Contains the interrupt information corresponding to
+                       each of the 3 links of MHU.
+
+Example:
+--------
+
+       mhu: mailbox@2b1f0000 {
+               #mbox-cells = <1>;
+               compatible = "arm,mhu", "arm,primecell";
+               reg = <0 0x2b1f0000 0x1000>;
+               interrupts = <0 36 4>, /* LP-NonSecure */
+                            <0 35 4>, /* HP-NonSecure */
+                            <0 37 4>; /* Secure */
+               clocks = <&clock 0 2 1>;
+               clock-names = "apb_pclk";
+       };
+
+       mhu_client: scb@2e000000 {
+               compatible = "fujitsu,mb86s70-scb-1.0";
+               reg = <0 0x2e000000 0x4000>;
+               mboxes = <&mhu 1>; /* HP-NonSecure */
+       };