From ebd2d10ede98423e1618a094d5feca29775a4588 Mon Sep 17 00:00:00 2001 From: David Collins Date: Thu, 9 Jan 2020 16:27:20 -0800 Subject: [PATCH] ARM: dts: qcom: switch to I2C control of PM8008 PMIC regulators for Lahaina Add support for managing the PM8008I and PM8008J chips via I2C. Replace the stub-regulator device nodes for these PMICs with subnodes inside of the respective I2C devices. This ensures that consumers are able to modify the physical state of these PMIC regulators. Change-Id: Ieb4976ecd8818c7515c2fbf61c754518215fd5bd --- qcom/lahaina-pinctrl.dtsi | 28 +++++ qcom/lahaina-pmic-overlay.dtsi | 210 +++++++++++++++++++++++++++++++++ qcom/lahaina-regulators.dtsi | 115 ------------------ qcom/lahaina-rumi.dtsi | 4 + 4 files changed, 242 insertions(+), 115 deletions(-) diff --git a/qcom/lahaina-pinctrl.dtsi b/qcom/lahaina-pinctrl.dtsi index f8b52bf5aea6..073026aac958 100644 --- a/qcom/lahaina-pinctrl.dtsi +++ b/qcom/lahaina-pinctrl.dtsi @@ -1534,6 +1534,34 @@ }; }; + pm8008i_active: pm8008i_active { + mux { + pins = "gpio33"; + function = "gpio"; + }; + + config { + pins = "gpio33"; + bias-disable; + output-high; + drive-strength = <2>; + }; + }; + + pm8008j_active: pm8008j_active { + mux { + pins = "gpio35"; + function = "gpio"; + }; + + config { + pins = "gpio35"; + bias-disable; + output-high; + drive-strength = <2>; + }; + }; + pcie0 { pcie0_perst_default: pcie0_perst_default { mux { diff --git a/qcom/lahaina-pmic-overlay.dtsi b/qcom/lahaina-pmic-overlay.dtsi index 97894d30dd64..a1a3bdd75643 100644 --- a/qcom/lahaina-pmic-overlay.dtsi +++ b/qcom/lahaina-pmic-overlay.dtsi @@ -18,3 +18,213 @@ }; }; }; + +&qupv3_se13_i2c { + #address-cells = <1>; + #size-cells = <0>; + status = "ok"; + + pm8008i@8 { + compatible = "qcom,i2c-pmic"; + reg = <0x8>; + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&pm8008i_active>; + + pm8008-chip@900 { + compatible = "qcom,pm8008-chip"; + reg = <0x900>; + + PM8008I_EN: qcom,pm8008-chip-en { + regulator-name = "pm8008i-chip-en"; + }; + }; + + qcom,revid@100 { + compatible = "qcom,qpnp-revid"; + reg = <0x100>; + }; + }; + + pm8008i@9 { + compatible = "qcom,i2c-pmic"; + reg = <0x9>; + #address-cells = <1>; + #size-cells = <0>; + + qcom,pm8008i-regulator { + compatible = "qcom,pm8008-regulator"; + #address-cells = <1>; + #size-cells = <0>; + + pm8008_en-supply = <&PM8008I_EN>; + vdd_l1_l2-supply = <&S12B>; + vdd_l3_l4-supply = <&BOB>; + vdd_l5-supply = <&S1C>; + vdd_l6-supply = <&BOB>; + vdd_l7-supply = <&BOB>; + + L1I: pm8008i_l1: regulator@4000 { + reg = <0x4000>; + regulator-name = "pm8008i_l1"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1104000>; + qcom,min-dropout-voltage = <224000>; + qcom,hpm-min-load = <30000>; + }; + + L2I: pm8008i_l2: regulator@4100 { + reg = <0x4100>; + regulator-name = "pm8008i_l2"; + regulator-min-microvolt = <944000>; + regulator-max-microvolt = <1152000>; + qcom,min-dropout-voltage = <150000>; + qcom,hpm-min-load = <30000>; + }; + + L3I: pm8008i_l3: regulator@4200 { + reg = <0x4200>; + regulator-name = "pm8008i_l3"; + regulator-min-microvolt = <2696000>; + regulator-max-microvolt = <3000000>; + qcom,min-dropout-voltage = <200000>; + }; + + L4I: pm8008i_l4: regulator@4300 { + reg = <0x4300>; + regulator-name = "pm8008i_l4"; + regulator-min-microvolt = <2696000>; + regulator-max-microvolt = <2904000>; + qcom,min-dropout-voltage = <200000>; + }; + + L5I: pm8008i_l5: regulator@4400 { + reg = <0x4400>; + regulator-name = "pm8008i_l5"; + regulator-min-microvolt = <1696000>; + regulator-max-microvolt = <1800000>; + qcom,min-dropout-voltage = <70000>; + }; + + L6I: pm8008i_l6: regulator@4500 { + reg = <0x4500>; + regulator-name = "pm8008i_l6"; + regulator-min-microvolt = <2696000>; + regulator-max-microvolt = <2904000>; + qcom,min-dropout-voltage = <200000>; + }; + + L7I: pm8008i_l7: regulator@4600 { + reg = <0x4600>; + regulator-name = "pm8008i_l7"; + regulator-min-microvolt = <2696000>; + regulator-max-microvolt = <3000000>; + qcom,min-dropout-voltage = <200000>; + }; + }; + }; + + pm8008j@c { + compatible = "qcom,i2c-pmic"; + reg = <0xc>; + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&pm8008j_active>; + + pm8008-chip@900 { + compatible = "qcom,pm8008-chip"; + reg = <0x900>; + + PM8008J_EN: qcom,pm8008-chip-en { + regulator-name = "pm8008j-chip-en"; + }; + }; + + qcom,revid@100 { + compatible = "qcom,qpnp-revid"; + reg = <0x100>; + }; + }; + + pm8008j@d { + compatible = "qcom,i2c-pmic"; + reg = <0xd>; + #address-cells = <1>; + #size-cells = <0>; + + qcom,pm8008j-regulator { + compatible = "qcom,pm8008-regulator"; + #address-cells = <1>; + #size-cells = <0>; + + pm8008_en-supply = <&PM8008J_EN>; + vdd_l1_l2-supply = <&S12B>; + vdd_l3_l4-supply = <&S1C>; + vdd_l5-supply = <&BOB>; + vdd_l6-supply = <&BOB>; + vdd_l7-supply = <&BOB>; + + L1J: pm8008j_l1: regulator@4000 { + reg = <0x4000>; + regulator-name = "pm8008j_l1"; + regulator-min-microvolt = <944000>; + regulator-max-microvolt = <1152000>; + qcom,min-dropout-voltage = <100000>; + qcom,hpm-min-load = <30000>; + }; + + L2J: pm8008j_l2: regulator@4100 { + reg = <0x4100>; + regulator-name = "pm8008j_l2"; + regulator-min-microvolt = <944000>; + regulator-max-microvolt = <1056000>; + qcom,min-dropout-voltage = <225000>; + qcom,hpm-min-load = <30000>; + }; + + L3J: pm8008j_l3: regulator@4200 { + reg = <0x4200>; + regulator-name = "pm8008j_l3"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + qcom,min-dropout-voltage = <70000>; + }; + + L4J: pm8008j_l4: regulator@4300 { + reg = <0x4300>; + regulator-name = "pm8008j_l4"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + qcom,min-dropout-voltage = <70000>; + }; + + L5J: pm8008j_l5: regulator@4400 { + reg = <0x4400>; + regulator-name = "pm8008j_l5"; + regulator-min-microvolt = <2696000>; + regulator-max-microvolt = <2904000>; + qcom,min-dropout-voltage = <200000>; + }; + + L6J: pm8008j_l6: regulator@4500 { + reg = <0x4500>; + regulator-name = "pm8008j_l6"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + qcom,min-dropout-voltage = <200000>; + }; + + L7J: pm8008j_l7: regulator@4600 { + reg = <0x4600>; + regulator-name = "pm8008j_l7"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3600000>; + qcom,min-dropout-voltage = <200000>; + }; + }; + }; +}; diff --git a/qcom/lahaina-regulators.dtsi b/qcom/lahaina-regulators.dtsi index 470e2575ff7e..7bb79d3037e8 100644 --- a/qcom/lahaina-regulators.dtsi +++ b/qcom/lahaina-regulators.dtsi @@ -876,121 +876,6 @@ }; }; -/* Stub regulators: */ -/ { - L1I: pm8008i_l1: regulator-pm8008i-l1 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008i_l1"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1200000>; - qcom,hpm-min-load = <30000>; - }; - - L2I: pm8008i_l2: regulator-pm8008i-l2 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008i_l2"; - regulator-min-microvolt = <950000>; - regulator-max-microvolt = <1150000>; - qcom,hpm-min-load = <30000>; - }; - - L3I: pm8008i_l3: regulator-pm8008i-l3 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008i_l3"; - regulator-min-microvolt = <2700000>; - regulator-max-microvolt = <3000000>; - qcom,hpm-min-load = <10000>; - }; - - L4I: pm8008i_l4: regulator-pm8008i-l4 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008i_l4"; - regulator-min-microvolt = <2700000>; - regulator-max-microvolt = <2900000>; - qcom,hpm-min-load = <10000>; - }; - - L5I: pm8008i_l5: regulator-pm8008i-l5 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008i_l5"; - regulator-min-microvolt = <1700000>; - regulator-max-microvolt = <1900000>; - qcom,hpm-min-load = <10000>; - }; - - L6I: pm8008i_l6: regulator-pm8008i-l6 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008i_l6"; - regulator-min-microvolt = <2700000>; - regulator-max-microvolt = <2900000>; - qcom,hpm-min-load = <10000>; - }; - - L7I: pm8008i_l7: regulator-pm8008i-l7 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008i_l7"; - regulator-min-microvolt = <2700000>; - regulator-max-microvolt = <3000000>; - qcom,hpm-min-load = <10000>; - }; - - L1J: pm8008j_l1: regulator-pm8008j-l1 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008j_l1"; - regulator-min-microvolt = <950000>; - regulator-max-microvolt = <1150000>; - qcom,hpm-min-load = <30000>; - }; - - L2J: pm8008j_l2: regulator-pm8008j-l2 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008j_l2"; - regulator-min-microvolt = <950000>; - regulator-max-microvolt = <1150000>; - qcom,hpm-min-load = <30000>; - }; - - L3J: pm8008j_l3: regulator-pm8008j-l3 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008j_l3"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - qcom,hpm-min-load = <10000>; - }; - - L4J: pm8008j_l4: regulator-pm8008j-l4 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008j_l4"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - qcom,hpm-min-load = <10000>; - }; - - L5J: pm8008j_l5: regulator-pm8008j-l5 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008j_l5"; - regulator-min-microvolt = <2700000>; - regulator-max-microvolt = <2900000>; - qcom,hpm-min-load = <10000>; - }; - - L6J: pm8008j_l6: regulator-pm8008j-l6 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008j_l6"; - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; - qcom,hpm-min-load = <10000>; - }; - - L7J: pm8008j_l7: regulator-pm8008j-l7 { - compatible = "qcom,stub-regulator"; - regulator-name = "pm8008j_l7"; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3600000>; - qcom,hpm-min-load = <10000>; - }; -}; - &soc { refgen: refgen-regulator@88e7000 { compatible = "qcom,refgen-kona-regulator"; diff --git a/qcom/lahaina-rumi.dtsi b/qcom/lahaina-rumi.dtsi index 35a5b6e51454..015ed5ff11e1 100644 --- a/qcom/lahaina-rumi.dtsi +++ b/qcom/lahaina-rumi.dtsi @@ -107,6 +107,10 @@ }; }; +&qupv3_se13_i2c { + status = "disabled"; +}; + &gpu_cc_cx_gdsc { qcom,gds-timeout = <5000>; };