Back to home page

OSCL-LXR

 
 

    


0001 Binding for MediaTek's CPUFreq driver
0002 =====================================
0003 
0004 Required properties:
0005 - clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock names.
0006 - clock-names: Should contain the following:
0007         "cpu"           - The multiplexer for clock input of CPU cluster.
0008         "intermediate"  - A parent of "cpu" clock which is used as "intermediate" clock
0009                           source (usually MAINPLL) when the original CPU PLL is under
0010                           transition and not stable yet.
0011         Please refer to Documentation/devicetree/bindings/clock/clock-bindings.txt for
0012         generic clock consumer properties.
0013 - operating-points-v2: Please refer to Documentation/devicetree/bindings/opp/opp-v2.yaml
0014         for detail.
0015 - proc-supply: Regulator for Vproc of CPU cluster.
0016 
0017 Optional properties:
0018 - sram-supply: Regulator for Vsram of CPU cluster. When present, the cpufreq driver
0019                needs to do "voltage tracking" to step by step scale up/down Vproc and
0020                Vsram to fit SoC specific needs. When absent, the voltage scaling
0021                flow is handled by hardware, hence no software "voltage tracking" is
0022                needed.
0023 - mediatek,cci:
0024         Used to confirm the link status between cpufreq and mediatek cci. Because
0025         cpufreq and mediatek cci could share the same regulator in some MediaTek SoCs.
0026         To prevent the issue of high frequency and low voltage, we need to use this
0027         property to make sure mediatek cci is ready.
0028         For details of mediatek cci, please refer to
0029         Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
0030 - #cooling-cells:
0031         For details, please refer to
0032         Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml
0033 
0034 Example 1 (MT7623 SoC):
0035 
0036         cpu_opp_table: opp_table {
0037                 compatible = "operating-points-v2";
0038                 opp-shared;
0039 
0040                 opp-598000000 {
0041                         opp-hz = /bits/ 64 <598000000>;
0042                         opp-microvolt = <1050000>;
0043                 };
0044 
0045                 opp-747500000 {
0046                         opp-hz = /bits/ 64 <747500000>;
0047                         opp-microvolt = <1050000>;
0048                 };
0049 
0050                 opp-1040000000 {
0051                         opp-hz = /bits/ 64 <1040000000>;
0052                         opp-microvolt = <1150000>;
0053                 };
0054 
0055                 opp-1196000000 {
0056                         opp-hz = /bits/ 64 <1196000000>;
0057                         opp-microvolt = <1200000>;
0058                 };
0059 
0060                 opp-1300000000 {
0061                         opp-hz = /bits/ 64 <1300000000>;
0062                         opp-microvolt = <1300000>;
0063                 };
0064         };
0065 
0066         cpu0: cpu@0 {
0067                 device_type = "cpu";
0068                 compatible = "arm,cortex-a7";
0069                 reg = <0x0>;
0070                 clocks = <&infracfg CLK_INFRA_CPUSEL>,
0071                          <&apmixedsys CLK_APMIXED_MAINPLL>;
0072                 clock-names = "cpu", "intermediate";
0073                 operating-points-v2 = <&cpu_opp_table>;
0074                 #cooling-cells = <2>;
0075         };
0076         cpu@1 {
0077                 device_type = "cpu";
0078                 compatible = "arm,cortex-a7";
0079                 reg = <0x1>;
0080                 operating-points-v2 = <&cpu_opp_table>;
0081         };
0082         cpu@2 {
0083                 device_type = "cpu";
0084                 compatible = "arm,cortex-a7";
0085                 reg = <0x2>;
0086                 operating-points-v2 = <&cpu_opp_table>;
0087         };
0088         cpu@3 {
0089                 device_type = "cpu";
0090                 compatible = "arm,cortex-a7";
0091                 reg = <0x3>;
0092                 operating-points-v2 = <&cpu_opp_table>;
0093         };
0094 
0095 Example 2 (MT8173 SoC):
0096         cpu_opp_table_a: opp_table_a {
0097                 compatible = "operating-points-v2";
0098                 opp-shared;
0099 
0100                 opp-507000000 {
0101                         opp-hz = /bits/ 64 <507000000>;
0102                         opp-microvolt = <859000>;
0103                 };
0104 
0105                 opp-702000000 {
0106                         opp-hz = /bits/ 64 <702000000>;
0107                         opp-microvolt = <908000>;
0108                 };
0109 
0110                 opp-1001000000 {
0111                         opp-hz = /bits/ 64 <1001000000>;
0112                         opp-microvolt = <983000>;
0113                 };
0114 
0115                 opp-1105000000 {
0116                         opp-hz = /bits/ 64 <1105000000>;
0117                         opp-microvolt = <1009000>;
0118                 };
0119 
0120                 opp-1183000000 {
0121                         opp-hz = /bits/ 64 <1183000000>;
0122                         opp-microvolt = <1028000>;
0123                 };
0124 
0125                 opp-1404000000 {
0126                         opp-hz = /bits/ 64 <1404000000>;
0127                         opp-microvolt = <1083000>;
0128                 };
0129 
0130                 opp-1508000000 {
0131                         opp-hz = /bits/ 64 <1508000000>;
0132                         opp-microvolt = <1109000>;
0133                 };
0134 
0135                 opp-1573000000 {
0136                         opp-hz = /bits/ 64 <1573000000>;
0137                         opp-microvolt = <1125000>;
0138                 };
0139         };
0140 
0141         cpu_opp_table_b: opp_table_b {
0142                 compatible = "operating-points-v2";
0143                 opp-shared;
0144 
0145                 opp-507000000 {
0146                         opp-hz = /bits/ 64 <507000000>;
0147                         opp-microvolt = <828000>;
0148                 };
0149 
0150                 opp-702000000 {
0151                         opp-hz = /bits/ 64 <702000000>;
0152                         opp-microvolt = <867000>;
0153                 };
0154 
0155                 opp-1001000000 {
0156                         opp-hz = /bits/ 64 <1001000000>;
0157                         opp-microvolt = <927000>;
0158                 };
0159 
0160                 opp-1209000000 {
0161                         opp-hz = /bits/ 64 <1209000000>;
0162                         opp-microvolt = <968000>;
0163                 };
0164 
0165                 opp-1404000000 {
0166                         opp-hz = /bits/ 64 <1007000000>;
0167                         opp-microvolt = <1028000>;
0168                 };
0169 
0170                 opp-1612000000 {
0171                         opp-hz = /bits/ 64 <1612000000>;
0172                         opp-microvolt = <1049000>;
0173                 };
0174 
0175                 opp-1807000000 {
0176                         opp-hz = /bits/ 64 <1807000000>;
0177                         opp-microvolt = <1089000>;
0178                 };
0179 
0180                 opp-1989000000 {
0181                         opp-hz = /bits/ 64 <1989000000>;
0182                         opp-microvolt = <1125000>;
0183                 };
0184         };
0185 
0186         cpu0: cpu@0 {
0187                 device_type = "cpu";
0188                 compatible = "arm,cortex-a53";
0189                 reg = <0x000>;
0190                 enable-method = "psci";
0191                 cpu-idle-states = <&CPU_SLEEP_0>;
0192                 clocks = <&infracfg CLK_INFRA_CA53SEL>,
0193                          <&apmixedsys CLK_APMIXED_MAINPLL>;
0194                 clock-names = "cpu", "intermediate";
0195                 operating-points-v2 = <&cpu_opp_table_a>;
0196         };
0197 
0198         cpu1: cpu@1 {
0199                 device_type = "cpu";
0200                 compatible = "arm,cortex-a53";
0201                 reg = <0x001>;
0202                 enable-method = "psci";
0203                 cpu-idle-states = <&CPU_SLEEP_0>;
0204                 clocks = <&infracfg CLK_INFRA_CA53SEL>,
0205                          <&apmixedsys CLK_APMIXED_MAINPLL>;
0206                 clock-names = "cpu", "intermediate";
0207                 operating-points-v2 = <&cpu_opp_table_a>;
0208         };
0209 
0210         cpu2: cpu@100 {
0211                 device_type = "cpu";
0212                 compatible = "arm,cortex-a72";
0213                 reg = <0x100>;
0214                 enable-method = "psci";
0215                 cpu-idle-states = <&CPU_SLEEP_0>;
0216                 clocks = <&infracfg CLK_INFRA_CA72SEL>,
0217                          <&apmixedsys CLK_APMIXED_MAINPLL>;
0218                 clock-names = "cpu", "intermediate";
0219                 operating-points-v2 = <&cpu_opp_table_b>;
0220         };
0221 
0222         cpu3: cpu@101 {
0223                 device_type = "cpu";
0224                 compatible = "arm,cortex-a72";
0225                 reg = <0x101>;
0226                 enable-method = "psci";
0227                 cpu-idle-states = <&CPU_SLEEP_0>;
0228                 clocks = <&infracfg CLK_INFRA_CA72SEL>,
0229                          <&apmixedsys CLK_APMIXED_MAINPLL>;
0230                 clock-names = "cpu", "intermediate";
0231                 operating-points-v2 = <&cpu_opp_table_b>;
0232         };
0233 
0234         &cpu0 {
0235                 proc-supply = <&mt6397_vpca15_reg>;
0236         };
0237 
0238         &cpu1 {
0239                 proc-supply = <&mt6397_vpca15_reg>;
0240         };
0241 
0242         &cpu2 {
0243                 proc-supply = <&da9211_vcpu_reg>;
0244                 sram-supply = <&mt6397_vsramca7_reg>;
0245         };
0246 
0247         &cpu3 {
0248                 proc-supply = <&da9211_vcpu_reg>;
0249                 sram-supply = <&mt6397_vsramca7_reg>;
0250         };