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/soc/ti/ti,pruss.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: |+
88c2ecf20Sopenharmony_ci  TI Programmable Real-Time Unit and Industrial Communication Subsystem
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cimaintainers:
118c2ecf20Sopenharmony_ci  - Suman Anna <s-anna@ti.com>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cidescription: |+
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci  The Programmable Real-Time Unit and Industrial Communication Subsystem
168c2ecf20Sopenharmony_ci  (PRU-ICSS a.k.a. PRUSS) is present on various TI SoCs such as AM335x, AM437x,
178c2ecf20Sopenharmony_ci  Keystone 66AK2G, OMAP-L138/DA850 etc. A PRUSS consists of dual 32-bit RISC
188c2ecf20Sopenharmony_ci  cores (Programmable Real-Time Units, or PRUs), shared RAM, data and
198c2ecf20Sopenharmony_ci  instruction RAMs, some internal peripheral modules to facilitate industrial
208c2ecf20Sopenharmony_ci  communication, and an interrupt controller.
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci  The programmable nature of the PRUs provide flexibility to implement custom
238c2ecf20Sopenharmony_ci  peripheral interfaces, fast real-time responses, or specialized data handling.
248c2ecf20Sopenharmony_ci  The common peripheral modules include the following,
258c2ecf20Sopenharmony_ci    - an Ethernet MII_RT module with two MII ports
268c2ecf20Sopenharmony_ci    - an MDIO port to control external Ethernet PHYs
278c2ecf20Sopenharmony_ci    - an Industrial Ethernet Peripheral (IEP) to manage/generate Industrial
288c2ecf20Sopenharmony_ci      Ethernet functions
298c2ecf20Sopenharmony_ci    - an Enhanced Capture Module (eCAP)
308c2ecf20Sopenharmony_ci    - an Industrial Ethernet Timer with 7/9 capture and 16 compare events
318c2ecf20Sopenharmony_ci    - a 16550-compatible UART to support PROFIBUS
328c2ecf20Sopenharmony_ci    - Enhanced GPIO with async capture and serial support
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci  A PRU-ICSS subsystem can have up to three shared data memories. A PRU core
358c2ecf20Sopenharmony_ci  acts on a primary Data RAM (there are usually 2 Data RAMs) at its address
368c2ecf20Sopenharmony_ci  0x0, but also has access to a secondary Data RAM (primary to the other PRU
378c2ecf20Sopenharmony_ci  core) at its address 0x2000. A shared Data RAM, if present, can be accessed
388c2ecf20Sopenharmony_ci  by both the PRU cores. The Interrupt Controller (INTC) and a CFG module are
398c2ecf20Sopenharmony_ci  common to both the PRU cores. Each PRU core also has a private instruction
408c2ecf20Sopenharmony_ci  RAM, and specific register spaces for Control and Debug functionalities.
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci  Various sub-modules within a PRU-ICSS subsystem are represented as individual
438c2ecf20Sopenharmony_ci  nodes and are defined using a parent-child hierarchy depending on their
448c2ecf20Sopenharmony_ci  integration within the IP and the SoC. These nodes are described in the
458c2ecf20Sopenharmony_ci  following sections.
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci  PRU-ICSS Node
498c2ecf20Sopenharmony_ci  ==============
508c2ecf20Sopenharmony_ci  Each PRU-ICSS instance is represented as its own node with the individual PRU
518c2ecf20Sopenharmony_ci  processor cores, the memories node, an INTC node and an MDIO node represented
528c2ecf20Sopenharmony_ci  as child nodes within this PRUSS node. This node shall be a child of the
538c2ecf20Sopenharmony_ci  corresponding interconnect bus nodes or target-module nodes.
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci  See ../../mfd/syscon.yaml for generic SysCon binding details.
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ciproperties:
598c2ecf20Sopenharmony_ci  $nodename:
608c2ecf20Sopenharmony_ci    pattern: "^(pruss|icssg)@[0-9a-f]+$"
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci  compatible:
638c2ecf20Sopenharmony_ci    enum:
648c2ecf20Sopenharmony_ci      - ti,am3356-pruss  # for AM335x SoC family
658c2ecf20Sopenharmony_ci      - ti,am4376-pruss0 # for AM437x SoC family and PRUSS unit 0
668c2ecf20Sopenharmony_ci      - ti,am4376-pruss1 # for AM437x SoC family and PRUSS unit 1
678c2ecf20Sopenharmony_ci      - ti,am5728-pruss  # for AM57xx SoC family
688c2ecf20Sopenharmony_ci      - ti,k2g-pruss     # for 66AK2G SoC family
698c2ecf20Sopenharmony_ci      - ti,am654-icssg   # for K3 AM65x SoC family
708c2ecf20Sopenharmony_ci      - ti,j721e-icssg   # for K3 J721E SoC family
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci  reg:
738c2ecf20Sopenharmony_ci    maxItems: 1
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci  "#address-cells":
768c2ecf20Sopenharmony_ci    const: 1
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci  "#size-cells":
798c2ecf20Sopenharmony_ci    const: 1
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci  ranges:
828c2ecf20Sopenharmony_ci    maxItems: 1
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci  power-domains:
858c2ecf20Sopenharmony_ci    description: |
868c2ecf20Sopenharmony_ci      This property is as per sci-pm-domain.txt.
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_cipatternProperties:
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci  memories@[a-f0-9]+$:
918c2ecf20Sopenharmony_ci    description: |
928c2ecf20Sopenharmony_ci      The various Data RAMs within a single PRU-ICSS unit are represented as a
938c2ecf20Sopenharmony_ci      single node with the name 'memories'.
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci    type: object
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci    properties:
988c2ecf20Sopenharmony_ci      reg:
998c2ecf20Sopenharmony_ci        minItems: 2 # On AM437x one of two PRUSS units don't contain Shared RAM.
1008c2ecf20Sopenharmony_ci        maxItems: 3
1018c2ecf20Sopenharmony_ci        items:
1028c2ecf20Sopenharmony_ci          - description: Address and size of the Data RAM0.
1038c2ecf20Sopenharmony_ci          - description: Address and size of the Data RAM1.
1048c2ecf20Sopenharmony_ci          - description: |
1058c2ecf20Sopenharmony_ci              Address and size of the Shared Data RAM. Note that on AM437x one
1068c2ecf20Sopenharmony_ci              of two PRUSS units don't contain Shared RAM, while the second one
1078c2ecf20Sopenharmony_ci              has it.
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci      reg-names:
1108c2ecf20Sopenharmony_ci        minItems: 2
1118c2ecf20Sopenharmony_ci        maxItems: 3
1128c2ecf20Sopenharmony_ci        items:
1138c2ecf20Sopenharmony_ci          - const: dram0
1148c2ecf20Sopenharmony_ci          - const: dram1
1158c2ecf20Sopenharmony_ci          - const: shrdram2
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci    required:
1188c2ecf20Sopenharmony_ci      - reg
1198c2ecf20Sopenharmony_ci      - reg-names
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci    additionalProperties: false
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci  cfg@[a-f0-9]+$:
1248c2ecf20Sopenharmony_ci    description: |
1258c2ecf20Sopenharmony_ci      PRU-ICSS configuration space. CFG sub-module represented as a SysCon.
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci    type: object
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ci    properties:
1308c2ecf20Sopenharmony_ci      compatible:
1318c2ecf20Sopenharmony_ci        items:
1328c2ecf20Sopenharmony_ci          - const: ti,pruss-cfg
1338c2ecf20Sopenharmony_ci          - const: syscon
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci      "#address-cells":
1368c2ecf20Sopenharmony_ci        const: 1
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_ci      "#size-cells":
1398c2ecf20Sopenharmony_ci        const: 1
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci      reg:
1428c2ecf20Sopenharmony_ci        maxItems: 1
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci      ranges:
1458c2ecf20Sopenharmony_ci        maxItems: 1
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ci      clocks:
1488c2ecf20Sopenharmony_ci        type: object
1498c2ecf20Sopenharmony_ci
1508c2ecf20Sopenharmony_ci        properties:
1518c2ecf20Sopenharmony_ci          "#address-cells":
1528c2ecf20Sopenharmony_ci            const: 1
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci          "#size-cells":
1558c2ecf20Sopenharmony_ci            const: 0
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci        patternProperties:
1588c2ecf20Sopenharmony_ci          coreclk-mux@[a-f0-9]+$:
1598c2ecf20Sopenharmony_ci            description: |
1608c2ecf20Sopenharmony_ci              This is applicable only for ICSSG (K3 SoCs). The ICSSG modules
1618c2ecf20Sopenharmony_ci              core clock can be set to one of the 2 sources: ICSSG_CORE_CLK or
1628c2ecf20Sopenharmony_ci              ICSSG_ICLK.  This node models this clock mux and should have the
1638c2ecf20Sopenharmony_ci              name "coreclk-mux".
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci            type: object
1668c2ecf20Sopenharmony_ci
1678c2ecf20Sopenharmony_ci            properties:
1688c2ecf20Sopenharmony_ci              '#clock-cells':
1698c2ecf20Sopenharmony_ci                const: 0
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci              clocks:
1728c2ecf20Sopenharmony_ci                items:
1738c2ecf20Sopenharmony_ci                  - description: ICSSG_CORE Clock
1748c2ecf20Sopenharmony_ci                  - description: ICSSG_ICLK Clock
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci              assigned-clocks:
1778c2ecf20Sopenharmony_ci                maxItems: 1
1788c2ecf20Sopenharmony_ci
1798c2ecf20Sopenharmony_ci              assigned-clock-parents:
1808c2ecf20Sopenharmony_ci                maxItems: 1
1818c2ecf20Sopenharmony_ci                description: |
1828c2ecf20Sopenharmony_ci                  Standard assigned-clocks-parents definition used for selecting
1838c2ecf20Sopenharmony_ci                  mux parent (one of the mux input).
1848c2ecf20Sopenharmony_ci
1858c2ecf20Sopenharmony_ci              reg:
1868c2ecf20Sopenharmony_ci                maxItems: 1
1878c2ecf20Sopenharmony_ci
1888c2ecf20Sopenharmony_ci            required:
1898c2ecf20Sopenharmony_ci              - clocks
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ci            additionalProperties: false
1928c2ecf20Sopenharmony_ci
1938c2ecf20Sopenharmony_ci          iepclk-mux@[a-f0-9]+$:
1948c2ecf20Sopenharmony_ci            description: |
1958c2ecf20Sopenharmony_ci              The IEP module can get its clock from 2 sources: ICSSG_IEP_CLK or
1968c2ecf20Sopenharmony_ci              CORE_CLK (OCP_CLK in older SoCs). This node models this clock
1978c2ecf20Sopenharmony_ci              mux and should have the name "iepclk-mux".
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ci            type: object
2008c2ecf20Sopenharmony_ci
2018c2ecf20Sopenharmony_ci            properties:
2028c2ecf20Sopenharmony_ci              '#clock-cells':
2038c2ecf20Sopenharmony_ci                const: 0
2048c2ecf20Sopenharmony_ci
2058c2ecf20Sopenharmony_ci              clocks:
2068c2ecf20Sopenharmony_ci                items:
2078c2ecf20Sopenharmony_ci                  - description: ICSSG_IEP Clock
2088c2ecf20Sopenharmony_ci                  - description: Core Clock (OCP Clock in older SoCs)
2098c2ecf20Sopenharmony_ci
2108c2ecf20Sopenharmony_ci              assigned-clocks:
2118c2ecf20Sopenharmony_ci                maxItems: 1
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci              assigned-clock-parents:
2148c2ecf20Sopenharmony_ci                maxItems: 1
2158c2ecf20Sopenharmony_ci                description: |
2168c2ecf20Sopenharmony_ci                  Standard assigned-clocks-parents definition used for selecting
2178c2ecf20Sopenharmony_ci                  mux parent (one of the mux input).
2188c2ecf20Sopenharmony_ci
2198c2ecf20Sopenharmony_ci              reg:
2208c2ecf20Sopenharmony_ci                maxItems: 1
2218c2ecf20Sopenharmony_ci
2228c2ecf20Sopenharmony_ci            required:
2238c2ecf20Sopenharmony_ci              - clocks
2248c2ecf20Sopenharmony_ci
2258c2ecf20Sopenharmony_ci            additionalProperties: false
2268c2ecf20Sopenharmony_ci
2278c2ecf20Sopenharmony_ci        additionalProperties: false
2288c2ecf20Sopenharmony_ci
2298c2ecf20Sopenharmony_ci  iep@[a-f0-9]+$:
2308c2ecf20Sopenharmony_ci    description: |
2318c2ecf20Sopenharmony_ci      Industrial Ethernet Peripheral to manage/generate Industrial Ethernet
2328c2ecf20Sopenharmony_ci      functions such as time stamping. Each PRUSS has either 1 IEP (on AM335x,
2338c2ecf20Sopenharmony_ci      AM437x, AM57xx & 66AK2G SoCs) or 2 IEPs (on K3 AM65x & J721E SoCs ). IEP
2348c2ecf20Sopenharmony_ci      is used for creating PTP clocks and generating PPS signals.
2358c2ecf20Sopenharmony_ci
2368c2ecf20Sopenharmony_ci    type: object
2378c2ecf20Sopenharmony_ci
2388c2ecf20Sopenharmony_ci  mii-rt@[a-f0-9]+$:
2398c2ecf20Sopenharmony_ci    description: |
2408c2ecf20Sopenharmony_ci      Real-Time Ethernet to support multiple industrial communication protocols.
2418c2ecf20Sopenharmony_ci      MII-RT sub-module represented as a SysCon.
2428c2ecf20Sopenharmony_ci
2438c2ecf20Sopenharmony_ci    type: object
2448c2ecf20Sopenharmony_ci
2458c2ecf20Sopenharmony_ci    properties:
2468c2ecf20Sopenharmony_ci      compatible:
2478c2ecf20Sopenharmony_ci        items:
2488c2ecf20Sopenharmony_ci          - const: ti,pruss-mii
2498c2ecf20Sopenharmony_ci          - const: syscon
2508c2ecf20Sopenharmony_ci
2518c2ecf20Sopenharmony_ci      reg:
2528c2ecf20Sopenharmony_ci        maxItems: 1
2538c2ecf20Sopenharmony_ci
2548c2ecf20Sopenharmony_ci    additionalProperties: false
2558c2ecf20Sopenharmony_ci
2568c2ecf20Sopenharmony_ci  mii-g-rt@[a-f0-9]+$:
2578c2ecf20Sopenharmony_ci    description: |
2588c2ecf20Sopenharmony_ci      The Real-time Media Independent Interface to support multiple industrial
2598c2ecf20Sopenharmony_ci      communication protocols (G stands for Gigabit). MII-G-RT sub-module
2608c2ecf20Sopenharmony_ci      represented as a SysCon.
2618c2ecf20Sopenharmony_ci
2628c2ecf20Sopenharmony_ci    type: object
2638c2ecf20Sopenharmony_ci
2648c2ecf20Sopenharmony_ci    properties:
2658c2ecf20Sopenharmony_ci      compatible:
2668c2ecf20Sopenharmony_ci        items:
2678c2ecf20Sopenharmony_ci          - const: ti,pruss-mii-g
2688c2ecf20Sopenharmony_ci          - const: syscon
2698c2ecf20Sopenharmony_ci
2708c2ecf20Sopenharmony_ci      reg:
2718c2ecf20Sopenharmony_ci        maxItems: 1
2728c2ecf20Sopenharmony_ci
2738c2ecf20Sopenharmony_ci    additionalProperties: false
2748c2ecf20Sopenharmony_ci
2758c2ecf20Sopenharmony_ci  interrupt-controller@[a-f0-9]+$:
2768c2ecf20Sopenharmony_ci    description: |
2778c2ecf20Sopenharmony_ci      PRUSS INTC Node. Each PRUSS has a single interrupt controller instance
2788c2ecf20Sopenharmony_ci      that is common to all the PRU cores. This should be represented as an
2798c2ecf20Sopenharmony_ci      interrupt-controller node.
2808c2ecf20Sopenharmony_ci
2818c2ecf20Sopenharmony_ci    type: object
2828c2ecf20Sopenharmony_ci
2838c2ecf20Sopenharmony_ci  mdio@[a-f0-9]+$:
2848c2ecf20Sopenharmony_ci    description: |
2858c2ecf20Sopenharmony_ci      MDIO Node. Each PRUSS has an MDIO module that can be used to control
2868c2ecf20Sopenharmony_ci      external PHYs. The MDIO module used within the PRU-ICSS is an instance of
2878c2ecf20Sopenharmony_ci      the MDIO Controller used in TI Davinci SoCs.
2888c2ecf20Sopenharmony_ci
2898c2ecf20Sopenharmony_ci    allOf:
2908c2ecf20Sopenharmony_ci      - $ref: /schemas/net/ti,davinci-mdio.yaml#
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci    type: object
2938c2ecf20Sopenharmony_ci
2948c2ecf20Sopenharmony_ci  "^(pru|rtu|txpru)@[0-9a-f]+$":
2958c2ecf20Sopenharmony_ci    description: |
2968c2ecf20Sopenharmony_ci      PRU Node. Each PRUSS has dual PRU cores, each represented as a RemoteProc
2978c2ecf20Sopenharmony_ci      device through a PRU child node each. Each node can optionally be rendered
2988c2ecf20Sopenharmony_ci      inactive by using the standard DT string property, "status". The ICSSG IP
2998c2ecf20Sopenharmony_ci      present on K3 SoCs have additional auxiliary PRU cores with slightly
3008c2ecf20Sopenharmony_ci      different IP integration.
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ci    type: object
3038c2ecf20Sopenharmony_ci
3048c2ecf20Sopenharmony_cirequired:
3058c2ecf20Sopenharmony_ci  - compatible
3068c2ecf20Sopenharmony_ci  - reg
3078c2ecf20Sopenharmony_ci  - ranges
3088c2ecf20Sopenharmony_ci
3098c2ecf20Sopenharmony_ciadditionalProperties: false
3108c2ecf20Sopenharmony_ci
3118c2ecf20Sopenharmony_ci# Due to inability of correctly verifying sub-nodes with an @address through
3128c2ecf20Sopenharmony_ci# the "required" list, the required sub-nodes below are commented out for now.
3138c2ecf20Sopenharmony_ci
3148c2ecf20Sopenharmony_ci#required:
3158c2ecf20Sopenharmony_ci# - memories
3168c2ecf20Sopenharmony_ci# - interrupt-controller
3178c2ecf20Sopenharmony_ci# - pru
3188c2ecf20Sopenharmony_ci
3198c2ecf20Sopenharmony_ciif:
3208c2ecf20Sopenharmony_ci  properties:
3218c2ecf20Sopenharmony_ci    compatible:
3228c2ecf20Sopenharmony_ci      contains:
3238c2ecf20Sopenharmony_ci        enum:
3248c2ecf20Sopenharmony_ci          - ti,k2g-pruss
3258c2ecf20Sopenharmony_ci          - ti,am654-icssg
3268c2ecf20Sopenharmony_ci          - ti,j721e-icssg
3278c2ecf20Sopenharmony_cithen:
3288c2ecf20Sopenharmony_ci  required:
3298c2ecf20Sopenharmony_ci    - power-domains
3308c2ecf20Sopenharmony_ci
3318c2ecf20Sopenharmony_ciexamples:
3328c2ecf20Sopenharmony_ci  - |
3338c2ecf20Sopenharmony_ci
3348c2ecf20Sopenharmony_ci    /* Example 1 AM33xx PRU-ICSS */
3358c2ecf20Sopenharmony_ci    pruss: pruss@0 {
3368c2ecf20Sopenharmony_ci        compatible = "ti,am3356-pruss";
3378c2ecf20Sopenharmony_ci        reg = <0x0 0x80000>;
3388c2ecf20Sopenharmony_ci        #address-cells = <1>;
3398c2ecf20Sopenharmony_ci        #size-cells = <1>;
3408c2ecf20Sopenharmony_ci        ranges;
3418c2ecf20Sopenharmony_ci
3428c2ecf20Sopenharmony_ci        pruss_mem: memories@0 {
3438c2ecf20Sopenharmony_ci            reg = <0x0 0x2000>,
3448c2ecf20Sopenharmony_ci                  <0x2000 0x2000>,
3458c2ecf20Sopenharmony_ci                  <0x10000 0x3000>;
3468c2ecf20Sopenharmony_ci            reg-names = "dram0", "dram1", "shrdram2";
3478c2ecf20Sopenharmony_ci        };
3488c2ecf20Sopenharmony_ci
3498c2ecf20Sopenharmony_ci        pruss_cfg: cfg@26000 {
3508c2ecf20Sopenharmony_ci            compatible = "ti,pruss-cfg", "syscon";
3518c2ecf20Sopenharmony_ci            #address-cells = <1>;
3528c2ecf20Sopenharmony_ci            #size-cells = <1>;
3538c2ecf20Sopenharmony_ci            reg = <0x26000 0x2000>;
3548c2ecf20Sopenharmony_ci            ranges = <0x00 0x26000 0x2000>;
3558c2ecf20Sopenharmony_ci
3568c2ecf20Sopenharmony_ci            clocks {
3578c2ecf20Sopenharmony_ci                #address-cells = <1>;
3588c2ecf20Sopenharmony_ci                #size-cells = <0>;
3598c2ecf20Sopenharmony_ci
3608c2ecf20Sopenharmony_ci                pruss_iepclk_mux: iepclk-mux@30 {
3618c2ecf20Sopenharmony_ci                    reg = <0x30>;
3628c2ecf20Sopenharmony_ci                    #clock-cells = <0>;
3638c2ecf20Sopenharmony_ci                    clocks = <&l3_gclk>,        /* icss_iep */
3648c2ecf20Sopenharmony_ci                             <&pruss_ocp_gclk>; /* icss_ocp */
3658c2ecf20Sopenharmony_ci                };
3668c2ecf20Sopenharmony_ci            };
3678c2ecf20Sopenharmony_ci        };
3688c2ecf20Sopenharmony_ci
3698c2ecf20Sopenharmony_ci        pruss_mii_rt: mii-rt@32000 {
3708c2ecf20Sopenharmony_ci            compatible = "ti,pruss-mii", "syscon";
3718c2ecf20Sopenharmony_ci            reg = <0x32000 0x58>;
3728c2ecf20Sopenharmony_ci        };
3738c2ecf20Sopenharmony_ci
3748c2ecf20Sopenharmony_ci        pruss_mdio: mdio@32400 {
3758c2ecf20Sopenharmony_ci            compatible = "ti,davinci_mdio";
3768c2ecf20Sopenharmony_ci            reg = <0x32400 0x90>;
3778c2ecf20Sopenharmony_ci            clocks = <&dpll_core_m4_ck>;
3788c2ecf20Sopenharmony_ci            clock-names = "fck";
3798c2ecf20Sopenharmony_ci            bus_freq = <1000000>;
3808c2ecf20Sopenharmony_ci            #address-cells = <1>;
3818c2ecf20Sopenharmony_ci            #size-cells = <0>;
3828c2ecf20Sopenharmony_ci        };
3838c2ecf20Sopenharmony_ci    };
3848c2ecf20Sopenharmony_ci
3858c2ecf20Sopenharmony_ci  - |
3868c2ecf20Sopenharmony_ci
3878c2ecf20Sopenharmony_ci    /* Example 2 AM43xx PRU-ICSS with PRUSS1 node */
3888c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
3898c2ecf20Sopenharmony_ci    pruss1: pruss@0 {
3908c2ecf20Sopenharmony_ci        compatible = "ti,am4376-pruss1";
3918c2ecf20Sopenharmony_ci        reg = <0x0 0x40000>;
3928c2ecf20Sopenharmony_ci        #address-cells = <1>;
3938c2ecf20Sopenharmony_ci        #size-cells = <1>;
3948c2ecf20Sopenharmony_ci        ranges;
3958c2ecf20Sopenharmony_ci
3968c2ecf20Sopenharmony_ci        pruss1_mem: memories@0 {
3978c2ecf20Sopenharmony_ci            reg = <0x0 0x2000>,
3988c2ecf20Sopenharmony_ci                  <0x2000 0x2000>,
3998c2ecf20Sopenharmony_ci                  <0x10000 0x8000>;
4008c2ecf20Sopenharmony_ci            reg-names = "dram0", "dram1", "shrdram2";
4018c2ecf20Sopenharmony_ci        };
4028c2ecf20Sopenharmony_ci
4038c2ecf20Sopenharmony_ci        pruss1_cfg: cfg@26000 {
4048c2ecf20Sopenharmony_ci            compatible = "ti,pruss-cfg", "syscon";
4058c2ecf20Sopenharmony_ci            #address-cells = <1>;
4068c2ecf20Sopenharmony_ci            #size-cells = <1>;
4078c2ecf20Sopenharmony_ci            reg = <0x26000 0x2000>;
4088c2ecf20Sopenharmony_ci            ranges = <0x00 0x26000 0x2000>;
4098c2ecf20Sopenharmony_ci
4108c2ecf20Sopenharmony_ci            clocks {
4118c2ecf20Sopenharmony_ci                #address-cells = <1>;
4128c2ecf20Sopenharmony_ci                #size-cells = <0>;
4138c2ecf20Sopenharmony_ci
4148c2ecf20Sopenharmony_ci                pruss1_iepclk_mux: iepclk-mux@30 {
4158c2ecf20Sopenharmony_ci                    reg = <0x30>;
4168c2ecf20Sopenharmony_ci                    #clock-cells = <0>;
4178c2ecf20Sopenharmony_ci                    clocks = <&sysclk_div>,     /* icss_iep */
4188c2ecf20Sopenharmony_ci                             <&pruss_ocp_gclk>; /* icss_ocp */
4198c2ecf20Sopenharmony_ci                };
4208c2ecf20Sopenharmony_ci            };
4218c2ecf20Sopenharmony_ci        };
4228c2ecf20Sopenharmony_ci
4238c2ecf20Sopenharmony_ci        pruss1_mii_rt: mii-rt@32000 {
4248c2ecf20Sopenharmony_ci            compatible = "ti,pruss-mii", "syscon";
4258c2ecf20Sopenharmony_ci            reg = <0x32000 0x58>;
4268c2ecf20Sopenharmony_ci        };
4278c2ecf20Sopenharmony_ci
4288c2ecf20Sopenharmony_ci        pruss1_mdio: mdio@32400 {
4298c2ecf20Sopenharmony_ci            compatible = "ti,davinci_mdio";
4308c2ecf20Sopenharmony_ci            reg = <0x32400 0x90>;
4318c2ecf20Sopenharmony_ci            clocks = <&dpll_core_m4_ck>;
4328c2ecf20Sopenharmony_ci            clock-names = "fck";
4338c2ecf20Sopenharmony_ci            bus_freq = <1000000>;
4348c2ecf20Sopenharmony_ci            #address-cells = <1>;
4358c2ecf20Sopenharmony_ci            #size-cells = <0>;
4368c2ecf20Sopenharmony_ci        };
4378c2ecf20Sopenharmony_ci    };
4388c2ecf20Sopenharmony_ci
4398c2ecf20Sopenharmony_ci...
440