162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/remoteproc/ti,k3-r5f-rproc.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: TI K3 R5F processor subsystems 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Suman Anna <s-anna@ti.com> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci The TI K3 family of SoCs usually have one or more dual-core Arm Cortex R5F 1462306a36Sopenharmony_ci processor subsystems/clusters (R5FSS). The dual core cluster can be used 1562306a36Sopenharmony_ci either in a LockStep mode providing safety/fault tolerance features or in a 1662306a36Sopenharmony_ci Split mode providing two individual compute cores for doubling the compute 1762306a36Sopenharmony_ci capacity on most SoCs. These are used together with other processors present 1862306a36Sopenharmony_ci on the SoC to achieve various system level goals. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci AM64x SoCs do not support LockStep mode, but rather a new non-safety mode 2162306a36Sopenharmony_ci called "Single-CPU" mode, where only Core0 is used, but with ability to use 2262306a36Sopenharmony_ci Core1's TCMs as well. 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci AM62 SoC family support a single R5F core only which runs Device Manager 2562306a36Sopenharmony_ci firmware and can also be used as a remote processor with IPC communication. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci Each Dual-Core R5F sub-system is represented as a single DTS node 2862306a36Sopenharmony_ci representing the cluster, with a pair of child DT nodes representing 2962306a36Sopenharmony_ci the individual R5F cores. Each node has a number of required or optional 3062306a36Sopenharmony_ci properties that enable the OS running on the host processor to perform 3162306a36Sopenharmony_ci the device management of the remote processor and to communicate with the 3262306a36Sopenharmony_ci remote processor. 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciproperties: 3562306a36Sopenharmony_ci $nodename: 3662306a36Sopenharmony_ci pattern: "^r5fss(@.*)?" 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci compatible: 3962306a36Sopenharmony_ci enum: 4062306a36Sopenharmony_ci - ti,am62-r5fss 4162306a36Sopenharmony_ci - ti,am64-r5fss 4262306a36Sopenharmony_ci - ti,am654-r5fss 4362306a36Sopenharmony_ci - ti,j7200-r5fss 4462306a36Sopenharmony_ci - ti,j721e-r5fss 4562306a36Sopenharmony_ci - ti,j721s2-r5fss 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci power-domains: 4862306a36Sopenharmony_ci description: | 4962306a36Sopenharmony_ci Should contain a phandle to a PM domain provider node and an args 5062306a36Sopenharmony_ci specifier containing the R5FSS device id value. 5162306a36Sopenharmony_ci maxItems: 1 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci "#address-cells": 5462306a36Sopenharmony_ci const: 1 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci "#size-cells": 5762306a36Sopenharmony_ci const: 1 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci ranges: 6062306a36Sopenharmony_ci description: | 6162306a36Sopenharmony_ci Standard ranges definition providing address translations for 6262306a36Sopenharmony_ci local R5F TCM address spaces to bus addresses. 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci# Optional properties: 6562306a36Sopenharmony_ci# -------------------- 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci ti,cluster-mode: 6862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 6962306a36Sopenharmony_ci description: | 7062306a36Sopenharmony_ci Configuration Mode for the Dual R5F cores within the R5F cluster. 7162306a36Sopenharmony_ci For most SoCs (AM65x, J721E, J7200, J721s2), 7262306a36Sopenharmony_ci It should be either a value of 1 (LockStep mode) or 0 (Split mode) on 7362306a36Sopenharmony_ci most SoCs (AM65x, J721E, J7200, J721s2), default is LockStep mode if 7462306a36Sopenharmony_ci omitted. 7562306a36Sopenharmony_ci For AM64x SoCs, 7662306a36Sopenharmony_ci It should be either a value of 0 (Split mode) or 2 (Single-CPU mode) and 7762306a36Sopenharmony_ci default is Split mode if omitted. 7862306a36Sopenharmony_ci For AM62x SoCs, 7962306a36Sopenharmony_ci It should be set as 3 (Single-Core mode) which is also the default if 8062306a36Sopenharmony_ci omitted. 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci# R5F Processor Child Nodes: 8462306a36Sopenharmony_ci# ========================== 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_cipatternProperties: 8762306a36Sopenharmony_ci "^r5f@[a-f0-9]+$": 8862306a36Sopenharmony_ci type: object 8962306a36Sopenharmony_ci description: | 9062306a36Sopenharmony_ci The R5F Sub-System device node should define two R5F child nodes, each 9162306a36Sopenharmony_ci node representing a TI instantiation of the Arm Cortex R5F core. There 9262306a36Sopenharmony_ci are some specific integration differences for the IP like the usage of 9362306a36Sopenharmony_ci a Region Address Translator (RAT) for translating the larger SoC bus 9462306a36Sopenharmony_ci addresses into a 32-bit address space for the processor. For AM62x, 9562306a36Sopenharmony_ci the R5F Sub-System device node should only define one R5F child node 9662306a36Sopenharmony_ci as it has only one core available. 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci Each R5F core has an associated 64 KB of Tightly-Coupled Memory (TCM) 9962306a36Sopenharmony_ci internal memories split between two banks - TCMA and TCMB (further 10062306a36Sopenharmony_ci interleaved into two banks TCMB0 and TCMB1). These memories (also called 10162306a36Sopenharmony_ci ATCM and BTCM) provide read/write performance on par with the core's L1 10262306a36Sopenharmony_ci caches. Each of the TCMs can be enabled or disabled independently and 10362306a36Sopenharmony_ci either of them can be configured to appear at that R5F's address 0x0. 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci The cores do not use an MMU, but has a Region Address Translator 10662306a36Sopenharmony_ci (RAT) module that is accessible only from the R5Fs for providing 10762306a36Sopenharmony_ci translations between 32-bit CPU addresses into larger system bus 10862306a36Sopenharmony_ci addresses. Cache and memory access settings are provided through a 10962306a36Sopenharmony_ci Memory Protection Unit (MPU), programmable only from the R5Fs. 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml# 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci properties: 11462306a36Sopenharmony_ci compatible: 11562306a36Sopenharmony_ci enum: 11662306a36Sopenharmony_ci - ti,am62-r5f 11762306a36Sopenharmony_ci - ti,am64-r5f 11862306a36Sopenharmony_ci - ti,am654-r5f 11962306a36Sopenharmony_ci - ti,j7200-r5f 12062306a36Sopenharmony_ci - ti,j721e-r5f 12162306a36Sopenharmony_ci - ti,j721s2-r5f 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci reg: 12462306a36Sopenharmony_ci items: 12562306a36Sopenharmony_ci - description: Address and Size of the ATCM internal memory region 12662306a36Sopenharmony_ci - description: Address and Size of the BTCM internal memory region 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci reg-names: 12962306a36Sopenharmony_ci items: 13062306a36Sopenharmony_ci - const: atcm 13162306a36Sopenharmony_ci - const: btcm 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci resets: 13462306a36Sopenharmony_ci description: | 13562306a36Sopenharmony_ci Should contain the phandle to the reset controller node managing the 13662306a36Sopenharmony_ci local resets for this device, and a reset specifier. 13762306a36Sopenharmony_ci maxItems: 1 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci firmware-name: 14062306a36Sopenharmony_ci description: | 14162306a36Sopenharmony_ci Should contain the name of the default firmware image 14262306a36Sopenharmony_ci file located on the firmware search path 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci# The following properties are mandatory for R5F Core0 in both LockStep and Split 14562306a36Sopenharmony_ci# modes, and are mandatory for R5F Core1 _only_ in Split mode. They are unused for 14662306a36Sopenharmony_ci# R5F Core1 in LockStep mode: 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci mboxes: 14962306a36Sopenharmony_ci description: | 15062306a36Sopenharmony_ci OMAP Mailbox specifier denoting the sub-mailbox, to be used for 15162306a36Sopenharmony_ci communication with the remote processor. This property should match 15262306a36Sopenharmony_ci with the sub-mailbox node used in the firmware image. 15362306a36Sopenharmony_ci maxItems: 1 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci memory-region: 15662306a36Sopenharmony_ci description: | 15762306a36Sopenharmony_ci phandle to the reserved memory nodes to be associated with the 15862306a36Sopenharmony_ci remoteproc device. There should be at least two reserved memory nodes 15962306a36Sopenharmony_ci defined. The reserved memory nodes should be carveout nodes, and 16062306a36Sopenharmony_ci should be defined with a "no-map" property as per the bindings in 16162306a36Sopenharmony_ci Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt 16262306a36Sopenharmony_ci minItems: 2 16362306a36Sopenharmony_ci maxItems: 8 16462306a36Sopenharmony_ci items: 16562306a36Sopenharmony_ci - description: region used for dynamic DMA allocations like vrings and 16662306a36Sopenharmony_ci vring buffers 16762306a36Sopenharmony_ci - description: region reserved for firmware image sections 16862306a36Sopenharmony_ci additionalItems: true 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci# Optional properties: 17262306a36Sopenharmony_ci# -------------------- 17362306a36Sopenharmony_ci# The following properties are optional properties for each of the R5F cores: 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci ti,atcm-enable: 17662306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 17762306a36Sopenharmony_ci enum: [0, 1] 17862306a36Sopenharmony_ci description: | 17962306a36Sopenharmony_ci R5F core configuration mode dictating if ATCM should be enabled. The 18062306a36Sopenharmony_ci R5F address of ATCM is dictated by ti,loczrama property. Should be 18162306a36Sopenharmony_ci either a value of 1 (enabled) or 0 (disabled), default is disabled 18262306a36Sopenharmony_ci if omitted. Recommended to enable it for maximizing TCMs. 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci ti,btcm-enable: 18562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 18662306a36Sopenharmony_ci enum: [0, 1] 18762306a36Sopenharmony_ci description: | 18862306a36Sopenharmony_ci R5F core configuration mode dictating if BTCM should be enabled. The 18962306a36Sopenharmony_ci R5F address of BTCM is dictated by ti,loczrama property. Should be 19062306a36Sopenharmony_ci either a value of 1 (enabled) or 0 (disabled), default is enabled if 19162306a36Sopenharmony_ci omitted. 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci ti,loczrama: 19462306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 19562306a36Sopenharmony_ci enum: [0, 1] 19662306a36Sopenharmony_ci description: | 19762306a36Sopenharmony_ci R5F core configuration mode dictating which TCM should appear at 19862306a36Sopenharmony_ci address 0 (from core's view). Should be either a value of 1 (ATCM 19962306a36Sopenharmony_ci at 0x0) or 0 (BTCM at 0x0), default value is 1 if omitted. 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci sram: 20262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 20362306a36Sopenharmony_ci minItems: 1 20462306a36Sopenharmony_ci maxItems: 4 20562306a36Sopenharmony_ci items: 20662306a36Sopenharmony_ci maxItems: 1 20762306a36Sopenharmony_ci description: | 20862306a36Sopenharmony_ci phandles to one or more reserved on-chip SRAM regions. The regions 20962306a36Sopenharmony_ci should be defined as child nodes of the respective SRAM node, and 21062306a36Sopenharmony_ci should be defined as per the generic bindings in, 21162306a36Sopenharmony_ci Documentation/devicetree/bindings/sram/sram.yaml 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci required: 21462306a36Sopenharmony_ci - compatible 21562306a36Sopenharmony_ci - reg 21662306a36Sopenharmony_ci - reg-names 21762306a36Sopenharmony_ci - ti,sci 21862306a36Sopenharmony_ci - ti,sci-dev-id 21962306a36Sopenharmony_ci - ti,sci-proc-ids 22062306a36Sopenharmony_ci - resets 22162306a36Sopenharmony_ci - firmware-name 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci unevaluatedProperties: false 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ciallOf: 22662306a36Sopenharmony_ci - if: 22762306a36Sopenharmony_ci properties: 22862306a36Sopenharmony_ci compatible: 22962306a36Sopenharmony_ci enum: 23062306a36Sopenharmony_ci - ti,am64-r5fss 23162306a36Sopenharmony_ci then: 23262306a36Sopenharmony_ci properties: 23362306a36Sopenharmony_ci ti,cluster-mode: 23462306a36Sopenharmony_ci enum: [0, 2] 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci - if: 23762306a36Sopenharmony_ci properties: 23862306a36Sopenharmony_ci compatible: 23962306a36Sopenharmony_ci enum: 24062306a36Sopenharmony_ci - ti,am654-r5fss 24162306a36Sopenharmony_ci - ti,j7200-r5fss 24262306a36Sopenharmony_ci - ti,j721e-r5fss 24362306a36Sopenharmony_ci - ti,j721s2-r5fss 24462306a36Sopenharmony_ci then: 24562306a36Sopenharmony_ci properties: 24662306a36Sopenharmony_ci ti,cluster-mode: 24762306a36Sopenharmony_ci enum: [0, 1] 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci - if: 25062306a36Sopenharmony_ci properties: 25162306a36Sopenharmony_ci compatible: 25262306a36Sopenharmony_ci enum: 25362306a36Sopenharmony_ci - ti,am62-r5fss 25462306a36Sopenharmony_ci then: 25562306a36Sopenharmony_ci properties: 25662306a36Sopenharmony_ci ti,cluster-mode: 25762306a36Sopenharmony_ci enum: [3] 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_cirequired: 26062306a36Sopenharmony_ci - compatible 26162306a36Sopenharmony_ci - power-domains 26262306a36Sopenharmony_ci - "#address-cells" 26362306a36Sopenharmony_ci - "#size-cells" 26462306a36Sopenharmony_ci - ranges 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ciadditionalProperties: false 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ciexamples: 26962306a36Sopenharmony_ci - | 27062306a36Sopenharmony_ci soc { 27162306a36Sopenharmony_ci #address-cells = <2>; 27262306a36Sopenharmony_ci #size-cells = <2>; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci mailbox0: mailbox-0 { 27562306a36Sopenharmony_ci #mbox-cells = <1>; 27662306a36Sopenharmony_ci }; 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci mailbox1: mailbox-1 { 27962306a36Sopenharmony_ci #mbox-cells = <1>; 28062306a36Sopenharmony_ci }; 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci bus@100000 { 28362306a36Sopenharmony_ci compatible = "simple-bus"; 28462306a36Sopenharmony_ci #address-cells = <2>; 28562306a36Sopenharmony_ci #size-cells = <2>; 28662306a36Sopenharmony_ci ranges = <0x00 0x00100000 0x00 0x00100000 0x00 0x00020000>, /* ctrl mmr */ 28762306a36Sopenharmony_ci <0x00 0x41000000 0x00 0x41000000 0x00 0x00020000>, 28862306a36Sopenharmony_ci <0x00 0x41400000 0x00 0x41400000 0x00 0x00020000>, 28962306a36Sopenharmony_ci <0x00 0x41c00000 0x00 0x41c00000 0x00 0x00080000>; 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ci bus@28380000 { 29262306a36Sopenharmony_ci compatible = "simple-bus"; 29362306a36Sopenharmony_ci #address-cells = <2>; 29462306a36Sopenharmony_ci #size-cells = <2>; 29562306a36Sopenharmony_ci ranges = <0x00 0x28380000 0x00 0x28380000 0x00 0x03880000>, /* MCU NAVSS */ 29662306a36Sopenharmony_ci <0x00 0x41000000 0x00 0x41000000 0x00 0x00020000>, /* MCU R5F Core0 */ 29762306a36Sopenharmony_ci <0x00 0x41400000 0x00 0x41400000 0x00 0x00020000>, /* MCU R5F Core1 */ 29862306a36Sopenharmony_ci <0x00 0x41c00000 0x00 0x41c00000 0x00 0x00080000>; /* MCU SRAM */ 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci /* AM65x MCU R5FSS node */ 30162306a36Sopenharmony_ci mcu_r5fss0: r5fss@41000000 { 30262306a36Sopenharmony_ci compatible = "ti,am654-r5fss"; 30362306a36Sopenharmony_ci power-domains = <&k3_pds 129>; 30462306a36Sopenharmony_ci ti,cluster-mode = <1>; 30562306a36Sopenharmony_ci #address-cells = <1>; 30662306a36Sopenharmony_ci #size-cells = <1>; 30762306a36Sopenharmony_ci ranges = <0x41000000 0x00 0x41000000 0x20000>, 30862306a36Sopenharmony_ci <0x41400000 0x00 0x41400000 0x20000>; 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci mcu_r5f0: r5f@41000000 { 31162306a36Sopenharmony_ci compatible = "ti,am654-r5f"; 31262306a36Sopenharmony_ci reg = <0x41000000 0x00008000>, 31362306a36Sopenharmony_ci <0x41010000 0x00008000>; 31462306a36Sopenharmony_ci reg-names = "atcm", "btcm"; 31562306a36Sopenharmony_ci ti,sci = <&dmsc>; 31662306a36Sopenharmony_ci ti,sci-dev-id = <159>; 31762306a36Sopenharmony_ci ti,sci-proc-ids = <0x01 0xFF>; 31862306a36Sopenharmony_ci resets = <&k3_reset 159 1>; 31962306a36Sopenharmony_ci firmware-name = "am65x-mcu-r5f0_0-fw"; 32062306a36Sopenharmony_ci ti,atcm-enable = <1>; 32162306a36Sopenharmony_ci ti,btcm-enable = <1>; 32262306a36Sopenharmony_ci ti,loczrama = <1>; 32362306a36Sopenharmony_ci mboxes = <&mailbox0 &mbox_mcu_r5fss0_core0>; 32462306a36Sopenharmony_ci memory-region = <&mcu_r5fss0_core0_dma_memory_region>, 32562306a36Sopenharmony_ci <&mcu_r5fss0_core0_memory_region>; 32662306a36Sopenharmony_ci sram = <&mcu_r5fss0_core0_sram>; 32762306a36Sopenharmony_ci }; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci mcu_r5f1: r5f@41400000 { 33062306a36Sopenharmony_ci compatible = "ti,am654-r5f"; 33162306a36Sopenharmony_ci reg = <0x41400000 0x00008000>, 33262306a36Sopenharmony_ci <0x41410000 0x00008000>; 33362306a36Sopenharmony_ci reg-names = "atcm", "btcm"; 33462306a36Sopenharmony_ci ti,sci = <&dmsc>; 33562306a36Sopenharmony_ci ti,sci-dev-id = <245>; 33662306a36Sopenharmony_ci ti,sci-proc-ids = <0x02 0xFF>; 33762306a36Sopenharmony_ci resets = <&k3_reset 245 1>; 33862306a36Sopenharmony_ci firmware-name = "am65x-mcu-r5f0_1-fw"; 33962306a36Sopenharmony_ci ti,atcm-enable = <1>; 34062306a36Sopenharmony_ci ti,btcm-enable = <1>; 34162306a36Sopenharmony_ci ti,loczrama = <1>; 34262306a36Sopenharmony_ci mboxes = <&mailbox1 &mbox_mcu_r5fss0_core1>; 34362306a36Sopenharmony_ci }; 34462306a36Sopenharmony_ci }; 34562306a36Sopenharmony_ci }; 34662306a36Sopenharmony_ci }; 34762306a36Sopenharmony_ci }; 348