kernel PMIC及regulator

PMIC

通过查阅原理图,可知rk809挂载i2c0下面。
arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
查找设备树,找到i2c0节点,及其子节点rk809。
rk809节点里面有一个regulators子节点,这个节点就是指定PMIC各个稳压器的输出。

图. 南瑞RK3568板的PMIC原理图
在这里插入图片描述

图. 南瑞RK3568板的PMU电源树示例框图
在这里插入图片描述

vcc1~9-supply

PMIC的各个稳压器也需要提供电源,分别对应着VCC1~9。

rk809: pmic@20 {
    ......
        vcc1-supply = <&vcc3v3_sys>;
        vcc2-supply = <&vcc3v3_sys>;
        vcc3-supply = <&vcc3v3_sys>;
        vcc4-supply = <&vcc3v3_sys>;
        vcc5-supply = <&vcc3v3_sys>;
        vcc6-supply = <&vcc3v3_sys>;
        vcc7-supply = <&vcc3v3_sys>;
        vcc8-supply = <&vcc3v3_sys>;
        vcc9-supply = <&vcc3v3_sys>;
        ......
}

arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
根节点下面,已经定义了&vcc3v3_sys和&dc_12v

	dc_12v: dc-12v {
		compatible = "regulator-fixed";
		regulator-name = "dc_12v";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
	};
 	vcc3v3_sys: vcc3v3-sys {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&dc_12v>;
	};

DCDCn

arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
确保如下配置。

rk809: pmic@20 {
    ......
  		regulators {
        			vdd_logic: DCDC_REG1 {
        				regulator-always-on;
        				regulator-boot-on;
        				regulator-min-microvolt = <500000>;
        				regulator-max-microvolt = <1350000>;
        				regulator-init-microvolt = <900000>;
        				regulator-ramp-delay = <6001>;
        				regulator-initial-mode = <0x2>;
        				regulator-name = "vdd_logic";
        				regulator-state-mem {
        					regulator-off-in-suspend;
        				};
        			};
                                vcc_ddr: DCDC_REG3 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-initial-mode = <0x2>;
                                    regulator-name = "vcc_ddr";
                                    regulator-state-mem {
                                        regulator-on-in-suspend;
                                    };
                                };
                                ......
                                vcc_1v8: DCDC_REG5 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-min-microvolt = <1800000>;
                                    regulator-max-microvolt = <1800000>;
                                    regulator-name = "vcc_1v8";
                                    regulator-state-mem {
                                        regulator-off-in-suspend;
                                    };
                                };
   ......
           }
}

这里需要注意,DCDC3 这路电源比较特殊,不能通过寄存器修改电压(所以没有regulator-min-microvolt和regulator-max-microvolt),只能通过外部电路的分压电阻进行调节,所以如果需要修改电压请修改外围硬件,在 Rockchip 的方案上一般作为 VCC_DDR 使用。

LDOn

arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
确保如下配置。

取消LDO0、LDO4、LDO5、LDO9

