1146eee03SLeonard Crestez# SPDX-License-Identifier: GPL-2.0
2146eee03SLeonard Crestez%YAML 1.2
3146eee03SLeonard Crestez---
4146eee03SLeonard Crestez$id: http://devicetree.org/schemas/interconnect/fsl,imx8m-noc.yaml#
5146eee03SLeonard Crestez$schema: http://devicetree.org/meta-schemas/core.yaml#
6146eee03SLeonard Crestez
7146eee03SLeonard Cresteztitle: Generic i.MX bus frequency device
8146eee03SLeonard Crestez
9146eee03SLeonard Crestezmaintainers:
1012ef2508SKrzysztof Kozlowski  - Peng Fan <peng.fan@nxp.com>
11146eee03SLeonard Crestez
12146eee03SLeonard Crestezdescription: |
13146eee03SLeonard Crestez  The i.MX SoC family has multiple buses for which clock frequency (and
14146eee03SLeonard Crestez  sometimes voltage) can be adjusted.
15146eee03SLeonard Crestez
16146eee03SLeonard Crestez  Some of those buses expose register areas mentioned in the memory maps as GPV
17146eee03SLeonard Crestez  ("Global Programmers View") but not all. Access to this area might be denied
18146eee03SLeonard Crestez  for normal (non-secure) world.
19146eee03SLeonard Crestez
20146eee03SLeonard Crestez  The buses are based on externally licensed IPs such as ARM NIC-301 and
21146eee03SLeonard Crestez  Arteris FlexNOC but DT bindings are specific to the integration of these bus
22146eee03SLeonard Crestez  interconnect IPs into imx SOCs.
23146eee03SLeonard Crestez
24146eee03SLeonard Crestezproperties:
25146eee03SLeonard Crestez  compatible:
26146eee03SLeonard Crestez    oneOf:
27146eee03SLeonard Crestez      - items:
28146eee03SLeonard Crestez          - enum:
29146eee03SLeonard Crestez              - fsl,imx8mm-nic
3074011550SPeng Fan              - fsl,imx8mn-nic
3174011550SPeng Fan              - fsl,imx8mp-nic
32146eee03SLeonard Crestez              - fsl,imx8mq-nic
33146eee03SLeonard Crestez          - const: fsl,imx8m-nic
34146eee03SLeonard Crestez      - items:
35146eee03SLeonard Crestez          - enum:
36146eee03SLeonard Crestez              - fsl,imx8mm-noc
3774011550SPeng Fan              - fsl,imx8mn-noc
3874011550SPeng Fan              - fsl,imx8mp-noc
39146eee03SLeonard Crestez              - fsl,imx8mq-noc
40146eee03SLeonard Crestez          - const: fsl,imx8m-noc
41146eee03SLeonard Crestez      - const: fsl,imx8m-nic
42146eee03SLeonard Crestez
43146eee03SLeonard Crestez  reg:
44146eee03SLeonard Crestez    maxItems: 1
45146eee03SLeonard Crestez
46146eee03SLeonard Crestez  clocks:
47146eee03SLeonard Crestez    maxItems: 1
48146eee03SLeonard Crestez
49146eee03SLeonard Crestez  operating-points-v2: true
50c8973737SKrzysztof Kozlowski  opp-table:
51c8973737SKrzysztof Kozlowski    type: object
52146eee03SLeonard Crestez
53146eee03SLeonard Crestez  fsl,ddrc:
54*4396f5fcSKrzysztof Kozlowski    $ref: /schemas/types.yaml#/definitions/phandle
55146eee03SLeonard Crestez    description:
56146eee03SLeonard Crestez      Phandle to DDR Controller.
57146eee03SLeonard Crestez
58146eee03SLeonard Crestez  '#interconnect-cells':
59146eee03SLeonard Crestez    description:
60146eee03SLeonard Crestez      If specified then also act as an interconnect provider. Should only be
61146eee03SLeonard Crestez      set once per soc on the main noc.
62146eee03SLeonard Crestez    const: 1
63146eee03SLeonard Crestez
64146eee03SLeonard Crestezrequired:
65146eee03SLeonard Crestez  - compatible
66146eee03SLeonard Crestez  - clocks
67146eee03SLeonard Crestez
68146eee03SLeonard CrestezadditionalProperties: false
69146eee03SLeonard Crestez
70146eee03SLeonard Crestezexamples:
71146eee03SLeonard Crestez  - |
72146eee03SLeonard Crestez    #include <dt-bindings/clock/imx8mm-clock.h>
73146eee03SLeonard Crestez    #include <dt-bindings/interconnect/imx8mm.h>
74146eee03SLeonard Crestez    #include <dt-bindings/interrupt-controller/arm-gic.h>
75146eee03SLeonard Crestez
76146eee03SLeonard Crestez    noc: interconnect@32700000 {
77146eee03SLeonard Crestez        compatible = "fsl,imx8mm-noc", "fsl,imx8m-noc";
78146eee03SLeonard Crestez        reg = <0x32700000 0x100000>;
79146eee03SLeonard Crestez        clocks = <&clk IMX8MM_CLK_NOC>;
80146eee03SLeonard Crestez        #interconnect-cells = <1>;
81146eee03SLeonard Crestez        fsl,ddrc = <&ddrc>;
82146eee03SLeonard Crestez
83146eee03SLeonard Crestez        operating-points-v2 = <&noc_opp_table>;
84146eee03SLeonard Crestez        noc_opp_table: opp-table {
85146eee03SLeonard Crestez            compatible = "operating-points-v2";
86146eee03SLeonard Crestez
8729fc7695SRob Herring            opp-133333333 {
88146eee03SLeonard Crestez                opp-hz = /bits/ 64 <133333333>;
89146eee03SLeonard Crestez            };
9029fc7695SRob Herring            opp-800000000 {
91146eee03SLeonard Crestez                opp-hz = /bits/ 64 <800000000>;
92146eee03SLeonard Crestez            };
93146eee03SLeonard Crestez        };
94146eee03SLeonard Crestez    };
95146eee03SLeonard Crestez
96146eee03SLeonard Crestez    ddrc: memory-controller@3d400000 {
97146eee03SLeonard Crestez        compatible = "fsl,imx8mm-ddrc", "fsl,imx8m-ddrc";
98146eee03SLeonard Crestez        reg = <0x3d400000 0x400000>;
99146eee03SLeonard Crestez        clock-names = "core", "pll", "alt", "apb";
100146eee03SLeonard Crestez        clocks = <&clk IMX8MM_CLK_DRAM_CORE>,
101146eee03SLeonard Crestez                 <&clk IMX8MM_DRAM_PLL>,
102146eee03SLeonard Crestez                 <&clk IMX8MM_CLK_DRAM_ALT>,
103146eee03SLeonard Crestez                 <&clk IMX8MM_CLK_DRAM_APB>;
104146eee03SLeonard Crestez    };
105