^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) RK816 Power Management Integrated Circuit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) - compatible: "rockchip,rk816"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) - reg: I2C slave address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) - interrupt-parent: The parent interrupt controller.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) - interrupts: the interrupt outputs of the controller.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) - #clock-cells: from common clock binding; shall be set to 1 (multiple clock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) outputs).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) - clock-output-names: From common clock binding to override the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) default output clock name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) - rockchip,system-power-controller: Telling whether or not this pmic is controlling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) the system power.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) - gpio-controller: Specifies that the node is a gpio controller when you attempt to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) use the TS pin of RK816 by GPIO general interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) - #gpio-cells: Should be two. The first cell is the GPIO number and the second cell
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) is used to specify the GPIO polarity.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) - wakeup-source: Flag to indicate this device can wake system (suspend/resume)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) - vcc1-supply: The input supply for DCDC_REG1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - vcc2-supply: The input supply for DCDC_REG2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) - vcc3-supply: The input supply for DCDC_REG3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - vcc4-supply: The input supply for DCDC_REG4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - vcc5-supply: The input supply for LDO_REG1, LDO_REG2, LDO_REG3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) - vcc6-supply: The input supply for LDO_REG4, LDO_REG5, LDO_REG6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - regulator-initial-mode: default mode to set on startup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) - regulator-initial-mode is set as:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) REGULATOR_MODE_FAST 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) REGULATOR_MODE_NORMAL 0x2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) Regulators: All the regulators of RK816 to be instantiated shall be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) listed in a child node named 'regulators'. Each regulator is represented
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) by a child node of the 'regulators' node.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) regulator-name {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) /* standard regulator bindings here */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Following regulators of the RK816 PMIC block are supported. Note that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) number as described in RK816 datasheet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) - DCDC_REGn
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) - valid values for n are 1 to 4.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) - LDO_REGn
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) - valid values for n are 1 to 6.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) Standard regulator bindings are used inside regulator subnodes. Check
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) Documentation/devicetree/bindings/regulator/regulator.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) for more details
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) Gpio, Rtc, Pwrkey: the node are represented like below. When you attempt to enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) the module, setting the "status" to be "okay", otherwise "disabled".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) rtc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) status = "okay";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) pwrkey {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) status = "okay";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) gpio {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) status = "okay";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) rk816: pmic@1a {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) compatible = "rockchip,rk816";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) status = "disabled";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) reg = <0x1a>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) clock-output-names = "xin32k", "wifibt_32kin";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) interrupt-parent = <&gpio0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) pinctrl-names = "default";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) pinctrl-0 = <&pmic_int>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) rockchip,system-power-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) wakeup-source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #clock-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) gpio-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #gpio-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) vcc1-supply = <&vcc_sys>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) vcc2-supply = <&vcc_sys>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) vcc3-supply = <&vcc_sys>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) vcc4-supply = <&vcc_sys>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) vcc5-supply = <&vcc_sys>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) vcc6-supply = <&vcc_sys>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) rtc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) status = "okay";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) pwrkey {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) status = "okay";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) gpio {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) status = "okay";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) regulators {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) vdd_cpu: DCDC_REG1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) regulator-name = "vdd_logic";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) regulator-min-microvolt = <750000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) regulator-max-microvolt = <1450000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) regulator-ramp-delay = <6001>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) regulator-initial-mode = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) regulator-off-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) vdd_gpu: DCDC_REG2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) regulator-name = "vdd_gpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) regulator-min-microvolt = <800000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) regulator-max-microvolt = <1250000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) regulator-ramp-delay = <6001>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) regulator-initial-mode = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) regulator-suspend-microvolt = <1000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) vcc_ddr: DCDC_REG3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) regulator-name = "vcc_ddr";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) regulator-initial-mode = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) vcc33_io: DCDC_REG4 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) regulator-min-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) regulator-max-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) regulator-name = "vcc33_io";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) regulator-initial-mode = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) regulator-suspend-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) vccio_pmu: LDO_REG1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) regulator-min-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) regulator-max-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) regulator-name = "vccio_pmu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) regulator-suspend-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) vcc_tp: LDO_REG2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) regulator-min-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) regulator-max-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) regulator-name = "vcc_tp";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) regulator-off-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) vdd_10: LDO_REG3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) regulator-min-microvolt = <1000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) regulator-max-microvolt = <1000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) regulator-name = "vdd_10";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) regulator-suspend-microvolt = <1000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) vcc18_lcd: LDO_REG4 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) regulator-min-microvolt = <1800000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) regulator-max-microvolt = <1800000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) regulator-name = "vcc18_lcd";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) regulator-suspend-microvolt = <1800000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) vccio_sd: LDO_REG5 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) regulator-min-microvolt = <1800000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) regulator-max-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) regulator-name = "vccio_sd";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) regulator-suspend-microvolt = <3300000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) vdd10_lcd: LDO_REG6 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) regulator-always-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) regulator-boot-on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) regulator-min-microvolt = <1000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) regulator-max-microvolt = <1000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) regulator-name = "vdd10_lcd";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) regulator-state-mem {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) regulator-on-in-suspend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) regulator-suspend-microvolt = <1000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) };