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