RK817 Power Management Integrated Circuit Required properties: - compatible: "rockchip,rk817" - reg: I2C slave address - interrupt-parent: The parent interrupt controller. - interrupts: the interrupt outputs of the controller. - #clock-cells: from common clock binding; shall be set to 1 (multiple clock outputs). See for clock IDs. Optional properties: - clock-output-names: From common clock binding to override the default output clock name - rockchip,system-power-controller: Telling whether or not this pmic is controlling the system power. - vcc1-supply: The input supply for DCDC_REG1 - vcc2-supply: The input supply for DCDC_REG2 - vcc3-supply: The input supply for DCDC_REG3 - vcc4-supply: The input supply for DCDC_REG4 - vcc5-supply: The input supply for LDO_REG1, LDO_REG2, LDO_REG3 - vcc6-supply: The input supply for LDO_REG4, LDO_REG5, LDO_REG6 - vcc7-supply: The input supply for LDO_REG7, LDO_REG8, LDO_REG9 - vcc8-supply: The input supply for BOOST - vcc9-supply: The input supply for OTG_SWITCH Regulators: All the regulators of RK817 to be instantiated shall be listed in a child node named 'regulators'. Each regulator is represented by a child node of the 'regulators' node. regulator-name { /* standard regulator bindings here */ }; Following regulators of the RK817 PMIC block are supported. Note that the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO number as described in RK808 datasheet. - DCDC_REGn - valid values for n are 1 to 4. - LDO_REGn - valid values for n are 1 to 9. There are three pins needed config, named "gpio_ts" "gpio_gt" "gpio_slp". The gpio_gt and gpio_ts pins support the gpio function. For using a gpio function, dtsi need the following info: pinctrl-names = "default"; pinctrl-0 = <&rk817_ts_gpio1>, <&rk817_gt_gpio2>; gpios = <&pinctrl_rk8xx 1 GPIO_ACTIVE_HIGH>, <&pinctrl_rk8xx 2 GPIO_ACTIVE_HIGH>; The gpio_slp pin is for controlling the pmic states, as below: reset power down sleep Standard regulator bindings are used inside regulator subnodes. Check Documentation/devicetree/bindings/regulator/regulator.txt for more details Example: rk817: pmic@20 { compatible = "rockchip,rk817"; reg = <0x20>; interrupt-parent = <&gpio0>; interrupts = <7 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default", "pmic-sleep", "pmic-power-off", "pmic-reset"; pinctrl-0 = <&pmic_int>; pinctrl-1 = <&soc_slppin_slp>, <&rk817_slppin_slp>; pinctrl-2 = <&soc_slppin_gpio>, <&rk817_slppin_pwrdn>; pinctrl-3 = <&soc_slppin_rst>, <&rk817_slppin_rst>; rockchip,system-power-controller; wakeup-source; #clock-cells = <1>; clock-output-names = "rk808-clkout1", "rk808-clkout2"; vcc1-supply = <&vccsys>; vcc2-supply = <&vccsys>; vcc3-supply = <&vccsys>; vcc4-supply = <&vccsys>; vcc5-supply = <&vccsys>; vcc6-supply = <&vccsys>; vcc7-supply = <&vcc_3v0>; vcc8-supply = <&vccsys>; vcc9-supply = <&dcdc_boost>; pwrkey { status = "okay"; }; pinctrl_rk8xx: pinctrl_rk8xx { gpio-controller; #gpio-cells = <2>; rk817_ts_gpio1: rk817_ts_gpio1 { pins = "gpio_ts"; function = "pin_fun1"; /* output-low; */ /* input-enable; */ }; rk817_gt_gpio2: rk817_gt_gpio2 { pins = "gpio_gt"; function = "pin_fun1"; }; rk817_pin_ts: rk817_pin_ts { pins = "gpio_ts"; function = "pin_fun0"; }; rk817_pin_gt: rk817_pin_gt { pins = "gpio_gt"; function = "pin_fun0"; }; rk817_slppin_null: rk817_slppin_null { pins = "gpio_slp"; function = "pin_fun0"; }; rk817_slppin_slp: rk817_slppin_slp { pins = "gpio_slp"; function = "pin_fun1"; }; rk817_slppin_pwrdn: rk817_slppin_pwrdn { pins = "gpio_slp"; function = "pin_fun2"; }; rk817_slppin_rst: rk817_slppin_rst { pins = "gpio_slp"; function = "pin_fun3"; }; }; regulators { vdd_logic: DCDC_REG1 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <950000>; regulator-max-microvolt = <1350000>; regulator-ramp-delay = <6001>; regulator-initial-mode = <0x1>; regulator-name = "vdd_logic"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <950000>; }; }; vdd_arm: DCDC_REG2 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <950000>; regulator-max-microvolt = <1350000>; regulator-ramp-delay = <6001>; regulator-initial-mode = <0x1>; regulator-name = "vdd_arm"; regulator-state-mem { regulator-off-in-suspend; regulator-suspend-microvolt = <950000>; }; }; vcc_ddr: DCDC_REG3 { regulator-always-on; regulator-boot-on; regulator-initial-mode = <0x1>; regulator-name = "vcc_ddr"; regulator-state-mem { regulator-on-in-suspend; }; }; vcc_3v0: DCDC_REG4 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-initial-mode = <0x1>; regulator-name = "vcc_3v0"; regulator-state-mem { regulator-off-in-suspend; regulator-suspend-microvolt = <3000000>; }; }; vcc2v5_ddr: LDO_REG1 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; regulator-name = "vcc2v5_ddr"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <2500000>; }; }; vcc1v8_soc: LDO_REG2 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-name = "vcc1v8_soc"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1800000>; }; }; vdd1v0_soc: LDO_REG3 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; regulator-name = "vcc1v0_soc"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1000000>; }; }; vcc3v0_pmu: LDO_REG4 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-name = "vcc3v0_pmu"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3000000>; }; }; vccio_sd: LDO_REG5 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vccio_sd"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3300000>; }; }; vcc_sd: LDO_REG6 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc_sd"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3300000>; }; }; vcc2v8_dvp: LDO_REG7 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-name = "vcc2v8_dvp"; regulator-state-mem { regulator-off-in-suspend; regulator-suspend-microvolt = <2800000>; }; }; vcc1v8_dvp: LDO_REG8 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-name = "vcc1v8_dvp"; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1800000>; }; }; vdd1v5_dvp: LDO_REG9 { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1500000>; regulator-max-microvolt = <1500000>; regulator-name = "vdd1v5_dvp"; regulator-state-mem { regulator-off-in-suspend; regulator-suspend-microvolt = <1500000>; }; }; dcdc_boost: BOOST { regulator-always-on; regulator-boot-on; regulator-min-microvolt = <4700000>; regulator-max-microvolt = <5400000>; regulator-name = "boost"; }; otg_switch: OTG_SWITCH { regulator-boot-on; regulator-name = "otg_switch"; }; }; battery { compatible = "rk817,battery"; ocv_table = <3500 3625 3685 3697 3718 3735 3748 3760 3774 3788 3802 3816 3834 3853 3877 3908 3946 3975 4018 4071 4106>; design_capacity = <2500>; design_qmax = <2750>; bat_res = <100>; sleep_enter_current = <300>; sleep_exit_current = <300>; sleep_filter_current = <100>; power_off_thresd = <3500>; zero_algorithm_vol = <3850>; max_soc_offset = <60>; monitor_sec = <5>; sample_res = <10>; virtual_power = <1>; }; charger { compatible = "rk817,charger"; min_input_voltage = <4500>; max_input_current = <1500>; max_chrg_current = <1300>; max_chrg_voltage = <4200>; chrg_term_mode = <1>; chrg_finish_cur = <300>; virtual_power = <0>; dc_det_adc = <0>; extcon = <&u2phy>; }; rk817_codec: codec { #sound-dai-cells = <0>; compatible = "rockchip,rk817-codec"; clocks = <&cru SCLK_I2S1_OUT>; clock-names = "mclk"; pinctrl-names = "default"; pinctrl-0 = <&i2s1_2ch_mclk>; hp-volume = <20>; spk-volume = <3>; status = "okay"; }; }