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,omap-remoteproc.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: OMAP4+ Remoteproc Devices 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Suman Anna <s-anna@ti.com> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: 1362306a36Sopenharmony_ci The OMAP family of SoCs usually have one or more slave processor sub-systems 1462306a36Sopenharmony_ci that are used to offload some of the processor-intensive tasks, or to manage 1562306a36Sopenharmony_ci other hardware accelerators, for achieving various system level goals. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci The processor cores in the sub-system are usually behind an IOMMU, and may 1862306a36Sopenharmony_ci contain additional sub-modules like Internal RAM and/or ROMs, L1 and/or L2 1962306a36Sopenharmony_ci caches, an Interrupt Controller, a Cache Controller etc. 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci The OMAP SoCs usually have a DSP processor sub-system and/or an IPU processor 2262306a36Sopenharmony_ci sub-system. The DSP processor sub-system can contain any of the TI's C64x, 2362306a36Sopenharmony_ci C66x or C67x family of DSP cores as the main execution unit. The IPU processor 2462306a36Sopenharmony_ci sub-system usually contains either a Dual-Core Cortex-M3 or Dual-Core 2562306a36Sopenharmony_ci Cortex-M4 processors. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci Each remote processor sub-system is represented as a single DT node. Each node 2862306a36Sopenharmony_ci has a number of required or optional properties that enable the OS running on 2962306a36Sopenharmony_ci the host processor (MPU) to perform the device management of the remote 3062306a36Sopenharmony_ci processor and to communicate with the remote processor. The various properties 3162306a36Sopenharmony_ci can be classified as constant or variable. The constant properties are 3262306a36Sopenharmony_ci dictated by the SoC and does not change from one board to another having the 3362306a36Sopenharmony_ci same SoC. Examples of constant properties include 'iommus', 'reg'. The 3462306a36Sopenharmony_ci variable properties are dictated by the system integration aspects such as 3562306a36Sopenharmony_ci memory on the board, or configuration used within the corresponding firmware 3662306a36Sopenharmony_ci image. Examples of variable properties include 'mboxes', 'memory-region', 3762306a36Sopenharmony_ci 'timers', 'watchdog-timers' etc. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciproperties: 4062306a36Sopenharmony_ci compatible: 4162306a36Sopenharmony_ci enum: 4262306a36Sopenharmony_ci - ti,omap4-dsp 4362306a36Sopenharmony_ci - ti,omap5-dsp 4462306a36Sopenharmony_ci - ti,dra7-dsp 4562306a36Sopenharmony_ci - ti,omap4-ipu 4662306a36Sopenharmony_ci - ti,omap5-ipu 4762306a36Sopenharmony_ci - ti,dra7-ipu 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci iommus: 5062306a36Sopenharmony_ci minItems: 1 5162306a36Sopenharmony_ci maxItems: 2 5262306a36Sopenharmony_ci description: | 5362306a36Sopenharmony_ci phandles to OMAP IOMMU nodes, that need to be programmed 5462306a36Sopenharmony_ci for this remote processor to access any external RAM memory or 5562306a36Sopenharmony_ci other peripheral device address spaces. This property usually 5662306a36Sopenharmony_ci has only a single phandle. Multiple phandles are used only in 5762306a36Sopenharmony_ci cases where the sub-system has different ports for different 5862306a36Sopenharmony_ci sub-modules within the processor sub-system (eg: DRA7 DSPs), 5962306a36Sopenharmony_ci and need the same programming in both the MMUs. 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci mboxes: 6262306a36Sopenharmony_ci minItems: 1 6362306a36Sopenharmony_ci maxItems: 2 6462306a36Sopenharmony_ci description: | 6562306a36Sopenharmony_ci OMAP Mailbox specifier denoting the sub-mailbox, to be used for 6662306a36Sopenharmony_ci communication with the remote processor. The specifier format is 6762306a36Sopenharmony_ci as per the bindings, 6862306a36Sopenharmony_ci Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml 6962306a36Sopenharmony_ci This property should match with the sub-mailbox node used in 7062306a36Sopenharmony_ci the firmware image. 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci clocks: 7362306a36Sopenharmony_ci maxItems: 1 7462306a36Sopenharmony_ci description: | 7562306a36Sopenharmony_ci Main functional clock for the remote processor 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci resets: 7862306a36Sopenharmony_ci minItems: 1 7962306a36Sopenharmony_ci maxItems: 2 8062306a36Sopenharmony_ci description: | 8162306a36Sopenharmony_ci Reset handles for the remote processor 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci firmware-name: 8462306a36Sopenharmony_ci description: | 8562306a36Sopenharmony_ci Default name of the firmware to load to the remote processor. 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci# Optional properties: 8862306a36Sopenharmony_ci# -------------------- 8962306a36Sopenharmony_ci# Some of these properties are mandatory on some SoCs, and some are optional 9062306a36Sopenharmony_ci# depending on the configuration of the firmware image to be executed on the 9162306a36Sopenharmony_ci# remote processor. The conditions are mentioned for each property. 9262306a36Sopenharmony_ci# 9362306a36Sopenharmony_ci# The following are the optional properties: 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci memory-region: 9662306a36Sopenharmony_ci maxItems: 1 9762306a36Sopenharmony_ci description: | 9862306a36Sopenharmony_ci phandle to the reserved memory node to be associated 9962306a36Sopenharmony_ci with the remoteproc device. The reserved memory node 10062306a36Sopenharmony_ci can be a CMA memory node, and should be defined as 10162306a36Sopenharmony_ci per the bindings, 10262306a36Sopenharmony_ci Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci reg: 10562306a36Sopenharmony_ci description: | 10662306a36Sopenharmony_ci Address space for any remoteproc memories present on 10762306a36Sopenharmony_ci the SoC. Should contain an entry for each value in 10862306a36Sopenharmony_ci 'reg-names'. These are mandatory for all DSP and IPU 10962306a36Sopenharmony_ci processors that have them (OMAP4/OMAP5 DSPs do not have 11062306a36Sopenharmony_ci any RAMs) 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci reg-names: 11362306a36Sopenharmony_ci description: | 11462306a36Sopenharmony_ci Required names for each of the address spaces defined in 11562306a36Sopenharmony_ci the 'reg' property. Expects the names from the following 11662306a36Sopenharmony_ci list, in the specified order, each representing the corresponding 11762306a36Sopenharmony_ci internal RAM memory region. 11862306a36Sopenharmony_ci minItems: 1 11962306a36Sopenharmony_ci items: 12062306a36Sopenharmony_ci - const: l2ram 12162306a36Sopenharmony_ci - const: l1pram 12262306a36Sopenharmony_ci - const: l1dram 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci ti,bootreg: 12562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 12662306a36Sopenharmony_ci items: 12762306a36Sopenharmony_ci - items: 12862306a36Sopenharmony_ci - description: phandle to the System Control Configuration region 12962306a36Sopenharmony_ci - description: register offset of the boot address register 13062306a36Sopenharmony_ci - description: the bit shift within the register 13162306a36Sopenharmony_ci description: 13262306a36Sopenharmony_ci This property is required for all the DSP instances on OMAP4, OMAP5 13362306a36Sopenharmony_ci and DRA7xx SoCs. 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci ti,autosuspend-delay-ms: 13662306a36Sopenharmony_ci description: | 13762306a36Sopenharmony_ci Custom autosuspend delay for the remoteproc in milliseconds. 13862306a36Sopenharmony_ci Recommended values is preferable to be in the order of couple 13962306a36Sopenharmony_ci of seconds. A negative value can also be used to disable the 14062306a36Sopenharmony_ci autosuspend behavior. 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci ti,timers: 14362306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 14462306a36Sopenharmony_ci items: 14562306a36Sopenharmony_ci maxItems: 1 14662306a36Sopenharmony_ci description: | 14762306a36Sopenharmony_ci One or more phandles to OMAP DMTimer nodes, that serve 14862306a36Sopenharmony_ci as System/Tick timers for the OS running on the remote 14962306a36Sopenharmony_ci processors. This will usually be a single timer if the 15062306a36Sopenharmony_ci processor sub-system is running in SMP mode, or one per 15162306a36Sopenharmony_ci core in the processor sub-system. This can also be used 15262306a36Sopenharmony_ci to reserve specific timers to be dedicated to the 15362306a36Sopenharmony_ci remote processors. 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci This property is mandatory on remote processors requiring 15662306a36Sopenharmony_ci external tick wakeup, and to support Power Management 15762306a36Sopenharmony_ci features. The timers to be used should match with the 15862306a36Sopenharmony_ci timers used in the firmware image. 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci ti,watchdog-timers: 16162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 16262306a36Sopenharmony_ci items: 16362306a36Sopenharmony_ci maxItems: 1 16462306a36Sopenharmony_ci description: | 16562306a36Sopenharmony_ci One or more phandles to OMAP DMTimer nodes, used to 16662306a36Sopenharmony_ci serve as Watchdog timers for the processor cores. This 16762306a36Sopenharmony_ci will usually be one per executing processor core, even 16862306a36Sopenharmony_ci if the processor sub-system is running a SMP OS. 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci The timers to be used should match with the watchdog 17162306a36Sopenharmony_ci timers used in the firmware image. 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ciif: 17462306a36Sopenharmony_ci properties: 17562306a36Sopenharmony_ci compatible: 17662306a36Sopenharmony_ci enum: 17762306a36Sopenharmony_ci - ti,dra7-dsp 17862306a36Sopenharmony_cithen: 17962306a36Sopenharmony_ci properties: 18062306a36Sopenharmony_ci reg: 18162306a36Sopenharmony_ci minItems: 3 18262306a36Sopenharmony_ci maxItems: 3 18362306a36Sopenharmony_ci required: 18462306a36Sopenharmony_ci - reg 18562306a36Sopenharmony_ci - reg-names 18662306a36Sopenharmony_ci - ti,bootreg 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_cielse: 18962306a36Sopenharmony_ci if: 19062306a36Sopenharmony_ci properties: 19162306a36Sopenharmony_ci compatible: 19262306a36Sopenharmony_ci enum: 19362306a36Sopenharmony_ci - ti,omap4-ipu 19462306a36Sopenharmony_ci - ti,omap5-ipu 19562306a36Sopenharmony_ci - ti,dra7-ipu 19662306a36Sopenharmony_ci then: 19762306a36Sopenharmony_ci properties: 19862306a36Sopenharmony_ci reg: 19962306a36Sopenharmony_ci minItems: 1 20062306a36Sopenharmony_ci maxItems: 1 20162306a36Sopenharmony_ci ti,bootreg: false 20262306a36Sopenharmony_ci required: 20362306a36Sopenharmony_ci - reg 20462306a36Sopenharmony_ci - reg-names 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci else: 20762306a36Sopenharmony_ci properties: 20862306a36Sopenharmony_ci reg: false 20962306a36Sopenharmony_ci required: 21062306a36Sopenharmony_ci - ti,bootreg 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_cirequired: 21362306a36Sopenharmony_ci - compatible 21462306a36Sopenharmony_ci - iommus 21562306a36Sopenharmony_ci - mboxes 21662306a36Sopenharmony_ci - clocks 21762306a36Sopenharmony_ci - resets 21862306a36Sopenharmony_ci - firmware-name 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ciadditionalProperties: false 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ciexamples: 22362306a36Sopenharmony_ci - | 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci //Example 1: OMAP4 DSP 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci /* DSP Reserved Memory node */ 22862306a36Sopenharmony_ci #include <dt-bindings/clock/omap4.h> 22962306a36Sopenharmony_ci reserved-memory { 23062306a36Sopenharmony_ci #address-cells = <1>; 23162306a36Sopenharmony_ci #size-cells = <1>; 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci dsp_memory_region: dsp-memory@98000000 { 23462306a36Sopenharmony_ci compatible = "shared-dma-pool"; 23562306a36Sopenharmony_ci reg = <0x98000000 0x800000>; 23662306a36Sopenharmony_ci reusable; 23762306a36Sopenharmony_ci }; 23862306a36Sopenharmony_ci }; 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci /* DSP node */ 24162306a36Sopenharmony_ci ocp { 24262306a36Sopenharmony_ci dsp: dsp { 24362306a36Sopenharmony_ci compatible = "ti,omap4-dsp"; 24462306a36Sopenharmony_ci ti,bootreg = <&scm_conf 0x304 0>; 24562306a36Sopenharmony_ci iommus = <&mmu_dsp>; 24662306a36Sopenharmony_ci mboxes = <&mailbox &mbox_dsp>; 24762306a36Sopenharmony_ci memory-region = <&dsp_memory_region>; 24862306a36Sopenharmony_ci ti,timers = <&timer5>; 24962306a36Sopenharmony_ci ti,watchdog-timers = <&timer6>; 25062306a36Sopenharmony_ci clocks = <&tesla_clkctrl OMAP4_DSP_CLKCTRL 0>; 25162306a36Sopenharmony_ci resets = <&prm_tesla 0>, <&prm_tesla 1>; 25262306a36Sopenharmony_ci firmware-name = "omap4-dsp-fw.xe64T"; 25362306a36Sopenharmony_ci }; 25462306a36Sopenharmony_ci }; 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci - |+ 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci //Example 2: OMAP5 IPU 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci /* IPU Reserved Memory node */ 26162306a36Sopenharmony_ci #include <dt-bindings/clock/omap5.h> 26262306a36Sopenharmony_ci reserved-memory { 26362306a36Sopenharmony_ci #address-cells = <2>; 26462306a36Sopenharmony_ci #size-cells = <2>; 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci ipu_memory_region: ipu-memory@95800000 { 26762306a36Sopenharmony_ci compatible = "shared-dma-pool"; 26862306a36Sopenharmony_ci reg = <0 0x95800000 0 0x3800000>; 26962306a36Sopenharmony_ci reusable; 27062306a36Sopenharmony_ci }; 27162306a36Sopenharmony_ci }; 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci /* IPU node */ 27462306a36Sopenharmony_ci ocp { 27562306a36Sopenharmony_ci #address-cells = <1>; 27662306a36Sopenharmony_ci #size-cells = <1>; 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci ipu: ipu@55020000 { 27962306a36Sopenharmony_ci compatible = "ti,omap5-ipu"; 28062306a36Sopenharmony_ci reg = <0x55020000 0x10000>; 28162306a36Sopenharmony_ci reg-names = "l2ram"; 28262306a36Sopenharmony_ci iommus = <&mmu_ipu>; 28362306a36Sopenharmony_ci mboxes = <&mailbox &mbox_ipu>; 28462306a36Sopenharmony_ci memory-region = <&ipu_memory_region>; 28562306a36Sopenharmony_ci ti,timers = <&timer3>, <&timer4>; 28662306a36Sopenharmony_ci ti,watchdog-timers = <&timer9>, <&timer11>; 28762306a36Sopenharmony_ci clocks = <&ipu_clkctrl OMAP5_MMU_IPU_CLKCTRL 0>; 28862306a36Sopenharmony_ci resets = <&prm_core 2>; 28962306a36Sopenharmony_ci firmware-name = "omap5-ipu-fw.xem4"; 29062306a36Sopenharmony_ci }; 29162306a36Sopenharmony_ci }; 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci - |+ 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ci //Example 3: DRA7xx/AM57xx DSP 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci /* DSP1 Reserved Memory node */ 29862306a36Sopenharmony_ci #include <dt-bindings/clock/dra7.h> 29962306a36Sopenharmony_ci reserved-memory { 30062306a36Sopenharmony_ci #address-cells = <2>; 30162306a36Sopenharmony_ci #size-cells = <2>; 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci dsp1_memory_region: dsp1-memory@99000000 { 30462306a36Sopenharmony_ci compatible = "shared-dma-pool"; 30562306a36Sopenharmony_ci reg = <0x0 0x99000000 0x0 0x4000000>; 30662306a36Sopenharmony_ci reusable; 30762306a36Sopenharmony_ci }; 30862306a36Sopenharmony_ci }; 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci /* DSP1 node */ 31162306a36Sopenharmony_ci ocp { 31262306a36Sopenharmony_ci #address-cells = <1>; 31362306a36Sopenharmony_ci #size-cells = <1>; 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci dsp1: dsp@40800000 { 31662306a36Sopenharmony_ci compatible = "ti,dra7-dsp"; 31762306a36Sopenharmony_ci reg = <0x40800000 0x48000>, 31862306a36Sopenharmony_ci <0x40e00000 0x8000>, 31962306a36Sopenharmony_ci <0x40f00000 0x8000>; 32062306a36Sopenharmony_ci reg-names = "l2ram", "l1pram", "l1dram"; 32162306a36Sopenharmony_ci ti,bootreg = <&scm_conf 0x55c 0>; 32262306a36Sopenharmony_ci iommus = <&mmu0_dsp1>, <&mmu1_dsp1>; 32362306a36Sopenharmony_ci mboxes = <&mailbox5 &mbox_dsp1_ipc3x>; 32462306a36Sopenharmony_ci memory-region = <&dsp1_memory_region>; 32562306a36Sopenharmony_ci ti,timers = <&timer5>; 32662306a36Sopenharmony_ci ti,watchdog-timers = <&timer10>; 32762306a36Sopenharmony_ci resets = <&prm_dsp1 0>; 32862306a36Sopenharmony_ci clocks = <&dsp1_clkctrl DRA7_DSP1_MMU0_DSP1_CLKCTRL 0>; 32962306a36Sopenharmony_ci firmware-name = "dra7-dsp1-fw.xe66"; 33062306a36Sopenharmony_ci }; 33162306a36Sopenharmony_ci }; 332