466 lines
13 KiB
Plaintext
466 lines
13 KiB
Plaintext
|
RK8XX Power Management Integrated Circuit
|
||
|
|
||
|
The rk8xx family current members:
|
||
|
rk805
|
||
|
rk808
|
||
|
rk809
|
||
|
rk817
|
||
|
rk818
|
||
|
|
||
|
Required properties:
|
||
|
- compatible: "rockchip,rk805"
|
||
|
- compatible: "rockchip,rk808"
|
||
|
- compatible: "rockchip,rk809"
|
||
|
- compatible: "rockchip,rk817"
|
||
|
- compatible: "rockchip,rk818"
|
||
|
- reg: I2C slave address
|
||
|
- interrupts: the interrupt outputs of the controller.
|
||
|
- #clock-cells: from common clock binding; shall be set to 1 (multiple clock
|
||
|
outputs). See <dt-bindings/clock/rockchip,rk808.h> 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.
|
||
|
- wakeup-source: Device can be used as a wakeup source.
|
||
|
|
||
|
Optional RK805 properties:
|
||
|
- 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 and LDO_REG2
|
||
|
- vcc6-supply: The input supply for LDO_REG3
|
||
|
|
||
|
Optional RK808 properties:
|
||
|
- 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
|
||
|
- vcc6-supply: The input supply for LDO_REG1 and LDO_REG2
|
||
|
- vcc7-supply: The input supply for LDO_REG3 and LDO_REG7
|
||
|
- vcc8-supply: The input supply for SWITCH_REG1
|
||
|
- vcc9-supply: The input supply for LDO_REG4 and LDO_REG5
|
||
|
- vcc10-supply: The input supply for LDO_REG6
|
||
|
- vcc11-supply: The input supply for LDO_REG8
|
||
|
- vcc12-supply: The input supply for SWITCH_REG2
|
||
|
- dvs-gpios: buck1/2 can be controlled by gpio dvs, this is GPIO specifiers
|
||
|
for 2 host gpio's used for dvs. The format of the gpio specifier depends in
|
||
|
the gpio controller. If DVS GPIOs aren't present, voltage changes will happen
|
||
|
very quickly with no slow ramp time.
|
||
|
|
||
|
Optional shared RK809 and RK817 properties:
|
||
|
- 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
|
||
|
|
||
|
Optional RK809 properties:
|
||
|
- vcc8-supply: The input supply for SWITCH_REG1
|
||
|
- vcc9-supply: The input supply for DCDC_REG5, SWITCH_REG2
|
||
|
|
||
|
Optional RK817 properties:
|
||
|
- clocks: The input clock for the audio codec
|
||
|
- clock-names: The clock name for the codec clock. Should be "mclk".
|
||
|
- #sound-dai-cells: Needed for the interpretation of sound dais. Should be 0.
|
||
|
|
||
|
- vcc8-supply: The input supply for BOOST
|
||
|
- vcc9-supply: The input supply for OTG_SWITCH
|
||
|
- codec: The child node for the codec to hold additional properties.
|
||
|
If no additional properties are required for the codec, this
|
||
|
node can be omitted.
|
||
|
|
||
|
- rockchip,mic-in-differential: Telling if the microphone uses differential
|
||
|
mode. Should be under the codec child node.
|
||
|
|
||
|
Optional RK818 properties:
|
||
|
- 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
|
||
|
- boost-supply: The input supply for DCDC_BOOST
|
||
|
- vcc6-supply: The input supply for LDO_REG1 and LDO_REG2
|
||
|
- vcc7-supply: The input supply for LDO_REG3, LDO_REG5 and LDO_REG7
|
||
|
- vcc8-supply: The input supply for LDO_REG4, LDO_REG6 and LDO_REG8
|
||
|
- vcc9-supply: The input supply for LDO_REG9 and SWITCH_REG
|
||
|
- h_5v-supply: The input supply for HDMI_SWITCH
|
||
|
- usb-supply: The input supply for OTG_SWITCH
|
||
|
|
||
|
Regulators: All the regulators of RK8XX 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 RK805 PMIC regulators are supported. Note that
|
||
|
the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO
|
||
|
number as described in RK805 datasheet.
|
||
|
|
||
|
- DCDC_REGn
|
||
|
- valid values for n are 1 to 4.
|
||
|
- LDO_REGn
|
||
|
- valid values for n are 1 to 3
|
||
|
|
||
|
Following regulators of the RK808 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 8.
|
||
|
- SWITCH_REGn
|
||
|
- valid values for n are 1 to 2
|
||
|
|
||
|
Following regulators of the RK809 and RK817 PMIC blocks are supported. Note that
|
||
|
the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO
|
||
|
number as described in RK809 and RK817 datasheets.
|
||
|
|
||
|
- DCDC_REGn
|
||
|
- valid values for n are 1 to 5 for RK809.
|
||
|
- valid values for n are 1 to 4 for RK817.
|
||
|
- LDO_REGn
|
||
|
- valid values for n are 1 to 9 for RK809.
|
||
|
- valid values for n are 1 to 9 for RK817.
|
||
|
- SWITCH_REGn
|
||
|
- valid values for n are 1 to 2 for RK809.
|
||
|
- BOOST for RK817
|
||
|
- OTG_SWITCH for RK817
|
||
|
|
||
|
Following regulators of the RK818 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 RK818 datasheet.
|
||
|
|
||
|
- DCDC_REGn
|
||
|
- valid values for n are 1 to 4.
|
||
|
- LDO_REGn
|
||
|
- valid values for n are 1 to 9.
|
||
|
- SWITCH_REG
|
||
|
- HDMI_SWITCH
|
||
|
- OTG_SWITCH
|
||
|
|
||
|
It is necessary to configure three pins for both the RK809 and RK817, the three
|
||
|
pins are "gpio_ts" "gpio_gt" "gpio_slp".
|
||
|
The gpio_gt and gpio_ts pins support the gpio function.
|
||
|
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:
|
||
|
rk808: pmic@1b {
|
||
|
compatible = "rockchip,rk808";
|
||
|
clock-output-names = "xin32k", "rk808-clkout2";
|
||
|
interrupt-parent = <&gpio0>;
|
||
|
interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&pmic_int &dvs_1 &dvs_2>;
|
||
|
dvs-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>,
|
||
|
<&gpio7 15 GPIO_ACTIVE_HIGH>;
|
||
|
reg = <0x1b>;
|
||
|
rockchip,system-power-controller;
|
||
|
wakeup-source;
|
||
|
#clock-cells = <1>;
|
||
|
|
||
|
vcc8-supply = <&vcc_18>;
|
||
|
vcc9-supply = <&vcc_io>;
|
||
|
vcc10-supply = <&vcc_io>;
|
||
|
vcc12-supply = <&vcc_io>;
|
||
|
vddio-supply = <&vccio_pmu>;
|
||
|
|
||
|
regulators {
|
||
|
vdd_cpu: DCDC_REG1 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <750000>;
|
||
|
regulator-max-microvolt = <1300000>;
|
||
|
regulator-name = "vdd_arm";
|
||
|
};
|
||
|
|
||
|
vdd_gpu: DCDC_REG2 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <850000>;
|
||
|
regulator-max-microvolt = <1250000>;
|
||
|
regulator-name = "vdd_gpu";
|
||
|
};
|
||
|
|
||
|
vcc_ddr: DCDC_REG3 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-name = "vcc_ddr";
|
||
|
};
|
||
|
|
||
|
vcc_io: DCDC_REG4 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-name = "vcc_io";
|
||
|
};
|
||
|
|
||
|
vccio_pmu: LDO_REG1 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-name = "vccio_pmu";
|
||
|
};
|
||
|
|
||
|
vcc_tp: LDO_REG2 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-name = "vcc_tp";
|
||
|
};
|
||
|
|
||
|
vdd_10: LDO_REG3 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <1000000>;
|
||
|
regulator-max-microvolt = <1000000>;
|
||
|
regulator-name = "vdd_10";
|
||
|
};
|
||
|
|
||
|
vcc18_lcd: LDO_REG4 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
regulator-name = "vcc18_lcd";
|
||
|
};
|
||
|
|
||
|
vccio_sd: LDO_REG5 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-name = "vccio_sd";
|
||
|
};
|
||
|
|
||
|
vdd10_lcd: LDO_REG6 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <1000000>;
|
||
|
regulator-max-microvolt = <1000000>;
|
||
|
regulator-name = "vdd10_lcd";
|
||
|
};
|
||
|
|
||
|
vcc_18: LDO_REG7 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
regulator-name = "vcc_18";
|
||
|
};
|
||
|
|
||
|
vcca_codec: LDO_REG8 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-name = "vcca_codec";
|
||
|
};
|
||
|
|
||
|
vcc_wl: SWITCH_REG1 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-name = "vcc_wl";
|
||
|
};
|
||
|
|
||
|
vcc_lcd: SWITCH_REG2 {
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
regulator-name = "vcc_lcd";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
rk817: pmic@20 {
|
||
|
compatible = "rockchip,rk817";
|
||
|
reg = <0x20>;
|
||
|
interrupt-parent = <&gpio0>;
|
||
|
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
|
||
|
clock-output-names = "rk808-clkout1", "xin32k";
|
||
|
clock-names = "mclk";
|
||
|
clocks = <&cru SCLK_I2S1_OUT>;
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>;
|
||
|
wakeup-source;
|
||
|
#clock-cells = <1>;
|
||
|
#sound-dai-cells = <0>;
|
||
|
|
||
|
vcc1-supply = <&vccsys>;
|
||
|
vcc2-supply = <&vccsys>;
|
||
|
vcc3-supply = <&vccsys>;
|
||
|
vcc4-supply = <&vccsys>;
|
||
|
vcc5-supply = <&vccsys>;
|
||
|
vcc6-supply = <&vccsys>;
|
||
|
vcc7-supply = <&vccsys>;
|
||
|
|
||
|
regulators {
|
||
|
vdd_logic: DCDC_REG1 {
|
||
|
regulator-name = "vdd_logic";
|
||
|
regulator-min-microvolt = <950000>;
|
||
|
regulator-max-microvolt = <1150000>;
|
||
|
regulator-ramp-delay = <6001>;
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-on-in-suspend;
|
||
|
regulator-suspend-microvolt = <950000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vdd_arm: DCDC_REG2 {
|
||
|
regulator-name = "vdd_arm";
|
||
|
regulator-min-microvolt = <950000>;
|
||
|
regulator-max-microvolt = <1350000>;
|
||
|
regulator-ramp-delay = <6001>;
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-off-in-suspend;
|
||
|
regulator-suspend-microvolt = <950000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc_ddr: DCDC_REG3 {
|
||
|
regulator-name = "vcc_ddr";
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-on-in-suspend;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc_3v3: DCDC_REG4 {
|
||
|
regulator-name = "vcc_3v3";
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-off-in-suspend;
|
||
|
regulator-suspend-microvolt = <3300000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc_1v8: LDO_REG2 {
|
||
|
regulator-name = "vcc_1v8";
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-on-in-suspend;
|
||
|
regulator-suspend-microvolt = <1800000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vdd_1v0: LDO_REG3 {
|
||
|
regulator-name = "vdd_1v0";
|
||
|
regulator-min-microvolt = <1000000>;
|
||
|
regulator-max-microvolt = <1000000>;
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-on-in-suspend;
|
||
|
regulator-suspend-microvolt = <1000000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc3v3_pmu: LDO_REG4 {
|
||
|
regulator-name = "vcc3v3_pmu";
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-on-in-suspend;
|
||
|
regulator-suspend-microvolt = <3300000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vccio_sd: LDO_REG5 {
|
||
|
regulator-name = "vccio_sd";
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-always-on;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-on-in-suspend;
|
||
|
regulator-suspend-microvolt = <3300000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc_sd: LDO_REG6 {
|
||
|
regulator-name = "vcc_sd";
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-boot-on;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-on-in-suspend;
|
||
|
regulator-suspend-microvolt = <3300000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc_bl: LDO_REG7 {
|
||
|
regulator-name = "vcc_bl";
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-off-in-suspend;
|
||
|
regulator-suspend-microvolt = <3300000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc_lcd: LDO_REG8 {
|
||
|
regulator-name = "vcc_lcd";
|
||
|
regulator-min-microvolt = <2800000>;
|
||
|
regulator-max-microvolt = <2800000>;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-off-in-suspend;
|
||
|
regulator-suspend-microvolt = <2800000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vcc_cam: LDO_REG9 {
|
||
|
regulator-name = "vcc_cam";
|
||
|
regulator-min-microvolt = <3000000>;
|
||
|
regulator-max-microvolt = <3000000>;
|
||
|
|
||
|
regulator-state-mem {
|
||
|
regulator-off-in-suspend;
|
||
|
regulator-suspend-microvolt = <3000000>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
rk817_codec: codec {
|
||
|
rockchip,mic-in-differential;
|
||
|
};
|
||
|
};
|