1c9491a16SDmitry Baryshkov# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2c9491a16SDmitry Baryshkov%YAML 1.2 3c9491a16SDmitry Baryshkov--- 4c9491a16SDmitry Baryshkov$id: http://devicetree.org/schemas/soc/qcom/qcom,saw2.yaml# 5c9491a16SDmitry Baryshkov$schema: http://devicetree.org/meta-schemas/core.yaml# 6c9491a16SDmitry Baryshkov 7c9491a16SDmitry Baryshkovtitle: Qualcomm Subsystem Power Manager / SPM AVS Wrapper 2 (SAW2) 8c9491a16SDmitry Baryshkov 9c9491a16SDmitry Baryshkovmaintainers: 10c9491a16SDmitry Baryshkov - Andy Gross <agross@kernel.org> 11c9491a16SDmitry Baryshkov - Bjorn Andersson <bjorn.andersson@linaro.org> 12c9491a16SDmitry Baryshkov 13c9491a16SDmitry Baryshkovdescription: | 14c9491a16SDmitry Baryshkov The Qualcomm Subsystem Power Manager is used to control the peripheral logic 15c9491a16SDmitry Baryshkov surrounding the application cores in Qualcomm platforms. 16c9491a16SDmitry Baryshkov 17c9491a16SDmitry Baryshkov The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the 18c9491a16SDmitry Baryshkov Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable 19c9491a16SDmitry Baryshkov power-controller that transitions a piece of hardware (like a processor or 20c9491a16SDmitry Baryshkov subsystem) into and out of low power modes via a direct connection to 21c9491a16SDmitry Baryshkov the PMIC. It can also be wired up to interact with other processors in the 22c9491a16SDmitry Baryshkov system, notifying them when a low power state is entered or exited. 23c9491a16SDmitry Baryshkov 24c9491a16SDmitry Baryshkovproperties: 25c9491a16SDmitry Baryshkov compatible: 26c9491a16SDmitry Baryshkov items: 27c9491a16SDmitry Baryshkov - enum: 2831ac56a5SDmitry Baryshkov - qcom,ipq4019-saw2-cpu 2931ac56a5SDmitry Baryshkov - qcom,ipq4019-saw2-l2 3031ac56a5SDmitry Baryshkov - qcom,ipq8064-saw2-cpu 31c9491a16SDmitry Baryshkov - qcom,sdm660-gold-saw2-v4.1-l2 32c9491a16SDmitry Baryshkov - qcom,sdm660-silver-saw2-v4.1-l2 33c9491a16SDmitry Baryshkov - qcom,msm8998-gold-saw2-v4.1-l2 34c9491a16SDmitry Baryshkov - qcom,msm8998-silver-saw2-v4.1-l2 35c9491a16SDmitry Baryshkov - qcom,msm8909-saw2-v3.0-cpu 36c9491a16SDmitry Baryshkov - qcom,msm8916-saw2-v3.0-cpu 37c9491a16SDmitry Baryshkov - qcom,msm8939-saw2-v3.0-cpu 38c9491a16SDmitry Baryshkov - qcom,msm8226-saw2-v2.1-cpu 39*aa05f474SLuca Weiss - qcom,msm8226-saw2-v2.1-l2 4031ac56a5SDmitry Baryshkov - qcom,msm8960-saw2-cpu 41c9491a16SDmitry Baryshkov - qcom,msm8974-saw2-v2.1-cpu 4231ac56a5SDmitry Baryshkov - qcom,msm8974-saw2-v2.1-l2 43c9491a16SDmitry Baryshkov - qcom,msm8976-gold-saw2-v2.3-l2 44c9491a16SDmitry Baryshkov - qcom,msm8976-silver-saw2-v2.3-l2 45c9491a16SDmitry Baryshkov - qcom,apq8084-saw2-v2.1-cpu 4631ac56a5SDmitry Baryshkov - qcom,apq8084-saw2-v2.1-l2 47c9491a16SDmitry Baryshkov - qcom,apq8064-saw2-v1.1-cpu 48c9491a16SDmitry Baryshkov - const: qcom,saw2 49c9491a16SDmitry Baryshkov 50c9491a16SDmitry Baryshkov reg: 51c9491a16SDmitry Baryshkov items: 52c9491a16SDmitry Baryshkov - description: Base address and size of the SPM register region 53c9491a16SDmitry Baryshkov - description: Base address and size of the alias register region 54c9491a16SDmitry Baryshkov minItems: 1 55c9491a16SDmitry Baryshkov 56c9491a16SDmitry Baryshkov regulator: 57aa4e327fSDmitry Baryshkov $ref: /schemas/regulator/regulator.yaml# 58c9491a16SDmitry Baryshkov description: Indicates that this SPM device acts as a regulator device 59c9491a16SDmitry Baryshkov device for the core (CPU or Cache) the SPM is attached to. 60c9491a16SDmitry Baryshkov 61c9491a16SDmitry Baryshkovrequired: 62c9491a16SDmitry Baryshkov - compatible 63c9491a16SDmitry Baryshkov - reg 64c9491a16SDmitry Baryshkov 65c9491a16SDmitry BaryshkovadditionalProperties: false 66c9491a16SDmitry Baryshkov 67c9491a16SDmitry Baryshkovexamples: 68c9491a16SDmitry Baryshkov - | 69c9491a16SDmitry Baryshkov 70c9491a16SDmitry Baryshkov /* Example 1: SoC using SAW2 and kpss-acc-v2 CPUIdle */ 71c9491a16SDmitry Baryshkov cpus { 72c9491a16SDmitry Baryshkov #address-cells = <1>; 73c9491a16SDmitry Baryshkov #size-cells = <0>; 74c9491a16SDmitry Baryshkov 75c9491a16SDmitry Baryshkov cpu@0 { 76c9491a16SDmitry Baryshkov compatible = "qcom,kryo"; 77c9491a16SDmitry Baryshkov device_type = "cpu"; 78c9491a16SDmitry Baryshkov enable-method = "qcom,kpss-acc-v2"; 79c9491a16SDmitry Baryshkov qcom,saw = <&saw0>; 80c9491a16SDmitry Baryshkov reg = <0x0>; 81c9491a16SDmitry Baryshkov operating-points-v2 = <&cpu_opp_table>; 82c9491a16SDmitry Baryshkov }; 83c9491a16SDmitry Baryshkov }; 84c9491a16SDmitry Baryshkov 85c9491a16SDmitry Baryshkov saw0: power-manager@f9089000 { 86c9491a16SDmitry Baryshkov compatible = "qcom,msm8974-saw2-v2.1-cpu", "qcom,saw2"; 87c9491a16SDmitry Baryshkov reg = <0xf9089000 0x1000>; 88c9491a16SDmitry Baryshkov }; 89c9491a16SDmitry Baryshkov 90c9491a16SDmitry Baryshkov - | 91c9491a16SDmitry Baryshkov 92c9491a16SDmitry Baryshkov /* 93c9491a16SDmitry Baryshkov * Example 2: New-gen multi cluster SoC using SAW only for L2; 94c9491a16SDmitry Baryshkov * This does not require any cpuidle driver, nor any cpu phandle. 95c9491a16SDmitry Baryshkov */ 96c9491a16SDmitry Baryshkov power-manager@17812000 { 97c9491a16SDmitry Baryshkov compatible = "qcom,msm8998-gold-saw2-v4.1-l2", "qcom,saw2"; 98c9491a16SDmitry Baryshkov reg = <0x17812000 0x1000>; 99c9491a16SDmitry Baryshkov }; 100c9491a16SDmitry Baryshkov 101c9491a16SDmitry Baryshkov power-manager@17912000 { 102c9491a16SDmitry Baryshkov compatible = "qcom,msm8998-silver-saw2-v4.1-l2", "qcom,saw2"; 103c9491a16SDmitry Baryshkov reg = <0x17912000 0x1000>; 104c9491a16SDmitry Baryshkov }; 105c9491a16SDmitry Baryshkov 106aa4e327fSDmitry Baryshkov - | 107aa4e327fSDmitry Baryshkov /* 108aa4e327fSDmitry Baryshkov * Example 3: SAW2 with the bundled regulator definition. 109aa4e327fSDmitry Baryshkov */ 110aa4e327fSDmitry Baryshkov power-manager@2089000 { 111aa4e327fSDmitry Baryshkov compatible = "qcom,apq8064-saw2-v1.1-cpu", "qcom,saw2"; 112aa4e327fSDmitry Baryshkov reg = <0x02089000 0x1000>, <0x02009000 0x1000>; 113aa4e327fSDmitry Baryshkov 114aa4e327fSDmitry Baryshkov regulator { 115aa4e327fSDmitry Baryshkov regulator-min-microvolt = <850000>; 116aa4e327fSDmitry Baryshkov regulator-max-microvolt = <1300000>; 117aa4e327fSDmitry Baryshkov }; 118aa4e327fSDmitry Baryshkov }; 119c9491a16SDmitry Baryshkov... 120