xref: /freebsd/sys/contrib/device-tree/Bindings/remoteproc/mtk,scp.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
18cc087a1SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28cc087a1SEmmanuel Vadot%YAML 1.2
38cc087a1SEmmanuel Vadot---
48cc087a1SEmmanuel Vadot$id: http://devicetree.org/schemas/remoteproc/mtk,scp.yaml#
58cc087a1SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68cc087a1SEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: Mediatek SCP
88cc087a1SEmmanuel Vadot
98cc087a1SEmmanuel Vadotmaintainers:
108cc087a1SEmmanuel Vadot  - Tinghan Shen <tinghan.shen@mediatek.com>
118cc087a1SEmmanuel Vadot
128cc087a1SEmmanuel Vadotdescription:
138cc087a1SEmmanuel Vadot  This binding provides support for ARM Cortex M4 Co-processor found on some
148cc087a1SEmmanuel Vadot  Mediatek SoCs.
158cc087a1SEmmanuel Vadot
168cc087a1SEmmanuel Vadotproperties:
178cc087a1SEmmanuel Vadot  compatible:
188cc087a1SEmmanuel Vadot    enum:
198cc087a1SEmmanuel Vadot      - mediatek,mt8183-scp
20c9ccf3a3SEmmanuel Vadot      - mediatek,mt8186-scp
21b97ee269SEmmanuel Vadot      - mediatek,mt8188-scp
227d0873ebSEmmanuel Vadot      - mediatek,mt8188-scp-dual
238cc087a1SEmmanuel Vadot      - mediatek,mt8192-scp
248cc087a1SEmmanuel Vadot      - mediatek,mt8195-scp
2584943d6fSEmmanuel Vadot      - mediatek,mt8195-scp-dual
268cc087a1SEmmanuel Vadot
278cc087a1SEmmanuel Vadot  reg:
288cc087a1SEmmanuel Vadot    description:
29d5b0e70fSEmmanuel Vadot      Should contain the address ranges for memory regions SRAM, CFG, and,
30d5b0e70fSEmmanuel Vadot      on some platforms, L1TCM.
31d5b0e70fSEmmanuel Vadot    minItems: 2
328cc087a1SEmmanuel Vadot    maxItems: 3
338cc087a1SEmmanuel Vadot
348cc087a1SEmmanuel Vadot  reg-names:
35d5b0e70fSEmmanuel Vadot    minItems: 2
3684943d6fSEmmanuel Vadot    maxItems: 3
378cc087a1SEmmanuel Vadot
388cc087a1SEmmanuel Vadot  clocks:
398cc087a1SEmmanuel Vadot    description:
408cc087a1SEmmanuel Vadot      Clock for co-processor (see ../clock/clock-bindings.txt).
418cc087a1SEmmanuel Vadot      Required by mt8183 and mt8192.
428cc087a1SEmmanuel Vadot    maxItems: 1
438cc087a1SEmmanuel Vadot
448cc087a1SEmmanuel Vadot  clock-names:
458cc087a1SEmmanuel Vadot    const: main
468cc087a1SEmmanuel Vadot
47d5b0e70fSEmmanuel Vadot  interrupts:
48d5b0e70fSEmmanuel Vadot    maxItems: 1
49d5b0e70fSEmmanuel Vadot
50d5b0e70fSEmmanuel Vadot  firmware-name:
5101950c46SEmmanuel Vadot    maxItems: 1
52d5b0e70fSEmmanuel Vadot    description:
53d5b0e70fSEmmanuel Vadot      If present, name (or relative path) of the file within the
54d5b0e70fSEmmanuel Vadot      firmware search path containing the firmware image used when
55d5b0e70fSEmmanuel Vadot      initializing SCP.
56d5b0e70fSEmmanuel Vadot
57d5b0e70fSEmmanuel Vadot  memory-region:
58d5b0e70fSEmmanuel Vadot    maxItems: 1
59d5b0e70fSEmmanuel Vadot
6084943d6fSEmmanuel Vadot  cros-ec-rpmsg:
6184943d6fSEmmanuel Vadot    $ref: /schemas/mfd/google,cros-ec.yaml
6284943d6fSEmmanuel Vadot    description:
6384943d6fSEmmanuel Vadot      This subnode represents the rpmsg device. The properties
6484943d6fSEmmanuel Vadot      of this node are defined by the individual bindings for
6584943d6fSEmmanuel Vadot      the rpmsg devices.
6684943d6fSEmmanuel Vadot
6784943d6fSEmmanuel Vadot    required:
6884943d6fSEmmanuel Vadot      - mediatek,rpmsg-name
6984943d6fSEmmanuel Vadot
7084943d6fSEmmanuel Vadot    unevaluatedProperties: false
7184943d6fSEmmanuel Vadot
7284943d6fSEmmanuel Vadot  '#address-cells':
7384943d6fSEmmanuel Vadot    const: 1
7484943d6fSEmmanuel Vadot
7584943d6fSEmmanuel Vadot  '#size-cells':
7684943d6fSEmmanuel Vadot    const: 1
7784943d6fSEmmanuel Vadot
7884943d6fSEmmanuel Vadot  ranges:
7984943d6fSEmmanuel Vadot    description:
8084943d6fSEmmanuel Vadot      Standard ranges definition providing address translations for
8184943d6fSEmmanuel Vadot      local SCP SRAM address spaces to bus addresses.
8284943d6fSEmmanuel Vadot
8384943d6fSEmmanuel VadotpatternProperties:
8484943d6fSEmmanuel Vadot  "^scp@[a-f0-9]+$":
8584943d6fSEmmanuel Vadot    type: object
8684943d6fSEmmanuel Vadot    description:
8784943d6fSEmmanuel Vadot      The MediaTek SCP integrated to SoC might be a multi-core version.
8884943d6fSEmmanuel Vadot      The other cores are represented as child nodes of the boot core.
8984943d6fSEmmanuel Vadot      There are some integration differences for the IP like the usage of
9084943d6fSEmmanuel Vadot      address translator for translating SoC bus addresses into address space
9184943d6fSEmmanuel Vadot      for the processor.
9284943d6fSEmmanuel Vadot
9384943d6fSEmmanuel Vadot      Each SCP core has own cache memory. The SRAM and L1TCM are shared by
9484943d6fSEmmanuel Vadot      cores. The power of cache, SRAM and L1TCM power should be enabled
9584943d6fSEmmanuel Vadot      before booting SCP cores. The size of cache, SRAM, and L1TCM are varied
96*b2d2a78aSEmmanuel Vadot      on different SoCs.
9784943d6fSEmmanuel Vadot
9884943d6fSEmmanuel Vadot      The SCP cores do not use an MMU, but has a set of registers to
9984943d6fSEmmanuel Vadot      control the translations between 32-bit CPU addresses into system bus
10084943d6fSEmmanuel Vadot      addresses. Cache and memory access settings are provided through a
10184943d6fSEmmanuel Vadot      Memory Protection Unit (MPU), programmable only from the SCP.
10284943d6fSEmmanuel Vadot
10384943d6fSEmmanuel Vadot    properties:
10484943d6fSEmmanuel Vadot      compatible:
10584943d6fSEmmanuel Vadot        enum:
10684943d6fSEmmanuel Vadot          - mediatek,scp-core
10784943d6fSEmmanuel Vadot
10884943d6fSEmmanuel Vadot      reg:
10984943d6fSEmmanuel Vadot        description: The base address and size of SRAM.
11084943d6fSEmmanuel Vadot        maxItems: 1
11184943d6fSEmmanuel Vadot
11284943d6fSEmmanuel Vadot      reg-names:
11384943d6fSEmmanuel Vadot        const: sram
11484943d6fSEmmanuel Vadot
11584943d6fSEmmanuel Vadot      interrupts:
11684943d6fSEmmanuel Vadot        maxItems: 1
11784943d6fSEmmanuel Vadot
11884943d6fSEmmanuel Vadot      firmware-name:
11901950c46SEmmanuel Vadot        maxItems: 1
12084943d6fSEmmanuel Vadot        description:
12184943d6fSEmmanuel Vadot          If present, name (or relative path) of the file within the
12284943d6fSEmmanuel Vadot          firmware search path containing the firmware image used when
12384943d6fSEmmanuel Vadot          initializing sub cores of multi-core SCP.
12484943d6fSEmmanuel Vadot
12584943d6fSEmmanuel Vadot      memory-region:
12684943d6fSEmmanuel Vadot        maxItems: 1
12784943d6fSEmmanuel Vadot
12884943d6fSEmmanuel Vadot      cros-ec-rpmsg:
12984943d6fSEmmanuel Vadot        $ref: /schemas/mfd/google,cros-ec.yaml
13084943d6fSEmmanuel Vadot        description:
13184943d6fSEmmanuel Vadot          This subnode represents the rpmsg device. The properties
13284943d6fSEmmanuel Vadot          of this node are defined by the individual bindings for
13384943d6fSEmmanuel Vadot          the rpmsg devices.
13484943d6fSEmmanuel Vadot
13584943d6fSEmmanuel Vadot        required:
13684943d6fSEmmanuel Vadot          - mediatek,rpmsg-name
13784943d6fSEmmanuel Vadot
13884943d6fSEmmanuel Vadot        unevaluatedProperties: false
13984943d6fSEmmanuel Vadot
14084943d6fSEmmanuel Vadot    required:
14184943d6fSEmmanuel Vadot      - compatible
14284943d6fSEmmanuel Vadot      - reg
14384943d6fSEmmanuel Vadot      - reg-names
14484943d6fSEmmanuel Vadot
14584943d6fSEmmanuel Vadot    additionalProperties: false
14684943d6fSEmmanuel Vadot
1478cc087a1SEmmanuel Vadotrequired:
1488cc087a1SEmmanuel Vadot  - compatible
1498cc087a1SEmmanuel Vadot  - reg
1508cc087a1SEmmanuel Vadot  - reg-names
1518cc087a1SEmmanuel Vadot
152d5b0e70fSEmmanuel VadotallOf:
153d5b0e70fSEmmanuel Vadot  - if:
1548cc087a1SEmmanuel Vadot      properties:
1558cc087a1SEmmanuel Vadot        compatible:
1568cc087a1SEmmanuel Vadot          enum:
1578cc087a1SEmmanuel Vadot            - mediatek,mt8183-scp
1588cc087a1SEmmanuel Vadot            - mediatek,mt8192-scp
1598cc087a1SEmmanuel Vadot    then:
1608cc087a1SEmmanuel Vadot      required:
1618cc087a1SEmmanuel Vadot        - clocks
1628cc087a1SEmmanuel Vadot        - clock-names
1638cc087a1SEmmanuel Vadot
164d5b0e70fSEmmanuel Vadot  - if:
165d5b0e70fSEmmanuel Vadot      properties:
166d5b0e70fSEmmanuel Vadot        compatible:
167d5b0e70fSEmmanuel Vadot          enum:
168d5b0e70fSEmmanuel Vadot            - mediatek,mt8183-scp
169d5b0e70fSEmmanuel Vadot            - mediatek,mt8186-scp
170b97ee269SEmmanuel Vadot            - mediatek,mt8188-scp
171d5b0e70fSEmmanuel Vadot    then:
172d5b0e70fSEmmanuel Vadot      properties:
173d5b0e70fSEmmanuel Vadot        reg:
174d5b0e70fSEmmanuel Vadot          maxItems: 2
175d5b0e70fSEmmanuel Vadot        reg-names:
17684943d6fSEmmanuel Vadot          items:
17784943d6fSEmmanuel Vadot            - const: sram
17884943d6fSEmmanuel Vadot            - const: cfg
17984943d6fSEmmanuel Vadot  - if:
1808cc087a1SEmmanuel Vadot      properties:
18184943d6fSEmmanuel Vadot        compatible:
18284943d6fSEmmanuel Vadot          enum:
18384943d6fSEmmanuel Vadot            - mediatek,mt8192-scp
18484943d6fSEmmanuel Vadot            - mediatek,mt8195-scp
18584943d6fSEmmanuel Vadot    then:
18684943d6fSEmmanuel Vadot      properties:
18784943d6fSEmmanuel Vadot        reg:
18884943d6fSEmmanuel Vadot          maxItems: 3
18984943d6fSEmmanuel Vadot        reg-names:
19084943d6fSEmmanuel Vadot          items:
19184943d6fSEmmanuel Vadot            - const: sram
19284943d6fSEmmanuel Vadot            - const: cfg
19384943d6fSEmmanuel Vadot            - const: l1tcm
19484943d6fSEmmanuel Vadot  - if:
19584943d6fSEmmanuel Vadot      properties:
19684943d6fSEmmanuel Vadot        compatible:
19784943d6fSEmmanuel Vadot          enum:
1987d0873ebSEmmanuel Vadot            - mediatek,mt8188-scp-dual
19984943d6fSEmmanuel Vadot            - mediatek,mt8195-scp-dual
20084943d6fSEmmanuel Vadot    then:
20184943d6fSEmmanuel Vadot      properties:
20284943d6fSEmmanuel Vadot        reg:
20384943d6fSEmmanuel Vadot          maxItems: 2
20484943d6fSEmmanuel Vadot        reg-names:
20584943d6fSEmmanuel Vadot          items:
20684943d6fSEmmanuel Vadot            - const: cfg
20784943d6fSEmmanuel Vadot            - const: l1tcm
2088cc087a1SEmmanuel Vadot
20984943d6fSEmmanuel VadotadditionalProperties: false
2108cc087a1SEmmanuel Vadot
2118cc087a1SEmmanuel Vadotexamples:
2128cc087a1SEmmanuel Vadot  - |
213d5b0e70fSEmmanuel Vadot    #include <dt-bindings/clock/mt8192-clk.h>
2148cc087a1SEmmanuel Vadot
2158cc087a1SEmmanuel Vadot    scp@10500000 {
216d5b0e70fSEmmanuel Vadot        compatible = "mediatek,mt8192-scp";
2178cc087a1SEmmanuel Vadot        reg = <0x10500000 0x80000>,
2188cc087a1SEmmanuel Vadot              <0x10700000 0x8000>,
2198cc087a1SEmmanuel Vadot              <0x10720000 0xe0000>;
2208cc087a1SEmmanuel Vadot        reg-names = "sram", "cfg", "l1tcm";
2218cc087a1SEmmanuel Vadot        clocks = <&infracfg CLK_INFRA_SCPSYS>;
2228cc087a1SEmmanuel Vadot        clock-names = "main";
2238cc087a1SEmmanuel Vadot
22484943d6fSEmmanuel Vadot        cros-ec-rpmsg {
22584943d6fSEmmanuel Vadot            compatible = "google,cros-ec-rpmsg";
2268cc087a1SEmmanuel Vadot            mediatek,rpmsg-name = "cros-ec-rpmsg";
2278cc087a1SEmmanuel Vadot        };
2288cc087a1SEmmanuel Vadot    };
22984943d6fSEmmanuel Vadot
23084943d6fSEmmanuel Vadot  - |
23184943d6fSEmmanuel Vadot    scp@10500000 {
23284943d6fSEmmanuel Vadot        compatible = "mediatek,mt8195-scp-dual";
23384943d6fSEmmanuel Vadot        reg = <0x10720000 0xe0000>,
23484943d6fSEmmanuel Vadot              <0x10700000 0x8000>;
23584943d6fSEmmanuel Vadot        reg-names = "cfg", "l1tcm";
23684943d6fSEmmanuel Vadot
23784943d6fSEmmanuel Vadot        #address-cells = <1>;
23884943d6fSEmmanuel Vadot        #size-cells = <1>;
23984943d6fSEmmanuel Vadot        ranges = <0 0x10500000 0x100000>;
24084943d6fSEmmanuel Vadot
24184943d6fSEmmanuel Vadot        scp@0 {
24284943d6fSEmmanuel Vadot            compatible = "mediatek,scp-core";
24384943d6fSEmmanuel Vadot            reg = <0x0 0xa0000>;
24484943d6fSEmmanuel Vadot            reg-names = "sram";
24584943d6fSEmmanuel Vadot
24684943d6fSEmmanuel Vadot            cros-ec-rpmsg {
24784943d6fSEmmanuel Vadot                compatible = "google,cros-ec-rpmsg";
24884943d6fSEmmanuel Vadot                mediatek,rpmsg-name = "cros-ec-rpmsg";
24984943d6fSEmmanuel Vadot            };
25084943d6fSEmmanuel Vadot        };
25184943d6fSEmmanuel Vadot
25284943d6fSEmmanuel Vadot        scp@a0000 {
25384943d6fSEmmanuel Vadot            compatible = "mediatek,scp-core";
25484943d6fSEmmanuel Vadot            reg = <0xa0000 0x20000>;
25584943d6fSEmmanuel Vadot            reg-names = "sram";
25684943d6fSEmmanuel Vadot
25784943d6fSEmmanuel Vadot            cros-ec-rpmsg {
25884943d6fSEmmanuel Vadot                compatible = "google,cros-ec-rpmsg";
25984943d6fSEmmanuel Vadot                mediatek,rpmsg-name = "cros-ec-rpmsg";
26084943d6fSEmmanuel Vadot            };
26184943d6fSEmmanuel Vadot        };
26284943d6fSEmmanuel Vadot    };
263