1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: "http://devicetree.org/schemas/remoteproc/fsl,imx-rproc.yaml#"
5$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7title: NXP i.MX Co-Processor Bindings
8
9description:
10  This binding provides support for ARM Cortex M4 Co-processor found on some NXP iMX SoCs.
11
12maintainers:
13  - Peng Fan <peng.fan@nxp.com>
14
15properties:
16  compatible:
17    enum:
18      - fsl,imx8mq-cm4
19      - fsl,imx8mm-cm4
20      - fsl,imx7d-cm4
21      - fsl,imx6sx-cm4
22
23  clocks:
24    maxItems: 1
25
26  syscon:
27    $ref: /schemas/types.yaml#/definitions/phandle
28    description:
29      Phandle to syscon block which provide access to System Reset Controller
30
31  mbox-names:
32    items:
33      - const: tx
34      - const: rx
35      - const: rxdb
36
37  mboxes:
38    description:
39      This property is required only if the rpmsg/virtio functionality is used.
40      List of <&phandle type channel> - 1 channel for TX, 1 channel for RX, 1 channel for RXDB.
41      (see mailbox/fsl,mu.yaml)
42    minItems: 1
43    maxItems: 3
44
45  memory-region:
46    description:
47      If present, a phandle for a reserved memory area that used for vdev buffer,
48      resource table, vring region and others used by remote processor.
49    minItems: 1
50    maxItems: 32
51
52  fsl,auto-boot:
53    $ref: /schemas/types.yaml#/definitions/flag
54    description:
55      Indicate whether need to load the default firmware and start the remote
56      processor automatically.
57
58required:
59  - compatible
60  - clocks
61  - syscon
62
63additionalProperties: false
64
65examples:
66  - |
67    #include <dt-bindings/clock/imx7d-clock.h>
68    m4_reserved_sysmem1: cm4@80000000 {
69      reg = <0x80000000 0x80000>;
70    };
71
72    m4_reserved_sysmem2: cm4@81000000 {
73      reg = <0x81000000 0x80000>;
74    };
75
76    imx7d-cm4 {
77      compatible	= "fsl,imx7d-cm4";
78      memory-region	= <&m4_reserved_sysmem1>, <&m4_reserved_sysmem2>;
79      syscon		= <&src>;
80      clocks		= <&clks IMX7D_ARM_M4_ROOT_CLK>;
81    };
82
83  - |
84    #include <dt-bindings/clock/imx8mm-clock.h>
85
86    imx8mm-cm4 {
87      compatible = "fsl,imx8mm-cm4";
88      clocks = <&clk IMX8MM_CLK_M4_DIV>;
89      mbox-names = "tx", "rx", "rxdb";
90      mboxes = <&mu 0 1
91                &mu 1 1
92                &mu 3 1>;
93      memory-region = <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
94      syscon = <&src>;
95    };
96...
97