【RK3576】【Android14】PMIC电源管理
获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:
【RK3576】Android 14 驱动开发实战指南
概述
RK3576搭载RK806,是一款高性能 PMIC。
从使用者的角度看,RK806 的功能概况起来可以分为 3 个部分:
1. regulator 功能:控制各路 DCDC、LDO 电源状态;
2. gpio 功能:有3个IO可用,可以控制整个PMIC进待机,也可以单独分给指定电源进待机,也可当 普通 gpio 使用;
3. pwrkey 功能:检测 power 按键的按下/释放,可以为 AP 节省一个 gpio。
硬件接口
RK806上几个关键硬件引脚
引脚名称 方向 主要功能 实现的具体能力 PWRON 输入 开机触发 这是RK806的开机触发引脚。通常连接至RK3576的某个GPIO或专用的电源按键检测电路,可以实现系统开/关机功能 RESETB 输出 系统复位 这是RK806输出的系统复位信号。它连接到RK3576的nRESET引脚或其他需要复位的芯片 INT 输出 中断请求 事件告警、紧急处理(如过热保护)。中断输出引脚。用于RK806主动向RK3576报告紧急或异步事件 PWRCTRL1/2/3 输出 电源时序控制 定制化上电/断电序列,控制外部电源芯片。是可编程的通用输出控制引脚。 EXT_EN 输出 外部设备使能 控制特定外围模块的电源。这是一个专用的外部设备使能引脚。其功能与PWRCTRL引脚类似,但通常是预先设计用于特定用途
驱动开发
DTS配置
rk806-pmic相关的dts配置:
&i2c1 {status = "okay"; /* 启用 I2C1 总线 */rk806: pmic@23 {compatible = "rockchip,rk806"; /* 设备兼容性标识,驱动匹配依据 */reg = <0x23>; /* I2C 设备地址 */interrupt-parent = <&gpio0>; /* 中断父节点为 GPIO0 */interrupts = <6 8>; /* 中断引脚配置:GPIO0_A6,高电平触发 */pinctrl-names = "default", "pmic-power-off"; /* 引脚控制状态命名 */pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, <&rk806_dvs2_null>, <&rk806_dvs3_null>; /* 默认引脚状态 */pinctrl-1 = <&rk806_dvs1_pwrdn>; /* 电源关闭时的引脚状态 *//* 电压与温度保护阈值 */low_voltage_threshold = <3000>; /* 低电压阈值(单位:mV) */shutdown_voltage_threshold = <2700>; /* 强制关机电压阈值 */shutdown_temperture_threshold = <160>; /* 过热关机温度(单位:℃) */hotdie_temperture_threshold = <115>; /* 高温警告阈值 *//* 关机序列配置(控制 PMIC 内部电源轨的关闭顺序) */shutdown-sequence = <2 2 2 0 2 0 2 1 1 22 2 2 2 21 0 0 0 0 2>;/* VBAT 关机序列(电池供电场景) */vb-shutdown-sequence = <2 2 2 0 2 0 2 0 0 22 2 2 2 20 0 0 0 0 2>;pmic-reset-func = <1>; /* PMIC 复位功能使能 */buck5-feedback-disable; /* 禁用 Buck5 的反馈引脚 *//* 电源输入配置(定义 PMIC 的输入电源源) */vcc1-supply = <&vcc_sys>; /* 主系统电源 */vcc2-supply = <&vcc_sys>;vcc3-supply = <&vcc_sys>;vcc4-supply = <&vcc_sys>;vcc5-supply = <&vcc_sys>;vcc6-supply = <&vcc_sys>;vcc7-supply = <&vcc_sys>;vcc8-supply = <&vcc_sys>;vcc9-supply = <&vcc_sys>;vcc10-supply = <&vcc_sys>;vcc11-supply = <&vcc_2v0_pldo_s3>; /* 2.0V PLDO 电源 */vcc12-supply = <&vcc_sys>;vcc13-supply = <&vcc_1v1_nldo_s3>; /* 1.1V NLDO 电源 */vcc14-supply = <&vcc_1v1_nldo_s3>;vcca-supply = <&vcc_sys>;pwrkey {status = "okay"; /* 启用物理电源键功能 */};pinctrl_rk806: pinctrl_rk806 {gpio-controller;#gpio-cells = <2>;/* DVS(动态电压调节)引脚功能配置,用于电源状态切换 */rk806_dvs1_null: rk806_dvs1_null {pins = "gpio_pwrctrl2";function = "pin_fun0"; /* 默认功能 */};rk806_dvs1_slp: rk806_dvs1_slp {pins = "gpio_pwrctrl1";function = "pin_fun1"; /* 睡眠模式 */};rk806_dvs1_pwrdn: rk806_dvs1_pwrdn {pins = "gpio_pwrctrl1";function = "pin_fun2"; /* 电源关闭模式 */};/* 其他 DVS 引脚配置省略,但实际需根据硬件设计填写 */};regulators {/* 以下为关键电源轨配置,影响 CPU、GPU、内存等核心组件 */vdd_cpu_big_s0: DCDC_REG1 {regulator-always-on; /* 始终开启(关键电源) */regulator-boot-on; /* 启动时开启 */regulator-init-microvolt = <850000>; /* 初始电压 */regulator-min-microvolt = <550000>; /* 最小电压 */regulator-max-microvolt = <950000>; /* 最大电压 */regulator-ramp-delay = <12500>; /* 电压切换延迟(ns) */regulator-name = "vdd_cpu_big_s0"; /* 为大核 CPU 供电 */regulator-state-mem {regulator-off-in-suspend; /* 休眠时关闭 */};};vdd_npu_s0: DCDC_REG2 {regulator-boot-on;regulator-min-microvolt = <550000>;regulator-max-microvolt = <950000>;regulator-name = "vdd_npu_s0"; /* NPU 电源 */regulator-state-mem {regulator-off-in-suspend;};};/* 其他电源轨配置需类似标注,尤其是:- vdd_cpu_lit_s0(小核 CPU)- vdd_gpu_s0(GPU)- vdd_ddr_s0(内存)- 常开电源(如 vcc_3v3_s3、vcc_1v8_s3)*/};};
};