xref: /freebsd/sys/contrib/device-tree/Bindings/remoteproc/ti,k3-dsp-rproc.yaml (revision aa1a8ff2d6dbc51ef058f46f3db5a8bb77967145)
1*aa1a8ff2SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/remoteproc/ti,k3-dsp-rproc.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadottitle: TI K3 DSP devices
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotmaintainers:
10c66ec88fSEmmanuel Vadot  - Suman Anna <s-anna@ti.com>
11c66ec88fSEmmanuel Vadot
12c66ec88fSEmmanuel Vadotdescription: |
13c66ec88fSEmmanuel Vadot  The TI K3 family of SoCs usually have one or more TI DSP Core sub-systems
14c66ec88fSEmmanuel Vadot  that are used to offload some of the processor-intensive tasks or algorithms,
15c66ec88fSEmmanuel Vadot  for achieving various system level goals.
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel Vadot  These processor sub-systems usually contain additional sub-modules like
18c66ec88fSEmmanuel Vadot  L1 and/or L2 caches/SRAMs, an Interrupt Controller, an external memory
19c66ec88fSEmmanuel Vadot  controller, a dedicated local power/sleep controller etc. The DSP processor
20c66ec88fSEmmanuel Vadot  cores in the K3 SoCs are usually either a TMS320C66x CorePac processor or a
21c66ec88fSEmmanuel Vadot  TMS320C71x CorePac processor.
22c66ec88fSEmmanuel Vadot
23c66ec88fSEmmanuel Vadot  Each DSP Core sub-system is represented as a single DT node. Each node has a
24c66ec88fSEmmanuel Vadot  number of required or optional properties that enable the OS running on the
25c66ec88fSEmmanuel Vadot  host processor (Arm CorePac) to perform the device management of the remote
26c66ec88fSEmmanuel Vadot  processor and to communicate with the remote processor.
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel VadotallOf:
29c66ec88fSEmmanuel Vadot  - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
30c66ec88fSEmmanuel Vadot
31c66ec88fSEmmanuel Vadotproperties:
32c66ec88fSEmmanuel Vadot  compatible:
33c66ec88fSEmmanuel Vadot    enum:
34cb7aa33aSEmmanuel Vadot      - ti,am62a-c7xv-dsp
35c66ec88fSEmmanuel Vadot      - ti,j721e-c66-dsp
36c66ec88fSEmmanuel Vadot      - ti,j721e-c71-dsp
37e67e8565SEmmanuel Vadot      - ti,j721s2-c71-dsp
38c66ec88fSEmmanuel Vadot    description:
39cb7aa33aSEmmanuel Vadot      Use "ti,am62a-c7xv-dsp" for AM62A Deep learning DSPs on K3 AM62A SoCs
40c66ec88fSEmmanuel Vadot      Use "ti,j721e-c66-dsp" for C66x DSPs on K3 J721E SoCs
41c66ec88fSEmmanuel Vadot      Use "ti,j721e-c71-dsp" for C71x DSPs on K3 J721E SoCs
42e67e8565SEmmanuel Vadot      Use "ti,j721s2-c71-dsp" for C71x DSPs on K3 J721S2 SoCs
43c66ec88fSEmmanuel Vadot
44c66ec88fSEmmanuel Vadot  resets:
45c66ec88fSEmmanuel Vadot    description: |
46c66ec88fSEmmanuel Vadot      Should contain the phandle to the reset controller node managing the
47c66ec88fSEmmanuel Vadot      local resets for this device, and a reset specifier.
48c66ec88fSEmmanuel Vadot    maxItems: 1
49c66ec88fSEmmanuel Vadot
50c66ec88fSEmmanuel Vadot  firmware-name:
51c66ec88fSEmmanuel Vadot    description: |
52c66ec88fSEmmanuel Vadot      Should contain the name of the default firmware image
53c66ec88fSEmmanuel Vadot      file located on the firmware search path
54c66ec88fSEmmanuel Vadot
55c66ec88fSEmmanuel Vadot  mboxes:
56c66ec88fSEmmanuel Vadot    description: |
57c66ec88fSEmmanuel Vadot      OMAP Mailbox specifier denoting the sub-mailbox, to be used for
58c66ec88fSEmmanuel Vadot      communication with the remote processor. This property should match
59c66ec88fSEmmanuel Vadot      with the sub-mailbox node used in the firmware image.
60c66ec88fSEmmanuel Vadot    maxItems: 1
61c66ec88fSEmmanuel Vadot
62c66ec88fSEmmanuel Vadot  memory-region:
63c66ec88fSEmmanuel Vadot    minItems: 2
64c66ec88fSEmmanuel Vadot    maxItems: 8
65c66ec88fSEmmanuel Vadot    description: |
66c66ec88fSEmmanuel Vadot      phandle to the reserved memory nodes to be associated with the remoteproc
67c66ec88fSEmmanuel Vadot      device. There should be at least two reserved memory nodes defined. The
68c66ec88fSEmmanuel Vadot      reserved memory nodes should be carveout nodes, and should be defined as
69c66ec88fSEmmanuel Vadot      per the bindings in
70c66ec88fSEmmanuel Vadot      Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
71c66ec88fSEmmanuel Vadot    items:
72c66ec88fSEmmanuel Vadot      - description: region used for dynamic DMA allocations like vrings and
73c66ec88fSEmmanuel Vadot                     vring buffers
74c66ec88fSEmmanuel Vadot      - description: region reserved for firmware image sections
75c66ec88fSEmmanuel Vadot    additionalItems: true
76c66ec88fSEmmanuel Vadot
77c66ec88fSEmmanuel Vadot# Optional properties:
78c66ec88fSEmmanuel Vadot# --------------------
79c66ec88fSEmmanuel Vadot
80c66ec88fSEmmanuel Vadot  sram:
81c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle-array
82c66ec88fSEmmanuel Vadot    minItems: 1
83c66ec88fSEmmanuel Vadot    maxItems: 4
84c9ccf3a3SEmmanuel Vadot    items:
85c9ccf3a3SEmmanuel Vadot      maxItems: 1
86c66ec88fSEmmanuel Vadot    description: |
87c66ec88fSEmmanuel Vadot      phandles to one or more reserved on-chip SRAM regions. The regions
88c66ec88fSEmmanuel Vadot      should be defined as child nodes of the respective SRAM node, and
89c66ec88fSEmmanuel Vadot      should be defined as per the generic bindings in,
90c66ec88fSEmmanuel Vadot      Documentation/devicetree/bindings/sram/sram.yaml
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadotif:
93c66ec88fSEmmanuel Vadot  properties:
94c66ec88fSEmmanuel Vadot    compatible:
95c66ec88fSEmmanuel Vadot      enum:
96c66ec88fSEmmanuel Vadot        - ti,j721e-c66-dsp
97c66ec88fSEmmanuel Vadotthen:
98c66ec88fSEmmanuel Vadot  properties:
99c66ec88fSEmmanuel Vadot    reg:
100c66ec88fSEmmanuel Vadot      items:
101c66ec88fSEmmanuel Vadot        - description: Address and Size of the L2 SRAM internal memory region
102c66ec88fSEmmanuel Vadot        - description: Address and Size of the L1 PRAM internal memory region
103c66ec88fSEmmanuel Vadot        - description: Address and Size of the L1 DRAM internal memory region
104c66ec88fSEmmanuel Vadot    reg-names:
105c66ec88fSEmmanuel Vadot      items:
106c66ec88fSEmmanuel Vadot        - const: l2sram
107c66ec88fSEmmanuel Vadot        - const: l1pram
108c66ec88fSEmmanuel Vadot        - const: l1dram
109c66ec88fSEmmanuel Vadotelse:
110c66ec88fSEmmanuel Vadot  if:
111c66ec88fSEmmanuel Vadot    properties:
112c66ec88fSEmmanuel Vadot      compatible:
113c66ec88fSEmmanuel Vadot        enum:
114cb7aa33aSEmmanuel Vadot          - ti,am62a-c7xv-dsp
115c66ec88fSEmmanuel Vadot          - ti,j721e-c71-dsp
116e67e8565SEmmanuel Vadot          - ti,j721s2-c71-dsp
117c66ec88fSEmmanuel Vadot  then:
118c66ec88fSEmmanuel Vadot    properties:
119c66ec88fSEmmanuel Vadot      reg:
120c66ec88fSEmmanuel Vadot        items:
121c66ec88fSEmmanuel Vadot          - description: Address and Size of the L2 SRAM internal memory region
122c66ec88fSEmmanuel Vadot          - description: Address and Size of the L1 DRAM internal memory region
123c66ec88fSEmmanuel Vadot      reg-names:
124c66ec88fSEmmanuel Vadot        items:
125c66ec88fSEmmanuel Vadot          - const: l2sram
126c66ec88fSEmmanuel Vadot          - const: l1dram
127c66ec88fSEmmanuel Vadot
128c66ec88fSEmmanuel Vadotrequired:
129c66ec88fSEmmanuel Vadot  - compatible
130c66ec88fSEmmanuel Vadot  - reg
131c66ec88fSEmmanuel Vadot  - reg-names
132c66ec88fSEmmanuel Vadot  - ti,sci
133c66ec88fSEmmanuel Vadot  - ti,sci-dev-id
134c66ec88fSEmmanuel Vadot  - ti,sci-proc-ids
135c66ec88fSEmmanuel Vadot  - resets
136c66ec88fSEmmanuel Vadot  - firmware-name
137c66ec88fSEmmanuel Vadot  - mboxes
138c66ec88fSEmmanuel Vadot  - memory-region
139c66ec88fSEmmanuel Vadot
140c66ec88fSEmmanuel VadotunevaluatedProperties: false
141c66ec88fSEmmanuel Vadot
142c66ec88fSEmmanuel Vadotexamples:
143c66ec88fSEmmanuel Vadot  - |
1448cc087a1SEmmanuel Vadot    soc {
145c66ec88fSEmmanuel Vadot        #address-cells = <2>;
146c66ec88fSEmmanuel Vadot        #size-cells = <2>;
147c66ec88fSEmmanuel Vadot
148c9ccf3a3SEmmanuel Vadot        mailbox0_cluster3: mailbox-0 {
149c9ccf3a3SEmmanuel Vadot            #mbox-cells = <1>;
150c9ccf3a3SEmmanuel Vadot        };
151c9ccf3a3SEmmanuel Vadot
152c9ccf3a3SEmmanuel Vadot        mailbox0_cluster4: mailbox-1 {
153c9ccf3a3SEmmanuel Vadot            #mbox-cells = <1>;
154c9ccf3a3SEmmanuel Vadot        };
155c9ccf3a3SEmmanuel Vadot
156c66ec88fSEmmanuel Vadot        bus@100000 {
157c66ec88fSEmmanuel Vadot            compatible = "simple-bus";
158c66ec88fSEmmanuel Vadot            #address-cells = <2>;
159c66ec88fSEmmanuel Vadot            #size-cells = <2>;
160c66ec88fSEmmanuel Vadot            ranges = <0x00 0x00100000 0x00 0x00100000 0x00 0x00020000>, /* ctrl mmr */
161c66ec88fSEmmanuel Vadot                     <0x00 0x64800000 0x00 0x64800000 0x00 0x00800000>, /* C71_0 */
162c66ec88fSEmmanuel Vadot                     <0x4d 0x80800000 0x4d 0x80800000 0x00 0x00800000>, /* C66_0 */
163c66ec88fSEmmanuel Vadot                     <0x4d 0x81800000 0x4d 0x81800000 0x00 0x00800000>; /* C66_1 */
164c66ec88fSEmmanuel Vadot
165c66ec88fSEmmanuel Vadot            /* J721E C66_0 DSP node */
166c66ec88fSEmmanuel Vadot            dsp@4d80800000 {
167c66ec88fSEmmanuel Vadot                compatible = "ti,j721e-c66-dsp";
168c66ec88fSEmmanuel Vadot                reg = <0x4d 0x80800000 0x00 0x00048000>,
169c66ec88fSEmmanuel Vadot                      <0x4d 0x80e00000 0x00 0x00008000>,
170c66ec88fSEmmanuel Vadot                      <0x4d 0x80f00000 0x00 0x00008000>;
171c66ec88fSEmmanuel Vadot                reg-names = "l2sram", "l1pram", "l1dram";
172c66ec88fSEmmanuel Vadot                ti,sci = <&dmsc>;
173c66ec88fSEmmanuel Vadot                ti,sci-dev-id = <142>;
174c66ec88fSEmmanuel Vadot                ti,sci-proc-ids = <0x03 0xFF>;
175c66ec88fSEmmanuel Vadot                resets = <&k3_reset 142 1>;
176c66ec88fSEmmanuel Vadot                firmware-name = "j7-c66_0-fw";
177c66ec88fSEmmanuel Vadot                memory-region = <&c66_0_dma_memory_region>,
178c66ec88fSEmmanuel Vadot                                <&c66_0_memory_region>;
179c66ec88fSEmmanuel Vadot                mboxes = <&mailbox0_cluster3 &mbox_c66_0>;
180c66ec88fSEmmanuel Vadot            };
181c66ec88fSEmmanuel Vadot
182c66ec88fSEmmanuel Vadot            /* J721E C71_0 DSP node */
183c66ec88fSEmmanuel Vadot            c71_0: dsp@64800000 {
184c66ec88fSEmmanuel Vadot                compatible = "ti,j721e-c71-dsp";
185c66ec88fSEmmanuel Vadot                reg = <0x00 0x64800000 0x00 0x00080000>,
186c66ec88fSEmmanuel Vadot                      <0x00 0x64e00000 0x00 0x0000c000>;
187c66ec88fSEmmanuel Vadot                reg-names = "l2sram", "l1dram";
188c66ec88fSEmmanuel Vadot                ti,sci = <&dmsc>;
189c66ec88fSEmmanuel Vadot                ti,sci-dev-id = <15>;
190c66ec88fSEmmanuel Vadot                ti,sci-proc-ids = <0x30 0xFF>;
191c66ec88fSEmmanuel Vadot                resets = <&k3_reset 15 1>;
192c66ec88fSEmmanuel Vadot                firmware-name = "j7-c71_0-fw";
193c66ec88fSEmmanuel Vadot                memory-region = <&c71_0_dma_memory_region>,
194c66ec88fSEmmanuel Vadot                                <&c71_0_memory_region>;
195c66ec88fSEmmanuel Vadot                mboxes = <&mailbox0_cluster4 &mbox_c71_0>;
196c66ec88fSEmmanuel Vadot            };
197c66ec88fSEmmanuel Vadot        };
198c66ec88fSEmmanuel Vadot    };
199