xref: /freebsd-src/sys/contrib/device-tree/Bindings/interconnect/mediatek,cci.yaml (revision 7ef62cebc2f965b0f640263e179276928885e33d)
1b97ee269SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2b97ee269SEmmanuel Vadot%YAML 1.2
3b97ee269SEmmanuel Vadot---
4b97ee269SEmmanuel Vadot$id: http://devicetree.org/schemas/interconnect/mediatek,cci.yaml#
5b97ee269SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6b97ee269SEmmanuel Vadot
7b97ee269SEmmanuel Vadottitle: MediaTek Cache Coherent Interconnect (CCI) frequency and voltage scaling
8b97ee269SEmmanuel Vadot
9b97ee269SEmmanuel Vadotmaintainers:
10b97ee269SEmmanuel Vadot  - Jia-Wei Chang <jia-wei.chang@mediatek.com>
11b97ee269SEmmanuel Vadot  - Johnson Wang <johnson.wang@mediatek.com>
12b97ee269SEmmanuel Vadot
13b97ee269SEmmanuel Vadotdescription: |
14b97ee269SEmmanuel Vadot  MediaTek Cache Coherent Interconnect (CCI) is a hardware engine used by
15b97ee269SEmmanuel Vadot  MT8183 and MT8186 SoCs to scale the frequency and adjust the voltage in
16b97ee269SEmmanuel Vadot  hardware. It can also optimize the voltage to reduce the power consumption.
17b97ee269SEmmanuel Vadot
18b97ee269SEmmanuel Vadotproperties:
19b97ee269SEmmanuel Vadot  compatible:
20b97ee269SEmmanuel Vadot    enum:
21b97ee269SEmmanuel Vadot      - mediatek,mt8183-cci
22b97ee269SEmmanuel Vadot      - mediatek,mt8186-cci
23b97ee269SEmmanuel Vadot
24b97ee269SEmmanuel Vadot  clocks:
25b97ee269SEmmanuel Vadot    items:
26b97ee269SEmmanuel Vadot      - description:
27b97ee269SEmmanuel Vadot          The multiplexer for clock input of the bus.
28b97ee269SEmmanuel Vadot      - description:
29b97ee269SEmmanuel Vadot          A parent of "bus" clock which is used as an intermediate clock source
30b97ee269SEmmanuel Vadot          when the original clock source (PLL) is under transition and not
31b97ee269SEmmanuel Vadot          stable yet.
32b97ee269SEmmanuel Vadot
33b97ee269SEmmanuel Vadot  clock-names:
34b97ee269SEmmanuel Vadot    items:
35b97ee269SEmmanuel Vadot      - const: cci
36b97ee269SEmmanuel Vadot      - const: intermediate
37b97ee269SEmmanuel Vadot
38b97ee269SEmmanuel Vadot  operating-points-v2: true
39*7ef62cebSEmmanuel Vadot  opp-table:
40*7ef62cebSEmmanuel Vadot    type: object
41b97ee269SEmmanuel Vadot
42b97ee269SEmmanuel Vadot  proc-supply:
43b97ee269SEmmanuel Vadot    description:
44b97ee269SEmmanuel Vadot      Phandle of the regulator for CCI that provides the supply voltage.
45b97ee269SEmmanuel Vadot
46b97ee269SEmmanuel Vadot  sram-supply:
47b97ee269SEmmanuel Vadot    description:
48b97ee269SEmmanuel Vadot      Phandle of the regulator for sram of CCI that provides the supply
49b97ee269SEmmanuel Vadot      voltage. When it is present, the implementation needs to do
50b97ee269SEmmanuel Vadot      "voltage tracking" to step by step scale up/down Vproc and Vsram to fit
51b97ee269SEmmanuel Vadot      SoC specific needs. When absent, the voltage scaling flow is handled by
52b97ee269SEmmanuel Vadot      hardware, hence no software "voltage tracking" is needed.
53b97ee269SEmmanuel Vadot
54b97ee269SEmmanuel Vadotrequired:
55b97ee269SEmmanuel Vadot  - compatible
56b97ee269SEmmanuel Vadot  - clocks
57b97ee269SEmmanuel Vadot  - clock-names
58b97ee269SEmmanuel Vadot  - operating-points-v2
59b97ee269SEmmanuel Vadot  - proc-supply
60b97ee269SEmmanuel Vadot
61b97ee269SEmmanuel VadotadditionalProperties: false
62b97ee269SEmmanuel Vadot
63b97ee269SEmmanuel Vadotexamples:
64b97ee269SEmmanuel Vadot  - |
65b97ee269SEmmanuel Vadot    #include <dt-bindings/clock/mt8183-clk.h>
66b97ee269SEmmanuel Vadot    cci: cci {
67b97ee269SEmmanuel Vadot        compatible = "mediatek,mt8183-cci";
68b97ee269SEmmanuel Vadot        clocks = <&mcucfg CLK_MCU_BUS_SEL>,
69b97ee269SEmmanuel Vadot                 <&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
70b97ee269SEmmanuel Vadot        clock-names = "cci", "intermediate";
71b97ee269SEmmanuel Vadot        operating-points-v2 = <&cci_opp>;
72b97ee269SEmmanuel Vadot        proc-supply = <&mt6358_vproc12_reg>;
73b97ee269SEmmanuel Vadot    };
74b97ee269SEmmanuel Vadot
75b97ee269SEmmanuel Vadot    cci_opp: opp-table-cci {
76b97ee269SEmmanuel Vadot        compatible = "operating-points-v2";
77b97ee269SEmmanuel Vadot        opp-shared;
78b97ee269SEmmanuel Vadot        opp2_00: opp-273000000 {
79b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <273000000>;
80b97ee269SEmmanuel Vadot            opp-microvolt = <650000>;
81b97ee269SEmmanuel Vadot        };
82b97ee269SEmmanuel Vadot        opp2_01: opp-338000000 {
83b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <338000000>;
84b97ee269SEmmanuel Vadot            opp-microvolt = <687500>;
85b97ee269SEmmanuel Vadot        };
86b97ee269SEmmanuel Vadot        opp2_02: opp-403000000 {
87b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <403000000>;
88b97ee269SEmmanuel Vadot            opp-microvolt = <718750>;
89b97ee269SEmmanuel Vadot        };
90b97ee269SEmmanuel Vadot        opp2_03: opp-463000000 {
91b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <463000000>;
92b97ee269SEmmanuel Vadot            opp-microvolt = <756250>;
93b97ee269SEmmanuel Vadot        };
94b97ee269SEmmanuel Vadot        opp2_04: opp-546000000 {
95b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <546000000>;
96b97ee269SEmmanuel Vadot            opp-microvolt = <800000>;
97b97ee269SEmmanuel Vadot        };
98b97ee269SEmmanuel Vadot        opp2_05: opp-624000000 {
99b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <624000000>;
100b97ee269SEmmanuel Vadot            opp-microvolt = <818750>;
101b97ee269SEmmanuel Vadot        };
102b97ee269SEmmanuel Vadot        opp2_06: opp-689000000 {
103b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <689000000>;
104b97ee269SEmmanuel Vadot            opp-microvolt = <850000>;
105b97ee269SEmmanuel Vadot        };
106b97ee269SEmmanuel Vadot        opp2_07: opp-767000000 {
107b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <767000000>;
108b97ee269SEmmanuel Vadot            opp-microvolt = <868750>;
109b97ee269SEmmanuel Vadot        };
110b97ee269SEmmanuel Vadot        opp2_08: opp-845000000 {
111b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <845000000>;
112b97ee269SEmmanuel Vadot            opp-microvolt = <893750>;
113b97ee269SEmmanuel Vadot        };
114b97ee269SEmmanuel Vadot        opp2_09: opp-871000000 {
115b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <871000000>;
116b97ee269SEmmanuel Vadot            opp-microvolt = <906250>;
117b97ee269SEmmanuel Vadot        };
118b97ee269SEmmanuel Vadot        opp2_10: opp-923000000 {
119b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <923000000>;
120b97ee269SEmmanuel Vadot            opp-microvolt = <931250>;
121b97ee269SEmmanuel Vadot        };
122b97ee269SEmmanuel Vadot        opp2_11: opp-962000000 {
123b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <962000000>;
124b97ee269SEmmanuel Vadot            opp-microvolt = <943750>;
125b97ee269SEmmanuel Vadot        };
126b97ee269SEmmanuel Vadot        opp2_12: opp-1027000000 {
127b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <1027000000>;
128b97ee269SEmmanuel Vadot            opp-microvolt = <975000>;
129b97ee269SEmmanuel Vadot        };
130b97ee269SEmmanuel Vadot        opp2_13: opp-1092000000 {
131b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <1092000000>;
132b97ee269SEmmanuel Vadot            opp-microvolt = <1000000>;
133b97ee269SEmmanuel Vadot        };
134b97ee269SEmmanuel Vadot        opp2_14: opp-1144000000 {
135b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <1144000000>;
136b97ee269SEmmanuel Vadot            opp-microvolt = <1025000>;
137b97ee269SEmmanuel Vadot        };
138b97ee269SEmmanuel Vadot        opp2_15: opp-1196000000 {
139b97ee269SEmmanuel Vadot            opp-hz = /bits/ 64 <1196000000>;
140b97ee269SEmmanuel Vadot            opp-microvolt = <1050000>;
141b97ee269SEmmanuel Vadot        };
142b97ee269SEmmanuel Vadot    };
143