1*440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2c8f70f80SSuman Anna%YAML 1.2 3c8f70f80SSuman Anna--- 4c8f70f80SSuman Anna$id: http://devicetree.org/schemas/remoteproc/ti,omap-remoteproc.yaml# 5c8f70f80SSuman Anna$schema: http://devicetree.org/meta-schemas/core.yaml# 6c8f70f80SSuman Anna 7c8f70f80SSuman Annatitle: OMAP4+ Remoteproc Devices 8c8f70f80SSuman Anna 9c8f70f80SSuman Annamaintainers: 10c8f70f80SSuman Anna - Suman Anna <s-anna@ti.com> 11c8f70f80SSuman Anna 12c8f70f80SSuman Annadescription: 13c8f70f80SSuman Anna The OMAP family of SoCs usually have one or more slave processor sub-systems 14c8f70f80SSuman Anna that are used to offload some of the processor-intensive tasks, or to manage 15c8f70f80SSuman Anna other hardware accelerators, for achieving various system level goals. 16c8f70f80SSuman Anna 17c8f70f80SSuman Anna The processor cores in the sub-system are usually behind an IOMMU, and may 18c8f70f80SSuman Anna contain additional sub-modules like Internal RAM and/or ROMs, L1 and/or L2 19c8f70f80SSuman Anna caches, an Interrupt Controller, a Cache Controller etc. 20c8f70f80SSuman Anna 21c8f70f80SSuman Anna The OMAP SoCs usually have a DSP processor sub-system and/or an IPU processor 22c8f70f80SSuman Anna sub-system. The DSP processor sub-system can contain any of the TI's C64x, 23c8f70f80SSuman Anna C66x or C67x family of DSP cores as the main execution unit. The IPU processor 24c8f70f80SSuman Anna sub-system usually contains either a Dual-Core Cortex-M3 or Dual-Core 25c8f70f80SSuman Anna Cortex-M4 processors. 26c8f70f80SSuman Anna 27c8f70f80SSuman Anna Each remote processor sub-system is represented as a single DT node. Each node 28c8f70f80SSuman Anna has a number of required or optional properties that enable the OS running on 29c8f70f80SSuman Anna the host processor (MPU) to perform the device management of the remote 30c8f70f80SSuman Anna processor and to communicate with the remote processor. The various properties 31c8f70f80SSuman Anna can be classified as constant or variable. The constant properties are 32c8f70f80SSuman Anna dictated by the SoC and does not change from one board to another having the 33c8f70f80SSuman Anna same SoC. Examples of constant properties include 'iommus', 'reg'. The 34c8f70f80SSuman Anna variable properties are dictated by the system integration aspects such as 35c8f70f80SSuman Anna memory on the board, or configuration used within the corresponding firmware 36c8f70f80SSuman Anna image. Examples of variable properties include 'mboxes', 'memory-region', 37c8f70f80SSuman Anna 'timers', 'watchdog-timers' etc. 38c8f70f80SSuman Anna 39c8f70f80SSuman Annaproperties: 40c8f70f80SSuman Anna compatible: 41c8f70f80SSuman Anna enum: 42c8f70f80SSuman Anna - ti,omap4-dsp 43c8f70f80SSuman Anna - ti,omap5-dsp 44c8f70f80SSuman Anna - ti,dra7-dsp 45c8f70f80SSuman Anna - ti,omap4-ipu 46c8f70f80SSuman Anna - ti,omap5-ipu 47c8f70f80SSuman Anna - ti,dra7-ipu 48c8f70f80SSuman Anna 49c8f70f80SSuman Anna iommus: 50c8f70f80SSuman Anna minItems: 1 51c8f70f80SSuman Anna maxItems: 2 52c8f70f80SSuman Anna description: | 53c8f70f80SSuman Anna phandles to OMAP IOMMU nodes, that need to be programmed 54c8f70f80SSuman Anna for this remote processor to access any external RAM memory or 55c8f70f80SSuman Anna other peripheral device address spaces. This property usually 56c8f70f80SSuman Anna has only a single phandle. Multiple phandles are used only in 57c8f70f80SSuman Anna cases where the sub-system has different ports for different 58c8f70f80SSuman Anna sub-modules within the processor sub-system (eg: DRA7 DSPs), 59c8f70f80SSuman Anna and need the same programming in both the MMUs. 60c8f70f80SSuman Anna 61c8f70f80SSuman Anna mboxes: 62c8f70f80SSuman Anna minItems: 1 63c8f70f80SSuman Anna maxItems: 2 64c8f70f80SSuman Anna description: | 65c8f70f80SSuman Anna OMAP Mailbox specifier denoting the sub-mailbox, to be used for 66c8f70f80SSuman Anna communication with the remote processor. The specifier format is 67c8f70f80SSuman Anna as per the bindings, 68ed21e4cdSSuman Anna Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml 69c8f70f80SSuman Anna This property should match with the sub-mailbox node used in 70c8f70f80SSuman Anna the firmware image. 71c8f70f80SSuman Anna 72c8f70f80SSuman Anna clocks: 730499220dSRob Herring maxItems: 1 74c8f70f80SSuman Anna description: | 75c8f70f80SSuman Anna Main functional clock for the remote processor 76c8f70f80SSuman Anna 77c8f70f80SSuman Anna resets: 780499220dSRob Herring minItems: 1 790499220dSRob Herring maxItems: 2 80c8f70f80SSuman Anna description: | 81c8f70f80SSuman Anna Reset handles for the remote processor 82c8f70f80SSuman Anna 83c8f70f80SSuman Anna firmware-name: 84c8f70f80SSuman Anna description: | 85c8f70f80SSuman Anna Default name of the firmware to load to the remote processor. 86c8f70f80SSuman Anna 87c8f70f80SSuman Anna# Optional properties: 88c8f70f80SSuman Anna# -------------------- 89c8f70f80SSuman Anna# Some of these properties are mandatory on some SoCs, and some are optional 90c8f70f80SSuman Anna# depending on the configuration of the firmware image to be executed on the 91c8f70f80SSuman Anna# remote processor. The conditions are mentioned for each property. 92c8f70f80SSuman Anna# 93c8f70f80SSuman Anna# The following are the optional properties: 94c8f70f80SSuman Anna 95c8f70f80SSuman Anna memory-region: 96c2156348SRob Herring maxItems: 1 97c8f70f80SSuman Anna description: | 98c8f70f80SSuman Anna phandle to the reserved memory node to be associated 99c8f70f80SSuman Anna with the remoteproc device. The reserved memory node 100c8f70f80SSuman Anna can be a CMA memory node, and should be defined as 101c8f70f80SSuman Anna per the bindings, 102c8f70f80SSuman Anna Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt 103c8f70f80SSuman Anna 104c8f70f80SSuman Anna reg: 105c8f70f80SSuman Anna description: | 106c8f70f80SSuman Anna Address space for any remoteproc memories present on 107c8f70f80SSuman Anna the SoC. Should contain an entry for each value in 108c8f70f80SSuman Anna 'reg-names'. These are mandatory for all DSP and IPU 109c8f70f80SSuman Anna processors that have them (OMAP4/OMAP5 DSPs do not have 110c8f70f80SSuman Anna any RAMs) 111c8f70f80SSuman Anna 112c8f70f80SSuman Anna reg-names: 113c8f70f80SSuman Anna description: | 114c8f70f80SSuman Anna Required names for each of the address spaces defined in 115c8f70f80SSuman Anna the 'reg' property. Expects the names from the following 116c8f70f80SSuman Anna list, in the specified order, each representing the corresponding 117c8f70f80SSuman Anna internal RAM memory region. 118c8f70f80SSuman Anna minItems: 1 119c8f70f80SSuman Anna items: 120c8f70f80SSuman Anna - const: l2ram 121c8f70f80SSuman Anna - const: l1pram 122c8f70f80SSuman Anna - const: l1dram 123c8f70f80SSuman Anna 124c8f70f80SSuman Anna ti,bootreg: 125c8f70f80SSuman Anna $ref: /schemas/types.yaml#/definitions/phandle-array 12639bd2b6aSRob Herring items: 12739bd2b6aSRob Herring - items: 12839bd2b6aSRob Herring - description: phandle to the System Control Configuration region 12939bd2b6aSRob Herring - description: register offset of the boot address register 13039bd2b6aSRob Herring - description: the bit shift within the register 13139bd2b6aSRob Herring description: 13239bd2b6aSRob Herring This property is required for all the DSP instances on OMAP4, OMAP5 13339bd2b6aSRob Herring and DRA7xx SoCs. 134c8f70f80SSuman Anna 135c8f70f80SSuman Anna ti,autosuspend-delay-ms: 136c8f70f80SSuman Anna description: | 137c8f70f80SSuman Anna Custom autosuspend delay for the remoteproc in milliseconds. 138c8f70f80SSuman Anna Recommended values is preferable to be in the order of couple 139c8f70f80SSuman Anna of seconds. A negative value can also be used to disable the 140c8f70f80SSuman Anna autosuspend behavior. 141c8f70f80SSuman Anna 142c8f70f80SSuman Anna ti,timers: 143c8f70f80SSuman Anna $ref: /schemas/types.yaml#/definitions/phandle-array 14439bd2b6aSRob Herring items: 14539bd2b6aSRob Herring maxItems: 1 146c8f70f80SSuman Anna description: | 147c8f70f80SSuman Anna One or more phandles to OMAP DMTimer nodes, that serve 148c8f70f80SSuman Anna as System/Tick timers for the OS running on the remote 149c8f70f80SSuman Anna processors. This will usually be a single timer if the 150c8f70f80SSuman Anna processor sub-system is running in SMP mode, or one per 151c8f70f80SSuman Anna core in the processor sub-system. This can also be used 152c8f70f80SSuman Anna to reserve specific timers to be dedicated to the 153c8f70f80SSuman Anna remote processors. 154c8f70f80SSuman Anna 155c8f70f80SSuman Anna This property is mandatory on remote processors requiring 156c8f70f80SSuman Anna external tick wakeup, and to support Power Management 157c8f70f80SSuman Anna features. The timers to be used should match with the 158c8f70f80SSuman Anna timers used in the firmware image. 159c8f70f80SSuman Anna 160c8f70f80SSuman Anna ti,watchdog-timers: 161c8f70f80SSuman Anna $ref: /schemas/types.yaml#/definitions/phandle-array 16239bd2b6aSRob Herring items: 16339bd2b6aSRob Herring maxItems: 1 164c8f70f80SSuman Anna description: | 165c8f70f80SSuman Anna One or more phandles to OMAP DMTimer nodes, used to 166c8f70f80SSuman Anna serve as Watchdog timers for the processor cores. This 167c8f70f80SSuman Anna will usually be one per executing processor core, even 168c8f70f80SSuman Anna if the processor sub-system is running a SMP OS. 169c8f70f80SSuman Anna 170c8f70f80SSuman Anna The timers to be used should match with the watchdog 171c8f70f80SSuman Anna timers used in the firmware image. 172c8f70f80SSuman Anna 173c8f70f80SSuman Annaif: 174c8f70f80SSuman Anna properties: 175c8f70f80SSuman Anna compatible: 176c8f70f80SSuman Anna enum: 177c8f70f80SSuman Anna - ti,dra7-dsp 178c8f70f80SSuman Annathen: 179c8f70f80SSuman Anna properties: 180c8f70f80SSuman Anna reg: 181c8f70f80SSuman Anna minItems: 3 182c8f70f80SSuman Anna maxItems: 3 183c8f70f80SSuman Anna required: 184c8f70f80SSuman Anna - reg 185c8f70f80SSuman Anna - reg-names 186c8f70f80SSuman Anna - ti,bootreg 187c8f70f80SSuman Anna 188c8f70f80SSuman Annaelse: 189c8f70f80SSuman Anna if: 190c8f70f80SSuman Anna properties: 191c8f70f80SSuman Anna compatible: 192c8f70f80SSuman Anna enum: 193c8f70f80SSuman Anna - ti,omap4-ipu 194c8f70f80SSuman Anna - ti,omap5-ipu 195c8f70f80SSuman Anna - ti,dra7-ipu 196c8f70f80SSuman Anna then: 197c8f70f80SSuman Anna properties: 198c8f70f80SSuman Anna reg: 199c8f70f80SSuman Anna minItems: 1 200c8f70f80SSuman Anna maxItems: 1 201c8f70f80SSuman Anna ti,bootreg: false 202c8f70f80SSuman Anna required: 203c8f70f80SSuman Anna - reg 204c8f70f80SSuman Anna - reg-names 205c8f70f80SSuman Anna 206c8f70f80SSuman Anna else: 207c8f70f80SSuman Anna properties: 208c8f70f80SSuman Anna reg: false 209c8f70f80SSuman Anna required: 210c8f70f80SSuman Anna - ti,bootreg 211c8f70f80SSuman Anna 212c8f70f80SSuman Annarequired: 213c8f70f80SSuman Anna - compatible 214c8f70f80SSuman Anna - iommus 215c8f70f80SSuman Anna - mboxes 216c8f70f80SSuman Anna - clocks 217c8f70f80SSuman Anna - resets 218c8f70f80SSuman Anna - firmware-name 219c8f70f80SSuman Anna 220c8f70f80SSuman AnnaadditionalProperties: false 221c8f70f80SSuman Anna 222c8f70f80SSuman Annaexamples: 223c8f70f80SSuman Anna - | 224c8f70f80SSuman Anna 225c8f70f80SSuman Anna //Example 1: OMAP4 DSP 226c8f70f80SSuman Anna 227c8f70f80SSuman Anna /* DSP Reserved Memory node */ 228c8f70f80SSuman Anna #include <dt-bindings/clock/omap4.h> 229c8f70f80SSuman Anna reserved-memory { 230c8f70f80SSuman Anna #address-cells = <1>; 231c8f70f80SSuman Anna #size-cells = <1>; 232c8f70f80SSuman Anna 233c8f70f80SSuman Anna dsp_memory_region: dsp-memory@98000000 { 234c8f70f80SSuman Anna compatible = "shared-dma-pool"; 235c8f70f80SSuman Anna reg = <0x98000000 0x800000>; 236c8f70f80SSuman Anna reusable; 237c8f70f80SSuman Anna }; 238c8f70f80SSuman Anna }; 239c8f70f80SSuman Anna 240c8f70f80SSuman Anna /* DSP node */ 241c8f70f80SSuman Anna ocp { 242c8f70f80SSuman Anna dsp: dsp { 243c8f70f80SSuman Anna compatible = "ti,omap4-dsp"; 244c8f70f80SSuman Anna ti,bootreg = <&scm_conf 0x304 0>; 245c8f70f80SSuman Anna iommus = <&mmu_dsp>; 246c8f70f80SSuman Anna mboxes = <&mailbox &mbox_dsp>; 247c8f70f80SSuman Anna memory-region = <&dsp_memory_region>; 248c8f70f80SSuman Anna ti,timers = <&timer5>; 249c8f70f80SSuman Anna ti,watchdog-timers = <&timer6>; 250c8f70f80SSuman Anna clocks = <&tesla_clkctrl OMAP4_DSP_CLKCTRL 0>; 251c8f70f80SSuman Anna resets = <&prm_tesla 0>, <&prm_tesla 1>; 252c8f70f80SSuman Anna firmware-name = "omap4-dsp-fw.xe64T"; 253c8f70f80SSuman Anna }; 254c8f70f80SSuman Anna }; 255c8f70f80SSuman Anna 256c8f70f80SSuman Anna - |+ 257c8f70f80SSuman Anna 258c8f70f80SSuman Anna //Example 2: OMAP5 IPU 259c8f70f80SSuman Anna 260c8f70f80SSuman Anna /* IPU Reserved Memory node */ 261c8f70f80SSuman Anna #include <dt-bindings/clock/omap5.h> 262c8f70f80SSuman Anna reserved-memory { 263c8f70f80SSuman Anna #address-cells = <2>; 264c8f70f80SSuman Anna #size-cells = <2>; 265c8f70f80SSuman Anna 266c8f70f80SSuman Anna ipu_memory_region: ipu-memory@95800000 { 267c8f70f80SSuman Anna compatible = "shared-dma-pool"; 268c8f70f80SSuman Anna reg = <0 0x95800000 0 0x3800000>; 269c8f70f80SSuman Anna reusable; 270c8f70f80SSuman Anna }; 271c8f70f80SSuman Anna }; 272c8f70f80SSuman Anna 273c8f70f80SSuman Anna /* IPU node */ 274c8f70f80SSuman Anna ocp { 275c8f70f80SSuman Anna #address-cells = <1>; 276c8f70f80SSuman Anna #size-cells = <1>; 277c8f70f80SSuman Anna 278c8f70f80SSuman Anna ipu: ipu@55020000 { 279c8f70f80SSuman Anna compatible = "ti,omap5-ipu"; 280c8f70f80SSuman Anna reg = <0x55020000 0x10000>; 281c8f70f80SSuman Anna reg-names = "l2ram"; 282c8f70f80SSuman Anna iommus = <&mmu_ipu>; 283c8f70f80SSuman Anna mboxes = <&mailbox &mbox_ipu>; 284c8f70f80SSuman Anna memory-region = <&ipu_memory_region>; 285c8f70f80SSuman Anna ti,timers = <&timer3>, <&timer4>; 286c8f70f80SSuman Anna ti,watchdog-timers = <&timer9>, <&timer11>; 287c8f70f80SSuman Anna clocks = <&ipu_clkctrl OMAP5_MMU_IPU_CLKCTRL 0>; 288c8f70f80SSuman Anna resets = <&prm_core 2>; 289c8f70f80SSuman Anna firmware-name = "omap5-ipu-fw.xem4"; 290c8f70f80SSuman Anna }; 291c8f70f80SSuman Anna }; 292c8f70f80SSuman Anna 293c8f70f80SSuman Anna - |+ 294c8f70f80SSuman Anna 295c8f70f80SSuman Anna //Example 3: DRA7xx/AM57xx DSP 296c8f70f80SSuman Anna 297c8f70f80SSuman Anna /* DSP1 Reserved Memory node */ 298c8f70f80SSuman Anna #include <dt-bindings/clock/dra7.h> 299c8f70f80SSuman Anna reserved-memory { 300c8f70f80SSuman Anna #address-cells = <2>; 301c8f70f80SSuman Anna #size-cells = <2>; 302c8f70f80SSuman Anna 303c8f70f80SSuman Anna dsp1_memory_region: dsp1-memory@99000000 { 304c8f70f80SSuman Anna compatible = "shared-dma-pool"; 305c8f70f80SSuman Anna reg = <0x0 0x99000000 0x0 0x4000000>; 306c8f70f80SSuman Anna reusable; 307c8f70f80SSuman Anna }; 308c8f70f80SSuman Anna }; 309c8f70f80SSuman Anna 310c8f70f80SSuman Anna /* DSP1 node */ 311c8f70f80SSuman Anna ocp { 312c8f70f80SSuman Anna #address-cells = <1>; 313c8f70f80SSuman Anna #size-cells = <1>; 314c8f70f80SSuman Anna 315c8f70f80SSuman Anna dsp1: dsp@40800000 { 316c8f70f80SSuman Anna compatible = "ti,dra7-dsp"; 317c8f70f80SSuman Anna reg = <0x40800000 0x48000>, 318c8f70f80SSuman Anna <0x40e00000 0x8000>, 319c8f70f80SSuman Anna <0x40f00000 0x8000>; 320c8f70f80SSuman Anna reg-names = "l2ram", "l1pram", "l1dram"; 321c8f70f80SSuman Anna ti,bootreg = <&scm_conf 0x55c 0>; 322c8f70f80SSuman Anna iommus = <&mmu0_dsp1>, <&mmu1_dsp1>; 323c8f70f80SSuman Anna mboxes = <&mailbox5 &mbox_dsp1_ipc3x>; 324c8f70f80SSuman Anna memory-region = <&dsp1_memory_region>; 325c8f70f80SSuman Anna ti,timers = <&timer5>; 326c8f70f80SSuman Anna ti,watchdog-timers = <&timer10>; 327c8f70f80SSuman Anna resets = <&prm_dsp1 0>; 328c8f70f80SSuman Anna clocks = <&dsp1_clkctrl DRA7_DSP1_MMU0_DSP1_CLKCTRL 0>; 329c8f70f80SSuman Anna firmware-name = "dra7-dsp1-fw.xe66"; 330c8f70f80SSuman Anna }; 331c8f70f80SSuman Anna }; 332