Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/remoteproc/ti,omap-remoteproc.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: OMAP4+ Remoteproc Devices
0008 
0009 maintainers:
0010   - Suman Anna <s-anna@ti.com>
0011 
0012 description:
0013   The OMAP family of SoCs usually have one or more slave processor sub-systems
0014   that are used to offload some of the processor-intensive tasks, or to manage
0015   other hardware accelerators, for achieving various system level goals.
0016 
0017   The processor cores in the sub-system are usually behind an IOMMU, and may
0018   contain additional sub-modules like Internal RAM and/or ROMs, L1 and/or L2
0019   caches, an Interrupt Controller, a Cache Controller etc.
0020 
0021   The OMAP SoCs usually have a DSP processor sub-system and/or an IPU processor
0022   sub-system. The DSP processor sub-system can contain any of the TI's C64x,
0023   C66x or C67x family of DSP cores as the main execution unit. The IPU processor
0024   sub-system usually contains either a Dual-Core Cortex-M3 or Dual-Core
0025   Cortex-M4 processors.
0026 
0027   Each remote processor sub-system is represented as a single DT node. Each node
0028   has a number of required or optional properties that enable the OS running on
0029   the host processor (MPU) to perform the device management of the remote
0030   processor and to communicate with the remote processor. The various properties
0031   can be classified as constant or variable. The constant properties are
0032   dictated by the SoC and does not change from one board to another having the
0033   same SoC. Examples of constant properties include 'iommus', 'reg'. The
0034   variable properties are dictated by the system integration aspects such as
0035   memory on the board, or configuration used within the corresponding firmware
0036   image. Examples of variable properties include 'mboxes', 'memory-region',
0037   'timers', 'watchdog-timers' etc.
0038 
0039 properties:
0040   compatible:
0041     enum:
0042       - ti,omap4-dsp
0043       - ti,omap5-dsp
0044       - ti,dra7-dsp
0045       - ti,omap4-ipu
0046       - ti,omap5-ipu
0047       - ti,dra7-ipu
0048 
0049   iommus:
0050     minItems: 1
0051     maxItems: 2
0052     description: |
0053       phandles to OMAP IOMMU nodes, that need to be programmed
0054       for this remote processor to access any external RAM memory or
0055       other peripheral device address spaces. This property usually
0056       has only a single phandle. Multiple phandles are used only in
0057       cases where the sub-system has different ports for different
0058       sub-modules within the processor sub-system (eg: DRA7 DSPs),
0059       and need the same programming in both the MMUs.
0060 
0061   mboxes:
0062     minItems: 1
0063     maxItems: 2
0064     description: |
0065       OMAP Mailbox specifier denoting the sub-mailbox, to be used for
0066       communication with the remote processor. The specifier format is
0067       as per the bindings,
0068       Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml
0069       This property should match with the sub-mailbox node used in
0070       the firmware image.
0071 
0072   clocks:
0073     maxItems: 1
0074     description: |
0075       Main functional clock for the remote processor
0076 
0077   resets:
0078     minItems: 1
0079     maxItems: 2
0080     description: |
0081       Reset handles for the remote processor
0082 
0083   firmware-name:
0084     description: |
0085       Default name of the firmware to load to the remote processor.
0086 
0087 # Optional properties:
0088 # --------------------
0089 # Some of these properties are mandatory on some SoCs, and some are optional
0090 # depending on the configuration of the firmware image to be executed on the
0091 # remote processor. The conditions are mentioned for each property.
0092 #
0093 # The following are the optional properties:
0094 
0095   memory-region:
0096     maxItems: 1
0097     description: |
0098       phandle to the reserved memory node to be associated
0099       with the remoteproc device. The reserved memory node
0100       can be a CMA memory node, and should be defined as
0101       per the bindings,
0102       Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
0103 
0104   reg:
0105     description: |
0106       Address space for any remoteproc memories present on
0107       the SoC. Should contain an entry for each value in
0108       'reg-names'. These are mandatory for all DSP and IPU
0109       processors that have them (OMAP4/OMAP5 DSPs do not have
0110       any RAMs)
0111 
0112   reg-names:
0113     description: |
0114       Required names for each of the address spaces defined in
0115       the 'reg' property. Expects the names from the following
0116       list, in the specified order, each representing the corresponding
0117       internal RAM memory region.
0118     minItems: 1
0119     items:
0120       - const: l2ram
0121       - const: l1pram
0122       - const: l1dram
0123 
0124   ti,bootreg:
0125     $ref: /schemas/types.yaml#/definitions/phandle-array
0126     items:
0127       - items:
0128           - description: phandle to the System Control Configuration region
0129           - description: register offset of the boot address register
0130           - description: the bit shift within the register
0131     description:
0132       This property is required for all the DSP instances on OMAP4, OMAP5
0133       and DRA7xx SoCs.
0134 
0135   ti,autosuspend-delay-ms:
0136     description: |
0137       Custom autosuspend delay for the remoteproc in milliseconds.
0138       Recommended values is preferable to be in the order of couple
0139       of seconds. A negative value can also be used to disable the
0140       autosuspend behavior.
0141 
0142   ti,timers:
0143     $ref: /schemas/types.yaml#/definitions/phandle-array
0144     items:
0145       maxItems: 1
0146     description: |
0147       One or more phandles to OMAP DMTimer nodes, that serve
0148       as System/Tick timers for the OS running on the remote
0149       processors. This will usually be a single timer if the
0150       processor sub-system is running in SMP mode, or one per
0151       core in the processor sub-system. This can also be used
0152       to reserve specific timers to be dedicated to the
0153       remote processors.
0154 
0155       This property is mandatory on remote processors requiring
0156       external tick wakeup, and to support Power Management
0157       features. The timers to be used should match with the
0158       timers used in the firmware image.
0159 
0160   ti,watchdog-timers:
0161     $ref: /schemas/types.yaml#/definitions/phandle-array
0162     items:
0163       maxItems: 1
0164     description: |
0165       One or more phandles to OMAP DMTimer nodes, used to
0166       serve as Watchdog timers for the processor cores. This
0167       will usually be one per executing processor core, even
0168       if the processor sub-system is running a SMP OS.
0169 
0170       The timers to be used should match with the watchdog
0171       timers used in the firmware image.
0172 
0173 if:
0174   properties:
0175     compatible:
0176       enum:
0177         - ti,dra7-dsp
0178 then:
0179   properties:
0180     reg:
0181       minItems: 3
0182       maxItems: 3
0183   required:
0184     - reg
0185     - reg-names
0186     - ti,bootreg
0187 
0188 else:
0189   if:
0190     properties:
0191       compatible:
0192         enum:
0193           - ti,omap4-ipu
0194           - ti,omap5-ipu
0195           - ti,dra7-ipu
0196   then:
0197     properties:
0198       reg:
0199         minItems: 1
0200         maxItems: 1
0201       ti,bootreg: false
0202     required:
0203       - reg
0204       - reg-names
0205 
0206   else:
0207     properties:
0208       reg: false
0209     required:
0210       - ti,bootreg
0211 
0212 required:
0213   - compatible
0214   - iommus
0215   - mboxes
0216   - clocks
0217   - resets
0218   - firmware-name
0219 
0220 additionalProperties: false
0221 
0222 examples:
0223   - |
0224 
0225     //Example 1: OMAP4 DSP
0226 
0227     /* DSP Reserved Memory node */
0228     #include <dt-bindings/clock/omap4.h>
0229     reserved-memory {
0230         #address-cells = <1>;
0231         #size-cells = <1>;
0232 
0233         dsp_memory_region: dsp-memory@98000000 {
0234             compatible = "shared-dma-pool";
0235             reg = <0x98000000 0x800000>;
0236             reusable;
0237         };
0238     };
0239 
0240     /* DSP node */
0241     ocp {
0242         dsp: dsp {
0243             compatible = "ti,omap4-dsp";
0244             ti,bootreg = <&scm_conf 0x304 0>;
0245             iommus = <&mmu_dsp>;
0246             mboxes = <&mailbox &mbox_dsp>;
0247             memory-region = <&dsp_memory_region>;
0248             ti,timers = <&timer5>;
0249             ti,watchdog-timers = <&timer6>;
0250             clocks = <&tesla_clkctrl OMAP4_DSP_CLKCTRL 0>;
0251             resets = <&prm_tesla 0>, <&prm_tesla 1>;
0252             firmware-name = "omap4-dsp-fw.xe64T";
0253         };
0254     };
0255 
0256   - |+
0257 
0258     //Example 2: OMAP5 IPU
0259 
0260     /* IPU Reserved Memory node */
0261     #include <dt-bindings/clock/omap5.h>
0262     reserved-memory {
0263         #address-cells = <2>;
0264         #size-cells = <2>;
0265 
0266         ipu_memory_region: ipu-memory@95800000 {
0267             compatible = "shared-dma-pool";
0268             reg = <0 0x95800000 0 0x3800000>;
0269             reusable;
0270         };
0271     };
0272 
0273     /* IPU node */
0274     ocp {
0275         #address-cells = <1>;
0276         #size-cells = <1>;
0277 
0278         ipu: ipu@55020000 {
0279             compatible = "ti,omap5-ipu";
0280             reg = <0x55020000 0x10000>;
0281             reg-names = "l2ram";
0282             iommus = <&mmu_ipu>;
0283             mboxes = <&mailbox &mbox_ipu>;
0284             memory-region = <&ipu_memory_region>;
0285             ti,timers = <&timer3>, <&timer4>;
0286             ti,watchdog-timers = <&timer9>, <&timer11>;
0287             clocks = <&ipu_clkctrl OMAP5_MMU_IPU_CLKCTRL 0>;
0288             resets = <&prm_core 2>;
0289             firmware-name = "omap5-ipu-fw.xem4";
0290         };
0291     };
0292 
0293   - |+
0294 
0295     //Example 3: DRA7xx/AM57xx DSP
0296 
0297     /* DSP1 Reserved Memory node */
0298     #include <dt-bindings/clock/dra7.h>
0299     reserved-memory {
0300         #address-cells = <2>;
0301         #size-cells = <2>;
0302 
0303         dsp1_memory_region: dsp1-memory@99000000 {
0304             compatible = "shared-dma-pool";
0305             reg = <0x0 0x99000000 0x0 0x4000000>;
0306             reusable;
0307         };
0308     };
0309 
0310     /* DSP1 node */
0311     ocp {
0312         #address-cells = <1>;
0313         #size-cells = <1>;
0314 
0315         dsp1: dsp@40800000 {
0316             compatible = "ti,dra7-dsp";
0317             reg = <0x40800000 0x48000>,
0318                   <0x40e00000 0x8000>,
0319                   <0x40f00000 0x8000>;
0320             reg-names = "l2ram", "l1pram", "l1dram";
0321             ti,bootreg = <&scm_conf 0x55c 0>;
0322             iommus = <&mmu0_dsp1>, <&mmu1_dsp1>;
0323             mboxes = <&mailbox5 &mbox_dsp1_ipc3x>;
0324             memory-region = <&dsp1_memory_region>;
0325             ti,timers = <&timer5>;
0326             ti,watchdog-timers = <&timer10>;
0327             resets = <&prm_dsp1 0>;
0328             clocks = <&dsp1_clkctrl DRA7_DSP1_MMU0_DSP1_CLKCTRL 0>;
0329             firmware-name = "dra7-dsp1-fw.xe66";
0330         };
0331     };