rk809: pmic@20 {
    ......
  		regulators {
                                // vdda0v9_image: LDO_REG1 {
                                //  regulator-boot-on;
                                //  regulator-always-on;
                                //  regulator-min-microvolt = <900000>;
                                //  regulator-max-microvolt = <900000>;
                                //  regulator-name = "vdda0v9_image";
                                //  regulator-state-mem {
                                //      regulator-off-in-suspend;
                                //  };
                                // };
                    
                                vdda_0v9: LDO_REG2 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-min-microvolt = <900000>;
                                    regulator-max-microvolt = <900000>;
                                    regulator-name = "vdda_0v9";
                                    regulator-state-mem {
                                        regulator-off-in-suspend;
                                    };
                                };
                    
                                vdda0v9_pmu: LDO_REG3 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-min-microvolt = <900000>;
                                    regulator-max-microvolt = <900000>;
                                    regulator-name = "vdda0v9_pmu";
                                    regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-suspend-microvolt = <900000>;
                                    };
                                };
                    
                                // vccio_acodec: LDO_REG4 {
                                //  regulator-always-on;
                                //  regulator-boot-on;
                                //  regulator-min-microvolt = <3300000>;
                                //  regulator-max-microvolt = <3300000>;
                                //  regulator-name = "vccio_acodec";
                                //  regulator-state-mem {
                                //      regulator-off-in-suspend;
                                //  };
                                // };
                    
                                // vccio_sd: LDO_REG5 {
                                //  regulator-always-on;
                                //  regulator-boot-on;
                                //  regulator-min-microvolt = <1800000>;
                                //  regulator-max-microvolt = <3300000>;
                                //  regulator-name = "vccio_sd";
                                //  regulator-state-mem {
                                //      regulator-off-in-suspend;
                                //  };
                                // };
                    
                                vcc3v3_pmu: LDO_REG6 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-min-microvolt = <3300000>;
                                    regulator-max-microvolt = <3300000>;
                                    regulator-name = "vcc3v3_pmu";
                                    regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-suspend-microvolt = <3300000>;
                                    };
                                };
                    
                                vcca_1v8: LDO_REG7 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-min-microvolt = <1800000>;
                                    regulator-max-microvolt = <1800000>;
                                    regulator-name = "vcca_1v8";
                                    regulator-state-mem {
                                        regulator-off-in-suspend;
                                    };
                                };
                    
                                vcca1v8_pmu: LDO_REG8 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-min-microvolt = <1800000>;
                                    regulator-max-microvolt = <1800000>;
                                    regulator-name = "vcca1v8_pmu";
                                    regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-suspend-microvolt = <1800000>;
                                    };
                                };
                    
                                // vcca1v8_image: LDO_REG9 {
                                //  regulator-always-on;
                                //  regulator-boot-on;
                                //  regulator-min-microvolt = <1800000>;
                                //  regulator-max-microvolt = <1800000>;
                                //  regulator-name = "vcca1v8_image";
                                //  regulator-state-mem {
                                //      regulator-off-in-suspend;
                                //  };
                                // };
   ......
           }
}

SWOUTn

arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
确保如下配置,取消SWOUT2。

rk809: pmic@20 {
    ......
  		regulators {                    
                                vcc_3v3: SWITCH_REG1 {
                                    regulator-always-on;
                                    regulator-boot-on;
                                    regulator-name = "vcc_3v3";
                                    regulator-state-mem {
                                        regulator-off-in-suspend;
                                    };
                                };
                    
                                // vcc3v3_sd: SWITCH_REG2 {
                                //  regulator-always-on;
                                //  regulator-boot-on;
                                //  regulator-name = "vcc3v3_sd";
                                //  regulator-state-mem {
                                //      regulator-off-in-suspend;
                                //  };
                                // };
   ......
           }
}

SOC IO-Domain

arch/arm64/boot/dts/rockchip/rk3568.dtsi

    pmugrf: syscon@fdc20000 {
        compatible = "rockchip,rk3568-pmugrf", "syscon", "simple-mfd";
        reg = <0x0 0xfdc20000 0x0 0x10000>;


        pmu_io_domains: io-domains {
            compatible = "rockchip,rk3568-pmu-io-voltage-domain";
            status = "disabled";
        };
....
    };

arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi

&pmu_io_domains {
	status = "okay";
	pmuio1-supply = <&vcc3v3_pmu>;
	pmuio2-supply = <&vcc3v3_pmu>;
	vccio1-supply = <&vcc_3v3>;
	vccio2-supply = <&vcc_3v3>;
	vccio3-supply = <&vcc_3v3>;
	vccio4-supply = <&vcc_1v8>;
	vccio5-supply = <&vcc_3v3>;
	vccio6-supply = <&vcc_1v8>;
	vccio7-supply = <&vcc_3v3>;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值