1ec24d1d5SYassine Oudjana# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2ec24d1d5SYassine Oudjana%YAML 1.2 3ec24d1d5SYassine Oudjana--- 4ec24d1d5SYassine Oudjana$id: http://devicetree.org/schemas/opp/opp-v2-kryo-cpu.yaml# 5ec24d1d5SYassine Oudjana$schema: http://devicetree.org/meta-schemas/core.yaml# 6ec24d1d5SYassine Oudjana 784e85359SKrzysztof Kozlowskititle: Qualcomm Technologies, Inc. NVMEM OPP 8ec24d1d5SYassine Oudjana 9ec24d1d5SYassine Oudjanamaintainers: 10ec24d1d5SYassine Oudjana - Ilia Lin <ilia.lin@kernel.org> 11ec24d1d5SYassine Oudjana 12ec24d1d5SYassine OudjanaallOf: 13ec24d1d5SYassine Oudjana - $ref: opp-v2-base.yaml# 14ec24d1d5SYassine Oudjana 15ec24d1d5SYassine Oudjanadescription: | 16ec24d1d5SYassine Oudjana In certain Qualcomm Technologies, Inc. SoCs like APQ8096 and MSM8996, 17ec24d1d5SYassine Oudjana the CPU frequencies subset and voltage value of each OPP varies based on 18ec24d1d5SYassine Oudjana the silicon variant in use. 19ec24d1d5SYassine Oudjana Qualcomm Technologies, Inc. Process Voltage Scaling Tables 203e1fac93SYassine Oudjana defines the voltage and frequency value based on the speedbin blown in 213e1fac93SYassine Oudjana the efuse combination. 223e1fac93SYassine Oudjana The qcom-cpufreq-nvmem driver reads the efuse value from the SoC to provide 233e1fac93SYassine Oudjana the OPP framework with required information (existing HW bitmap). 24ec24d1d5SYassine Oudjana This is used to determine the voltage and frequency value for each OPP of 25ec24d1d5SYassine Oudjana operating-points-v2 table when it is parsed by the OPP framework. 26ec24d1d5SYassine Oudjana 27ec24d1d5SYassine Oudjanaproperties: 28ec24d1d5SYassine Oudjana compatible: 29ec24d1d5SYassine Oudjana const: operating-points-v2-kryo-cpu 30ec24d1d5SYassine Oudjana 31ec24d1d5SYassine Oudjana nvmem-cells: 32ec24d1d5SYassine Oudjana description: | 33ec24d1d5SYassine Oudjana A phandle pointing to a nvmem-cells node representing the 34ec24d1d5SYassine Oudjana efuse registers that has information about the 35ec24d1d5SYassine Oudjana speedbin that is used to select the right frequency/voltage 36ec24d1d5SYassine Oudjana value pair. 37ec24d1d5SYassine Oudjana 38ec24d1d5SYassine Oudjana opp-shared: true 39ec24d1d5SYassine Oudjana 40ec24d1d5SYassine OudjanapatternProperties: 41ec24d1d5SYassine Oudjana '^opp-?[0-9]+$': 42ec24d1d5SYassine Oudjana type: object 43c7e31e36SRob Herring additionalProperties: false 44ec24d1d5SYassine Oudjana 45ec24d1d5SYassine Oudjana properties: 46ec24d1d5SYassine Oudjana opp-hz: true 47ec24d1d5SYassine Oudjana 48ec24d1d5SYassine Oudjana opp-microvolt: true 49ec24d1d5SYassine Oudjana 50ec24d1d5SYassine Oudjana opp-supported-hw: 51ec24d1d5SYassine Oudjana description: | 52ec24d1d5SYassine Oudjana A single 32 bit bitmap value, representing compatible HW. 53*ba38f3cbSChristian Marangi Bitmap for MSM8996 format: 543e1fac93SYassine Oudjana 0: MSM8996, speedbin 0 553e1fac93SYassine Oudjana 1: MSM8996, speedbin 1 563e1fac93SYassine Oudjana 2: MSM8996, speedbin 2 57*ba38f3cbSChristian Marangi 3: MSM8996, speedbin 3 58*ba38f3cbSChristian Marangi 4-31: unused 59*ba38f3cbSChristian Marangi 60*ba38f3cbSChristian Marangi Bitmap for MSM8996SG format (speedbin shifted of 4 left): 61*ba38f3cbSChristian Marangi 0-3: unused 62*ba38f3cbSChristian Marangi 4: MSM8996SG, speedbin 0 63*ba38f3cbSChristian Marangi 5: MSM8996SG, speedbin 1 64*ba38f3cbSChristian Marangi 6: MSM8996SG, speedbin 2 65*ba38f3cbSChristian Marangi 7-31: unused 66*ba38f3cbSChristian Marangi enum: [0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 67*ba38f3cbSChristian Marangi 0x9, 0xd, 0xe, 0xf, 68*ba38f3cbSChristian Marangi 0x10, 0x20, 0x30, 0x70] 69ec24d1d5SYassine Oudjana 70ec24d1d5SYassine Oudjana clock-latency-ns: true 71ec24d1d5SYassine Oudjana 72ec24d1d5SYassine Oudjana required-opps: true 73ec24d1d5SYassine Oudjana 74ec24d1d5SYassine Oudjana required: 75ec24d1d5SYassine Oudjana - opp-hz 76ec24d1d5SYassine Oudjana 77ec24d1d5SYassine Oudjanarequired: 78ec24d1d5SYassine Oudjana - compatible 79ec24d1d5SYassine Oudjana 80ec24d1d5SYassine Oudjanaif: 81ec24d1d5SYassine Oudjana required: 82ec24d1d5SYassine Oudjana - nvmem-cells 83ec24d1d5SYassine Oudjanathen: 84ec24d1d5SYassine Oudjana patternProperties: 85ec24d1d5SYassine Oudjana '^opp-?[0-9]+$': 86ec24d1d5SYassine Oudjana required: 87ec24d1d5SYassine Oudjana - opp-supported-hw 88ec24d1d5SYassine Oudjana 89ec24d1d5SYassine OudjanaadditionalProperties: false 90ec24d1d5SYassine Oudjana 91ec24d1d5SYassine Oudjanaexamples: 92ec24d1d5SYassine Oudjana - | 93ec24d1d5SYassine Oudjana / { 94ec24d1d5SYassine Oudjana model = "Qualcomm Technologies, Inc. DB820c"; 95ec24d1d5SYassine Oudjana compatible = "arrow,apq8096-db820c", "qcom,apq8096-sbc", "qcom,apq8096"; 96ec24d1d5SYassine Oudjana #address-cells = <2>; 97ec24d1d5SYassine Oudjana #size-cells = <2>; 98ec24d1d5SYassine Oudjana 99ec24d1d5SYassine Oudjana cpus { 100ec24d1d5SYassine Oudjana #address-cells = <2>; 101ec24d1d5SYassine Oudjana #size-cells = <0>; 102ec24d1d5SYassine Oudjana 103ec24d1d5SYassine Oudjana CPU0: cpu@0 { 104ec24d1d5SYassine Oudjana device_type = "cpu"; 105ec24d1d5SYassine Oudjana compatible = "qcom,kryo"; 106ec24d1d5SYassine Oudjana reg = <0x0 0x0>; 107ec24d1d5SYassine Oudjana enable-method = "psci"; 108ec24d1d5SYassine Oudjana cpu-idle-states = <&CPU_SLEEP_0>; 109ec24d1d5SYassine Oudjana capacity-dmips-mhz = <1024>; 110ec24d1d5SYassine Oudjana clocks = <&kryocc 0>; 111ec24d1d5SYassine Oudjana operating-points-v2 = <&cluster0_opp>; 1123b4916a6SBryan O'Donoghue power-domains = <&cpr>; 1133b4916a6SBryan O'Donoghue power-domain-names = "cpr"; 114ec24d1d5SYassine Oudjana #cooling-cells = <2>; 115ec24d1d5SYassine Oudjana next-level-cache = <&L2_0>; 116ec24d1d5SYassine Oudjana L2_0: l2-cache { 117ec24d1d5SYassine Oudjana compatible = "cache"; 118ec24d1d5SYassine Oudjana cache-level = <2>; 1195b2ad5acSRob Herring cache-unified; 120ec24d1d5SYassine Oudjana }; 121ec24d1d5SYassine Oudjana }; 122ec24d1d5SYassine Oudjana 123ec24d1d5SYassine Oudjana CPU1: cpu@1 { 124ec24d1d5SYassine Oudjana device_type = "cpu"; 125ec24d1d5SYassine Oudjana compatible = "qcom,kryo"; 126ec24d1d5SYassine Oudjana reg = <0x0 0x1>; 127ec24d1d5SYassine Oudjana enable-method = "psci"; 128ec24d1d5SYassine Oudjana cpu-idle-states = <&CPU_SLEEP_0>; 129ec24d1d5SYassine Oudjana capacity-dmips-mhz = <1024>; 130ec24d1d5SYassine Oudjana clocks = <&kryocc 0>; 131ec24d1d5SYassine Oudjana operating-points-v2 = <&cluster0_opp>; 1323b4916a6SBryan O'Donoghue power-domains = <&cpr>; 1333b4916a6SBryan O'Donoghue power-domain-names = "cpr"; 134ec24d1d5SYassine Oudjana #cooling-cells = <2>; 135ec24d1d5SYassine Oudjana next-level-cache = <&L2_0>; 136ec24d1d5SYassine Oudjana }; 137ec24d1d5SYassine Oudjana 138ec24d1d5SYassine Oudjana CPU2: cpu@100 { 139ec24d1d5SYassine Oudjana device_type = "cpu"; 140ec24d1d5SYassine Oudjana compatible = "qcom,kryo"; 141ec24d1d5SYassine Oudjana reg = <0x0 0x100>; 142ec24d1d5SYassine Oudjana enable-method = "psci"; 143ec24d1d5SYassine Oudjana cpu-idle-states = <&CPU_SLEEP_0>; 144ec24d1d5SYassine Oudjana capacity-dmips-mhz = <1024>; 145ec24d1d5SYassine Oudjana clocks = <&kryocc 1>; 146ec24d1d5SYassine Oudjana operating-points-v2 = <&cluster1_opp>; 1473b4916a6SBryan O'Donoghue power-domains = <&cpr>; 1483b4916a6SBryan O'Donoghue power-domain-names = "cpr"; 149ec24d1d5SYassine Oudjana #cooling-cells = <2>; 150ec24d1d5SYassine Oudjana next-level-cache = <&L2_1>; 151ec24d1d5SYassine Oudjana L2_1: l2-cache { 152ec24d1d5SYassine Oudjana compatible = "cache"; 153ec24d1d5SYassine Oudjana cache-level = <2>; 1545b2ad5acSRob Herring cache-unified; 155ec24d1d5SYassine Oudjana }; 156ec24d1d5SYassine Oudjana }; 157ec24d1d5SYassine Oudjana 158ec24d1d5SYassine Oudjana CPU3: cpu@101 { 159ec24d1d5SYassine Oudjana device_type = "cpu"; 160ec24d1d5SYassine Oudjana compatible = "qcom,kryo"; 161ec24d1d5SYassine Oudjana reg = <0x0 0x101>; 162ec24d1d5SYassine Oudjana enable-method = "psci"; 163ec24d1d5SYassine Oudjana cpu-idle-states = <&CPU_SLEEP_0>; 164ec24d1d5SYassine Oudjana capacity-dmips-mhz = <1024>; 165ec24d1d5SYassine Oudjana clocks = <&kryocc 1>; 166ec24d1d5SYassine Oudjana operating-points-v2 = <&cluster1_opp>; 1673b4916a6SBryan O'Donoghue power-domains = <&cpr>; 1683b4916a6SBryan O'Donoghue power-domain-names = "cpr"; 169ec24d1d5SYassine Oudjana #cooling-cells = <2>; 170ec24d1d5SYassine Oudjana next-level-cache = <&L2_1>; 171ec24d1d5SYassine Oudjana }; 172ec24d1d5SYassine Oudjana 173ec24d1d5SYassine Oudjana cpu-map { 174ec24d1d5SYassine Oudjana cluster0 { 175ec24d1d5SYassine Oudjana core0 { 176ec24d1d5SYassine Oudjana cpu = <&CPU0>; 177ec24d1d5SYassine Oudjana }; 178ec24d1d5SYassine Oudjana 179ec24d1d5SYassine Oudjana core1 { 180ec24d1d5SYassine Oudjana cpu = <&CPU1>; 181ec24d1d5SYassine Oudjana }; 182ec24d1d5SYassine Oudjana }; 183ec24d1d5SYassine Oudjana 184ec24d1d5SYassine Oudjana cluster1 { 185ec24d1d5SYassine Oudjana core0 { 186ec24d1d5SYassine Oudjana cpu = <&CPU2>; 187ec24d1d5SYassine Oudjana }; 188ec24d1d5SYassine Oudjana 189ec24d1d5SYassine Oudjana core1 { 190ec24d1d5SYassine Oudjana cpu = <&CPU3>; 191ec24d1d5SYassine Oudjana }; 192ec24d1d5SYassine Oudjana }; 193ec24d1d5SYassine Oudjana }; 194ec24d1d5SYassine Oudjana }; 195ec24d1d5SYassine Oudjana 196ec24d1d5SYassine Oudjana cluster0_opp: opp-table-0 { 197ec24d1d5SYassine Oudjana compatible = "operating-points-v2-kryo-cpu"; 198ec24d1d5SYassine Oudjana nvmem-cells = <&speedbin_efuse>; 199ec24d1d5SYassine Oudjana opp-shared; 200ec24d1d5SYassine Oudjana 201ec24d1d5SYassine Oudjana opp-307200000 { 202ec24d1d5SYassine Oudjana opp-hz = /bits/ 64 <307200000>; 203ec24d1d5SYassine Oudjana opp-microvolt = <905000 905000 1140000>; 2043e1fac93SYassine Oudjana opp-supported-hw = <0x7>; 2053e1fac93SYassine Oudjana clock-latency-ns = <200000>; 2063b4916a6SBryan O'Donoghue required-opps = <&cpr_opp1>; 2073e1fac93SYassine Oudjana }; 2083e1fac93SYassine Oudjana opp-1401600000 { 2093e1fac93SYassine Oudjana opp-hz = /bits/ 64 <1401600000>; 2103e1fac93SYassine Oudjana opp-microvolt = <1140000 905000 1140000>; 2113e1fac93SYassine Oudjana opp-supported-hw = <0x5>; 212ec24d1d5SYassine Oudjana clock-latency-ns = <200000>; 2133b4916a6SBryan O'Donoghue required-opps = <&cpr_opp2>; 214ec24d1d5SYassine Oudjana }; 215ec24d1d5SYassine Oudjana opp-1593600000 { 216ec24d1d5SYassine Oudjana opp-hz = /bits/ 64 <1593600000>; 217ec24d1d5SYassine Oudjana opp-microvolt = <1140000 905000 1140000>; 2183e1fac93SYassine Oudjana opp-supported-hw = <0x1>; 219ec24d1d5SYassine Oudjana clock-latency-ns = <200000>; 2203b4916a6SBryan O'Donoghue required-opps = <&cpr_opp3>; 221ec24d1d5SYassine Oudjana }; 222ec24d1d5SYassine Oudjana }; 223ec24d1d5SYassine Oudjana 224ec24d1d5SYassine Oudjana cluster1_opp: opp-table-1 { 225ec24d1d5SYassine Oudjana compatible = "operating-points-v2-kryo-cpu"; 226ec24d1d5SYassine Oudjana nvmem-cells = <&speedbin_efuse>; 227ec24d1d5SYassine Oudjana opp-shared; 228ec24d1d5SYassine Oudjana 229ec24d1d5SYassine Oudjana opp-307200000 { 230ec24d1d5SYassine Oudjana opp-hz = /bits/ 64 <307200000>; 231ec24d1d5SYassine Oudjana opp-microvolt = <905000 905000 1140000>; 2323e1fac93SYassine Oudjana opp-supported-hw = <0x7>; 233ec24d1d5SYassine Oudjana clock-latency-ns = <200000>; 2343b4916a6SBryan O'Donoghue required-opps = <&cpr_opp1>; 235ec24d1d5SYassine Oudjana }; 2363e1fac93SYassine Oudjana opp-1804800000 { 2373e1fac93SYassine Oudjana opp-hz = /bits/ 64 <1804800000>; 238ec24d1d5SYassine Oudjana opp-microvolt = <1140000 905000 1140000>; 2393e1fac93SYassine Oudjana opp-supported-hw = <0x6>; 2403e1fac93SYassine Oudjana clock-latency-ns = <200000>; 2413b4916a6SBryan O'Donoghue required-opps = <&cpr_opp4>; 2423e1fac93SYassine Oudjana }; 2433e1fac93SYassine Oudjana opp-1900800000 { 2443e1fac93SYassine Oudjana opp-hz = /bits/ 64 <1900800000>; 2453e1fac93SYassine Oudjana opp-microvolt = <1140000 905000 1140000>; 2463e1fac93SYassine Oudjana opp-supported-hw = <0x4>; 247ec24d1d5SYassine Oudjana clock-latency-ns = <200000>; 2483b4916a6SBryan O'Donoghue required-opps = <&cpr_opp5>; 249ec24d1d5SYassine Oudjana }; 250ec24d1d5SYassine Oudjana opp-2150400000 { 251ec24d1d5SYassine Oudjana opp-hz = /bits/ 64 <2150400000>; 252ec24d1d5SYassine Oudjana opp-microvolt = <1140000 905000 1140000>; 2533e1fac93SYassine Oudjana opp-supported-hw = <0x1>; 254ec24d1d5SYassine Oudjana clock-latency-ns = <200000>; 2553b4916a6SBryan O'Donoghue required-opps = <&cpr_opp6>; 256ec24d1d5SYassine Oudjana }; 257ec24d1d5SYassine Oudjana }; 258ec24d1d5SYassine Oudjana 259ec24d1d5SYassine Oudjana smem { 260ec24d1d5SYassine Oudjana compatible = "qcom,smem"; 261ec24d1d5SYassine Oudjana memory-region = <&smem_mem>; 262ec24d1d5SYassine Oudjana hwlocks = <&tcsr_mutex 3>; 263ec24d1d5SYassine Oudjana }; 264ec24d1d5SYassine Oudjana 265ec24d1d5SYassine Oudjana soc { 266ec24d1d5SYassine Oudjana #address-cells = <1>; 267ec24d1d5SYassine Oudjana #size-cells = <1>; 268ec24d1d5SYassine Oudjana 269ec24d1d5SYassine Oudjana qfprom: qfprom@74000 { 270ec24d1d5SYassine Oudjana compatible = "qcom,msm8996-qfprom", "qcom,qfprom"; 271ec24d1d5SYassine Oudjana reg = <0x00074000 0x8ff>; 272ec24d1d5SYassine Oudjana #address-cells = <1>; 273ec24d1d5SYassine Oudjana #size-cells = <1>; 274ec24d1d5SYassine Oudjana 275ec24d1d5SYassine Oudjana speedbin_efuse: speedbin@133 { 276ec24d1d5SYassine Oudjana reg = <0x133 0x1>; 277ec24d1d5SYassine Oudjana bits = <5 3>; 278ec24d1d5SYassine Oudjana }; 279ec24d1d5SYassine Oudjana }; 280ec24d1d5SYassine Oudjana }; 281ec24d1d5SYassine Oudjana }; 282