Message ID | 20200827015810.11157-5-ben.levinsky@xilinx.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Provide basic driver to control Arm R5 co-processor found on Xilinx ZynqMP | expand |
On Wed, 26 Aug 2020 18:58:09 -0700, Ben Levinsky wrote: > 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@xilinx.com> > Signed-off-by: Jason Wu <j.wu@xilinx.com> > Signed-off-by: Wendy Liang <jliang@xilinx.com> > Signed-off-by: Michal Simek <michal.simek@xilinx.com> > --- > v3: > - update zynqmp_r5 yaml parsing to not raise warnings for extra > information in children of R5 node. The warning "node has a unit > name, but no reg or ranges property" will still be raised though > as this particular node is needed to describe the > '#address-cells' and '#size-cells' information. > v4:: > - remove warning '/example-0/rpu@ff9a0000/r5@0: > node has a unit name, but no reg or ranges property' > by adding reg to r5 node. > v5: > - update device tree sample and yaml parsing to not raise any warnings > - description for memory-region in yaml parsing > - compatible string in yaml parsing for TCM > v6: > - remove coupling TCM nodes with remoteproc > - remove mailbox as it is optional not needed > v7: > - change lockstep-mode to xlnx,cluster-mode > v9: > - show example IPC nodes and tcm bank nodes > --- > .../xilinx,zynqmp-r5-remoteproc.yaml | 113 ++++++++++++++++++ > 1 file changed, 113 insertions(+) > create mode 100644 Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.yaml > My bot found errors running 'make dt_binding_check' on your patch: Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.example.dts:48.18-53.11: Warning (unique_unit_address): /example-0/tcm_0a@0: duplicate unit-address (also used in node /example-0/tcm_1a@0) /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.example.dt.yaml: example-0: tcm_0a@0:reg:0: [0, 4292870144, 0, 65536] is too long From schema: /usr/local/lib/python3.8/dist-packages/dtschema/schemas/reg.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.example.dt.yaml: example-0: tcm_1a@0:reg:0: [0, 4293001216, 0, 65536] is too long From schema: /usr/local/lib/python3.8/dist-packages/dtschema/schemas/reg.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.example.dt.yaml: example-0: rpu0vdev0vring0@3ed40000:reg:0: [0, 1054081024, 0, 16384] is too long From schema: /usr/local/lib/python3.8/dist-packages/dtschema/schemas/reg.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.example.dt.yaml: example-0: rpu0vdev0vring1@3ed44000:reg:0: [0, 1054097408, 0, 16384] is too long From schema: /usr/local/lib/python3.8/dist-packages/dtschema/schemas/reg.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.example.dt.yaml: example-0: rpu0vdev0buffer@3ed48000:reg:0: [0, 1054113792, 0, 1048576] is too long From schema: /usr/local/lib/python3.8/dist-packages/dtschema/schemas/reg.yaml See https://patchwork.ozlabs.org/patch/1352197 If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure dt-schema is up to date: pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade Please check and re-submit.
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 000000000000..f4a28831af6c --- /dev/null +++ b/Documentation/devicetree/bindings/remoteproc/xilinx,zynqmp-r5-remoteproc.yaml @@ -0,0 +1,113 @@ +# 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. + + Note that the Linux has global addressing view of the R5-related memory (TCM) + so the absolute address ranges are provided in TCM reg's. +maintainers: + - Ed Mooring <ed.mooring@xilinx.com> + - Ben Levinsky <ben.levinsky@xilinx.com> + +properties: + compatible: + const: "xlnx,zynqmp-r5-remoteproc-1.0" + + lockstep-mode: + description: + R5 core configuration (split is 0 or lock-step and 1) + 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: + description: + collection of memory carveouts used for elf-loading and inter-processor + communication. + maxItems: 4 + minItems: 4 + pnode-id: + maxItems: 1 + mboxes: + maxItems: 2 + mbox-names: + maxItems: 2 + +examples: + - | + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + elf_load: rproc@3ed000000 { + no-map; + reg = <0x3ed00000 0x40000>; + }; + }; + rpu { + compatible = "xlnx,zynqmp-r5-remoteproc-1.0"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + lockstep-mode = <0>; + r5_0 { + ranges; + #address-cells = <1>; + #size-cells = <1>; + memory-region = <&elf_load>; + pnode-id = <0x7>; + }; + }; + + /* + * Below nodes are required if using TCM to load R5 firmware + * if not, then either do not provide nodes are label as disabled in + * status property + */ + tcm_0a@0 { + reg = <0x0 0xffe00000 0x0 0x10000>; + pnode-id = <0xf>; + no-map; + status = "okay"; + }; + tcm_1a@0 { + reg = <0x0 0xffe20000 0x0 0x10000>; + pnode-id = <0x10>; + no-map; + status = "okay"; + }; + + /* + * Below nodes are required for IPC, as Xilinx Kernel + * can potentially have other applications that use CMA + * and conflict from hardware design. With that in mind, + * explicitly state the address spaces for the IPC remoteproc + * mechanisms. + * + * If IPC not required and only elf-loading then these are not needed. + */ + 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>; + }; + +...