Add binding for ZynqMP R5 OpenAMP. Represent the RPU domain resources in one device node. Each RPU processor is a subnode of the top RPU domain node. Signed-off-by: Ben Levinsky <ben.levinsky@xxxxxxxxxx> Signed-off-by: Jason Wu <j.wu@xxxxxxxxxx> Signed-off-by: Wendy Liang <jliang@xxxxxxxxxx> Signed-off-by: Michal Simek <michal.simek@xxxxxxxxxx> --- .../remoteproc/xilinx,zynqmp-r5-remoteproc.yaml | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.yaml diff --git a/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.yaml b/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.yaml new file mode 100644 index 0000000..ed3d125d --- /dev/null +++ b/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.yaml @@ -0,0 +1,119 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/remoteproc/xilinx,zynqmp-r5-remoteproc.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Xilinx R5 remote processor controller bindings + +description: + This document defines the binding for the remoteproc component that loads and + boots firmwares on the Xilinx Zynqmp and Versal family chipset. + +maintainers: + - Ed Mooring <ed.mooring@xxxxxxxxxx> + - Ben Levinsky <ben.levinsky@xxxxxxxxxx> + +properties: + compatible: + const: "xlnx,zynqmp-r5-remoteproc-1.0" + + core_conf: + description: + R5 core configuration (valid string - split or lock-step) + maxItems: 1 + + interrupts: + description: + Interrupt mapping for remoteproc IPI. It is required if the + user uses the remoteproc driver with the RPMsg kernel driver. + maxItems: 6 + + memory-region: + maxItems: 4 + minItems: 4 + pnode-id: + maxItems: 1 + mboxes: + maxItems: 2 + mbox-names: + maxItems: 2 + +additionalProperties: false + +examples: + - | + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + rpu0vdev0vring0: rpu0vdev0vring0@3ed40000 { + no-map; + reg = <0x0 0x3ed40000 0x0 0x4000>; + }; + rpu0vdev0vring1: rpu0vdev0vring1@3ed44000 { + no-map; + reg = <0x0 0x3ed44000 0x0 0x4000>; + }; + rpu0vdev0buffer: rpu0vdev0buffer@3ed48000 { + no-map; + reg = <0x0 0x3ed48000 0x0 0x100000>; + }; + rproc_0_reserved: rproc@3ed000000 { + no-map; + reg = <0x0 0x3ed00000 0x0 0x40000>; + }; + }; + + zynqmp-rpu { + compatible = "xlnx,zynqmp-r5-remoteproc-1.0"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + core_conf = "split"; + reg = <0x0 0xFF9A0000 0x0 0x10000>; + r5_0: r5@0 { + #address-cells = <2>; + #size-cells = <2>; + ranges; + memory-region = <&rproc_0_reserved>, <&rpu0vdev0buffer>, <&rpu0vdev0vring0>, <&rpu0vdev0vring1>; + pnode-id = <0x7>; + mboxes = <&ipi_mailbox_rpu0 0>, <&ipi_mailbox_rpu0 1>; + mbox-names = "tx", "rx"; + tcm_0_a: tcm_0@0 { + reg = <0x0 0xFFE00000 0x0 0x10000>; + pnode-id = <0xf>; + }; + tcm_0_b: tcm_0@1 { + reg = <0x0 0xFFE20000 0x0 0x10000>; + pnode-id = <0x10>; + }; + }; + }; + + + zynqmp_ipi1 { + compatible = "xlnx,zynqmp-ipi-mailbox"; + interrupt-parent = <&gic>; + interrupts = <0 29 4>; + xlnx,ipi-id = <7>; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* APU<->RPU0 IPI mailbox controller */ + ipi_mailbox_rpu0: mailbox@ff90000 { + reg = <0xff990600 0x20>, + <0xff990620 0x20>, + <0xff9900c0 0x20>, + <0xff9900e0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <1>; + }; + }; + +... -- 2.7.4