18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/remoteproc/ti,omap-remoteproc.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: OMAP4+ Remoteproc Devices 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Suman Anna <s-anna@ti.com> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cidescription: 138c2ecf20Sopenharmony_ci The OMAP family of SoCs usually have one or more slave processor sub-systems 148c2ecf20Sopenharmony_ci that are used to offload some of the processor-intensive tasks, or to manage 158c2ecf20Sopenharmony_ci other hardware accelerators, for achieving various system level goals. 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci The processor cores in the sub-system are usually behind an IOMMU, and may 188c2ecf20Sopenharmony_ci contain additional sub-modules like Internal RAM and/or ROMs, L1 and/or L2 198c2ecf20Sopenharmony_ci caches, an Interrupt Controller, a Cache Controller etc. 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci The OMAP SoCs usually have a DSP processor sub-system and/or an IPU processor 228c2ecf20Sopenharmony_ci sub-system. The DSP processor sub-system can contain any of the TI's C64x, 238c2ecf20Sopenharmony_ci C66x or C67x family of DSP cores as the main execution unit. The IPU processor 248c2ecf20Sopenharmony_ci sub-system usually contains either a Dual-Core Cortex-M3 or Dual-Core 258c2ecf20Sopenharmony_ci Cortex-M4 processors. 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci Each remote processor sub-system is represented as a single DT node. Each node 288c2ecf20Sopenharmony_ci has a number of required or optional properties that enable the OS running on 298c2ecf20Sopenharmony_ci the host processor (MPU) to perform the device management of the remote 308c2ecf20Sopenharmony_ci processor and to communicate with the remote processor. The various properties 318c2ecf20Sopenharmony_ci can be classified as constant or variable. The constant properties are 328c2ecf20Sopenharmony_ci dictated by the SoC and does not change from one board to another having the 338c2ecf20Sopenharmony_ci same SoC. Examples of constant properties include 'iommus', 'reg'. The 348c2ecf20Sopenharmony_ci variable properties are dictated by the system integration aspects such as 358c2ecf20Sopenharmony_ci memory on the board, or configuration used within the corresponding firmware 368c2ecf20Sopenharmony_ci image. Examples of variable properties include 'mboxes', 'memory-region', 378c2ecf20Sopenharmony_ci 'timers', 'watchdog-timers' etc. 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciproperties: 408c2ecf20Sopenharmony_ci compatible: 418c2ecf20Sopenharmony_ci enum: 428c2ecf20Sopenharmony_ci - ti,omap4-dsp 438c2ecf20Sopenharmony_ci - ti,omap5-dsp 448c2ecf20Sopenharmony_ci - ti,dra7-dsp 458c2ecf20Sopenharmony_ci - ti,omap4-ipu 468c2ecf20Sopenharmony_ci - ti,omap5-ipu 478c2ecf20Sopenharmony_ci - ti,dra7-ipu 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci iommus: 508c2ecf20Sopenharmony_ci minItems: 1 518c2ecf20Sopenharmony_ci maxItems: 2 528c2ecf20Sopenharmony_ci description: | 538c2ecf20Sopenharmony_ci phandles to OMAP IOMMU nodes, that need to be programmed 548c2ecf20Sopenharmony_ci for this remote processor to access any external RAM memory or 558c2ecf20Sopenharmony_ci other peripheral device address spaces. This property usually 568c2ecf20Sopenharmony_ci has only a single phandle. Multiple phandles are used only in 578c2ecf20Sopenharmony_ci cases where the sub-system has different ports for different 588c2ecf20Sopenharmony_ci sub-modules within the processor sub-system (eg: DRA7 DSPs), 598c2ecf20Sopenharmony_ci and need the same programming in both the MMUs. 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci mboxes: 628c2ecf20Sopenharmony_ci minItems: 1 638c2ecf20Sopenharmony_ci maxItems: 2 648c2ecf20Sopenharmony_ci description: | 658c2ecf20Sopenharmony_ci OMAP Mailbox specifier denoting the sub-mailbox, to be used for 668c2ecf20Sopenharmony_ci communication with the remote processor. The specifier format is 678c2ecf20Sopenharmony_ci as per the bindings, 688c2ecf20Sopenharmony_ci Documentation/devicetree/bindings/mailbox/omap-mailbox.txt 698c2ecf20Sopenharmony_ci This property should match with the sub-mailbox node used in 708c2ecf20Sopenharmony_ci the firmware image. 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci clocks: 738c2ecf20Sopenharmony_ci description: | 748c2ecf20Sopenharmony_ci Main functional clock for the remote processor 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci resets: 778c2ecf20Sopenharmony_ci description: | 788c2ecf20Sopenharmony_ci Reset handles for the remote processor 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci firmware-name: 818c2ecf20Sopenharmony_ci description: | 828c2ecf20Sopenharmony_ci Default name of the firmware to load to the remote processor. 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci# Optional properties: 858c2ecf20Sopenharmony_ci# -------------------- 868c2ecf20Sopenharmony_ci# Some of these properties are mandatory on some SoCs, and some are optional 878c2ecf20Sopenharmony_ci# depending on the configuration of the firmware image to be executed on the 888c2ecf20Sopenharmony_ci# remote processor. The conditions are mentioned for each property. 898c2ecf20Sopenharmony_ci# 908c2ecf20Sopenharmony_ci# The following are the optional properties: 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci memory-region: 938c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle 948c2ecf20Sopenharmony_ci description: | 958c2ecf20Sopenharmony_ci phandle to the reserved memory node to be associated 968c2ecf20Sopenharmony_ci with the remoteproc device. The reserved memory node 978c2ecf20Sopenharmony_ci can be a CMA memory node, and should be defined as 988c2ecf20Sopenharmony_ci per the bindings, 998c2ecf20Sopenharmony_ci Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci reg: 1028c2ecf20Sopenharmony_ci description: | 1038c2ecf20Sopenharmony_ci Address space for any remoteproc memories present on 1048c2ecf20Sopenharmony_ci the SoC. Should contain an entry for each value in 1058c2ecf20Sopenharmony_ci 'reg-names'. These are mandatory for all DSP and IPU 1068c2ecf20Sopenharmony_ci processors that have them (OMAP4/OMAP5 DSPs do not have 1078c2ecf20Sopenharmony_ci any RAMs) 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci reg-names: 1108c2ecf20Sopenharmony_ci description: | 1118c2ecf20Sopenharmony_ci Required names for each of the address spaces defined in 1128c2ecf20Sopenharmony_ci the 'reg' property. Expects the names from the following 1138c2ecf20Sopenharmony_ci list, in the specified order, each representing the corresponding 1148c2ecf20Sopenharmony_ci internal RAM memory region. 1158c2ecf20Sopenharmony_ci minItems: 1 1168c2ecf20Sopenharmony_ci maxItems: 3 1178c2ecf20Sopenharmony_ci items: 1188c2ecf20Sopenharmony_ci - const: l2ram 1198c2ecf20Sopenharmony_ci - const: l1pram 1208c2ecf20Sopenharmony_ci - const: l1dram 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ci ti,bootreg: 1238c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 1248c2ecf20Sopenharmony_ci description: | 1258c2ecf20Sopenharmony_ci Should be a triple of the phandle to the System Control 1268c2ecf20Sopenharmony_ci Configuration region that contains the boot address 1278c2ecf20Sopenharmony_ci register, the register offset of the boot address 1288c2ecf20Sopenharmony_ci register within the System Control module, and the bit 1298c2ecf20Sopenharmony_ci shift within the register. This property is required for 1308c2ecf20Sopenharmony_ci all the DSP instances on OMAP4, OMAP5 and DRA7xx SoCs. 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci ti,autosuspend-delay-ms: 1338c2ecf20Sopenharmony_ci description: | 1348c2ecf20Sopenharmony_ci Custom autosuspend delay for the remoteproc in milliseconds. 1358c2ecf20Sopenharmony_ci Recommended values is preferable to be in the order of couple 1368c2ecf20Sopenharmony_ci of seconds. A negative value can also be used to disable the 1378c2ecf20Sopenharmony_ci autosuspend behavior. 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci ti,timers: 1408c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 1418c2ecf20Sopenharmony_ci description: | 1428c2ecf20Sopenharmony_ci One or more phandles to OMAP DMTimer nodes, that serve 1438c2ecf20Sopenharmony_ci as System/Tick timers for the OS running on the remote 1448c2ecf20Sopenharmony_ci processors. This will usually be a single timer if the 1458c2ecf20Sopenharmony_ci processor sub-system is running in SMP mode, or one per 1468c2ecf20Sopenharmony_ci core in the processor sub-system. This can also be used 1478c2ecf20Sopenharmony_ci to reserve specific timers to be dedicated to the 1488c2ecf20Sopenharmony_ci remote processors. 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_ci This property is mandatory on remote processors requiring 1518c2ecf20Sopenharmony_ci external tick wakeup, and to support Power Management 1528c2ecf20Sopenharmony_ci features. The timers to be used should match with the 1538c2ecf20Sopenharmony_ci timers used in the firmware image. 1548c2ecf20Sopenharmony_ci 1558c2ecf20Sopenharmony_ci ti,watchdog-timers: 1568c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 1578c2ecf20Sopenharmony_ci description: | 1588c2ecf20Sopenharmony_ci One or more phandles to OMAP DMTimer nodes, used to 1598c2ecf20Sopenharmony_ci serve as Watchdog timers for the processor cores. This 1608c2ecf20Sopenharmony_ci will usually be one per executing processor core, even 1618c2ecf20Sopenharmony_ci if the processor sub-system is running a SMP OS. 1628c2ecf20Sopenharmony_ci 1638c2ecf20Sopenharmony_ci The timers to be used should match with the watchdog 1648c2ecf20Sopenharmony_ci timers used in the firmware image. 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_ciif: 1678c2ecf20Sopenharmony_ci properties: 1688c2ecf20Sopenharmony_ci compatible: 1698c2ecf20Sopenharmony_ci enum: 1708c2ecf20Sopenharmony_ci - ti,dra7-dsp 1718c2ecf20Sopenharmony_cithen: 1728c2ecf20Sopenharmony_ci properties: 1738c2ecf20Sopenharmony_ci reg: 1748c2ecf20Sopenharmony_ci minItems: 3 1758c2ecf20Sopenharmony_ci maxItems: 3 1768c2ecf20Sopenharmony_ci required: 1778c2ecf20Sopenharmony_ci - reg 1788c2ecf20Sopenharmony_ci - reg-names 1798c2ecf20Sopenharmony_ci - ti,bootreg 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_cielse: 1828c2ecf20Sopenharmony_ci if: 1838c2ecf20Sopenharmony_ci properties: 1848c2ecf20Sopenharmony_ci compatible: 1858c2ecf20Sopenharmony_ci enum: 1868c2ecf20Sopenharmony_ci - ti,omap4-ipu 1878c2ecf20Sopenharmony_ci - ti,omap5-ipu 1888c2ecf20Sopenharmony_ci - ti,dra7-ipu 1898c2ecf20Sopenharmony_ci then: 1908c2ecf20Sopenharmony_ci properties: 1918c2ecf20Sopenharmony_ci reg: 1928c2ecf20Sopenharmony_ci minItems: 1 1938c2ecf20Sopenharmony_ci maxItems: 1 1948c2ecf20Sopenharmony_ci ti,bootreg: false 1958c2ecf20Sopenharmony_ci required: 1968c2ecf20Sopenharmony_ci - reg 1978c2ecf20Sopenharmony_ci - reg-names 1988c2ecf20Sopenharmony_ci 1998c2ecf20Sopenharmony_ci else: 2008c2ecf20Sopenharmony_ci properties: 2018c2ecf20Sopenharmony_ci reg: false 2028c2ecf20Sopenharmony_ci required: 2038c2ecf20Sopenharmony_ci - ti,bootreg 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_cirequired: 2068c2ecf20Sopenharmony_ci - compatible 2078c2ecf20Sopenharmony_ci - iommus 2088c2ecf20Sopenharmony_ci - mboxes 2098c2ecf20Sopenharmony_ci - clocks 2108c2ecf20Sopenharmony_ci - resets 2118c2ecf20Sopenharmony_ci - firmware-name 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ciadditionalProperties: false 2148c2ecf20Sopenharmony_ci 2158c2ecf20Sopenharmony_ciexamples: 2168c2ecf20Sopenharmony_ci - | 2178c2ecf20Sopenharmony_ci 2188c2ecf20Sopenharmony_ci //Example 1: OMAP4 DSP 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci /* DSP Reserved Memory node */ 2218c2ecf20Sopenharmony_ci #include <dt-bindings/clock/omap4.h> 2228c2ecf20Sopenharmony_ci reserved-memory { 2238c2ecf20Sopenharmony_ci #address-cells = <1>; 2248c2ecf20Sopenharmony_ci #size-cells = <1>; 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci dsp_memory_region: dsp-memory@98000000 { 2278c2ecf20Sopenharmony_ci compatible = "shared-dma-pool"; 2288c2ecf20Sopenharmony_ci reg = <0x98000000 0x800000>; 2298c2ecf20Sopenharmony_ci reusable; 2308c2ecf20Sopenharmony_ci }; 2318c2ecf20Sopenharmony_ci }; 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_ci /* DSP node */ 2348c2ecf20Sopenharmony_ci ocp { 2358c2ecf20Sopenharmony_ci dsp: dsp { 2368c2ecf20Sopenharmony_ci compatible = "ti,omap4-dsp"; 2378c2ecf20Sopenharmony_ci ti,bootreg = <&scm_conf 0x304 0>; 2388c2ecf20Sopenharmony_ci iommus = <&mmu_dsp>; 2398c2ecf20Sopenharmony_ci mboxes = <&mailbox &mbox_dsp>; 2408c2ecf20Sopenharmony_ci memory-region = <&dsp_memory_region>; 2418c2ecf20Sopenharmony_ci ti,timers = <&timer5>; 2428c2ecf20Sopenharmony_ci ti,watchdog-timers = <&timer6>; 2438c2ecf20Sopenharmony_ci clocks = <&tesla_clkctrl OMAP4_DSP_CLKCTRL 0>; 2448c2ecf20Sopenharmony_ci resets = <&prm_tesla 0>, <&prm_tesla 1>; 2458c2ecf20Sopenharmony_ci firmware-name = "omap4-dsp-fw.xe64T"; 2468c2ecf20Sopenharmony_ci }; 2478c2ecf20Sopenharmony_ci }; 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ci - |+ 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ci //Example 2: OMAP5 IPU 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci /* IPU Reserved Memory node */ 2548c2ecf20Sopenharmony_ci #include <dt-bindings/clock/omap5.h> 2558c2ecf20Sopenharmony_ci reserved-memory { 2568c2ecf20Sopenharmony_ci #address-cells = <2>; 2578c2ecf20Sopenharmony_ci #size-cells = <2>; 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ci ipu_memory_region: ipu-memory@95800000 { 2608c2ecf20Sopenharmony_ci compatible = "shared-dma-pool"; 2618c2ecf20Sopenharmony_ci reg = <0 0x95800000 0 0x3800000>; 2628c2ecf20Sopenharmony_ci reusable; 2638c2ecf20Sopenharmony_ci }; 2648c2ecf20Sopenharmony_ci }; 2658c2ecf20Sopenharmony_ci 2668c2ecf20Sopenharmony_ci /* IPU node */ 2678c2ecf20Sopenharmony_ci ocp { 2688c2ecf20Sopenharmony_ci #address-cells = <1>; 2698c2ecf20Sopenharmony_ci #size-cells = <1>; 2708c2ecf20Sopenharmony_ci 2718c2ecf20Sopenharmony_ci ipu: ipu@55020000 { 2728c2ecf20Sopenharmony_ci compatible = "ti,omap5-ipu"; 2738c2ecf20Sopenharmony_ci reg = <0x55020000 0x10000>; 2748c2ecf20Sopenharmony_ci reg-names = "l2ram"; 2758c2ecf20Sopenharmony_ci iommus = <&mmu_ipu>; 2768c2ecf20Sopenharmony_ci mboxes = <&mailbox &mbox_ipu>; 2778c2ecf20Sopenharmony_ci memory-region = <&ipu_memory_region>; 2788c2ecf20Sopenharmony_ci ti,timers = <&timer3>, <&timer4>; 2798c2ecf20Sopenharmony_ci ti,watchdog-timers = <&timer9>, <&timer11>; 2808c2ecf20Sopenharmony_ci clocks = <&ipu_clkctrl OMAP5_MMU_IPU_CLKCTRL 0>; 2818c2ecf20Sopenharmony_ci resets = <&prm_core 2>; 2828c2ecf20Sopenharmony_ci firmware-name = "omap5-ipu-fw.xem4"; 2838c2ecf20Sopenharmony_ci }; 2848c2ecf20Sopenharmony_ci }; 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_ci - |+ 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_ci //Example 3: DRA7xx/AM57xx DSP 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_ci /* DSP1 Reserved Memory node */ 2918c2ecf20Sopenharmony_ci #include <dt-bindings/clock/dra7.h> 2928c2ecf20Sopenharmony_ci reserved-memory { 2938c2ecf20Sopenharmony_ci #address-cells = <2>; 2948c2ecf20Sopenharmony_ci #size-cells = <2>; 2958c2ecf20Sopenharmony_ci 2968c2ecf20Sopenharmony_ci dsp1_memory_region: dsp1-memory@99000000 { 2978c2ecf20Sopenharmony_ci compatible = "shared-dma-pool"; 2988c2ecf20Sopenharmony_ci reg = <0x0 0x99000000 0x0 0x4000000>; 2998c2ecf20Sopenharmony_ci reusable; 3008c2ecf20Sopenharmony_ci }; 3018c2ecf20Sopenharmony_ci }; 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_ci /* DSP1 node */ 3048c2ecf20Sopenharmony_ci ocp { 3058c2ecf20Sopenharmony_ci #address-cells = <1>; 3068c2ecf20Sopenharmony_ci #size-cells = <1>; 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_ci dsp1: dsp@40800000 { 3098c2ecf20Sopenharmony_ci compatible = "ti,dra7-dsp"; 3108c2ecf20Sopenharmony_ci reg = <0x40800000 0x48000>, 3118c2ecf20Sopenharmony_ci <0x40e00000 0x8000>, 3128c2ecf20Sopenharmony_ci <0x40f00000 0x8000>; 3138c2ecf20Sopenharmony_ci reg-names = "l2ram", "l1pram", "l1dram"; 3148c2ecf20Sopenharmony_ci ti,bootreg = <&scm_conf 0x55c 0>; 3158c2ecf20Sopenharmony_ci iommus = <&mmu0_dsp1>, <&mmu1_dsp1>; 3168c2ecf20Sopenharmony_ci mboxes = <&mailbox5 &mbox_dsp1_ipc3x>; 3178c2ecf20Sopenharmony_ci memory-region = <&dsp1_memory_region>; 3188c2ecf20Sopenharmony_ci ti,timers = <&timer5>; 3198c2ecf20Sopenharmony_ci ti,watchdog-timers = <&timer10>; 3208c2ecf20Sopenharmony_ci resets = <&prm_dsp1 0>; 3218c2ecf20Sopenharmony_ci clocks = <&dsp1_clkctrl DRA7_DSP1_MMU0_DSP1_CLKCTRL 0>; 3228c2ecf20Sopenharmony_ci firmware-name = "dra7-dsp1-fw.xe66"; 3238c2ecf20Sopenharmony_ci }; 3248c2ecf20Sopenharmony_ci }; 325