这个设备树片段是 RK3562 开发板中 PMIC(电源管理集成电路)RK809 的完整配置,通过 I2C0 总线与 SoC 通信。RK809 不仅提供系统各级电压,还集成了 电源按键管理、GPIO 扩展、音频 Codec 等功能。下面对每个模块进行详细解读。


1. 总线节点 &i2c0

&i2c0 {
    status = "okay";
    rk809: pmic@20 { ... };
};
  • 作用:启用 I2C0 控制器,并在地址 0x20 上挂载 RK809 设备。
  • 背景:RK809 是 Rockchip 平台常用的 PMIC,通过 I2C 配置其寄存器,实现电压调节、上电时序、休眠唤醒等功能。

2. RK809 基础属性

compatible = "rockchip,rk809";
reg = <0x20>;
interrupt-parent = <&gpio0>;
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
  • compatible:匹配内核驱动 rk809(同时兼容 rk817 系列)。
  • reg:I2C 从设备地址 0x20。
  • interrupt-parent / interrupts:PMIC 的中断输出引脚连接到 GPIO0 的 3 号引脚(即 GPIO0_A3),低电平触发。用于上报按键、电源事件、过温等异常。

引脚控制(pinctrl)与睡眠模式

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_gpio>, <&rk817_slppin_rst>;
rockchip,system-power-controller;
wakeup-source;
  • 不同 pinctrl 状态:用于系统在不同电源状态(正常、休眠、关机、复位)时配置 PMIC 的 SLPPIN 引脚功能。具体:
    • default:PMIC 中断引脚功能(pmic_int)。
    • pmic-sleep:SoC 和 PMIC 都进入睡眠模式。
    • pmic-power-off:SoC 的 SLPPIN 作为 GPIO,PMIC 收到后执行关机。
    • pmic-reset:SoC 拉低 SLPPIN 触发 PMIC 复位。
  • rockchip,system-power-controller:表示该 PMIC 负责整个系统的电源管理(关机、重启)。
  • wakeup-source:允许 PMIC 中断唤醒系统(例如按电源键唤醒)。

时钟输出

#clock-cells = <1>;
clock-output-names = "rk808-clkout1", "rk808-clkout2";
  • RK809 可以提供两个时钟输出(如 32.768kHz 给 RTC,或 24MHz 给 Codec)。这里声明为时钟提供者,其他节点可通过 clocks = <&rk809 0> 引用。

复位与电源使能行为

pmic-reset-func = <0>;
not-save-power-en = <1>;
  • pmic-reset-func = <0>:复位时仅复位 PMIC 寄存器,不复位 PMIC 本身(另一种选项是复位 PMIC 芯片)。
  • not-save-power-en = <1>:在 U-Boot 阶段不保存 PMIC_POWER_EN 寄存器(避免干扰内核电源状态)。

输入电源供应

vcc1-supply = <&vcc3v3_sys>;
...
vcc9-supply = <&vcc3v3_sys>;
  • RK809 内部有多路 DCDC/LDO,它们的输入源(VIN)都来自板上的 vcc3v3_sys(3.3V 系统电源)。这保证了 PMIC 自身能正常工作。

3. 子功能模块

3.1 电源按键(pwrkey)

pwrkey {
    status = "okay";
};
  • 启用 RK809 内置的电源按键检测功能。当按下开发板上的 POWER 键时,PMIC 会通过中断通知 SoC,实现长按关机、短按休眠/唤醒等功能。

3.2 PMIC GPIO 与引脚功能配置(pinctrl_rk8xx)

pinctrl_rk8xx: pinctrl_rk8xx {
    gpio-controller;
    #gpio-cells = <2>;
    rk817_slppin_slp: rk817_slppin_slp { ... };
    ...
};
  • 声明 RK809 本身可以作为 GPIO 控制器(通常提供 1 个 GPIO 引脚,即 SLPPIN 复用)。
  • 定义了四种 SLPPIN 功能模式(pin_fun0 ~ pin_fun3),分别对应 null、sleep、power-off、reset。SoC 可以根据系统状态动态切换。

3.3 稳压器(regulators)

RK809 内部包含多个 DCDC 和 LDO,为 SoC 的不同模块供电。每个 regulator 节点都有标准属性:

属性 含义
regulator-always-on 始终使能,即使没有驱动使用也不关闭。
regulator-boot-on 在引导阶段就要使能。
regulator-min/max-microvolt 电压范围。
regulator-init-microvolt 启动时设置的电压。
regulator-ramp-delay 电压爬升时间(微秒)。
regulator-initial-mode DCDC 工作模式(0x2 通常为 PWM 模式,效率高但纹波小)。
regulator-state-mem 系统挂起到内存(suspend-to-RAM)时的行为,如 off-in-suspendon-in-suspend
关键电源域说明
名称 类型 作用
vdd_logic DCDC_REG1 逻辑电路(大部分外设)供电,0.5V~1.35V,默认 0.95V。
vdd_cpu DCDC_REG2 CPU 核心供电,0.5V~1.35V,默认 1.05V。
vcc_ddr DCDC_REG3 DDR 内存控制器和 PHY 供电(通常固定 1.1V 或 1.2V)。
vdd_gpu DCDC_REG4 GPU 核心供电,0.5V~1.35V,默认 0.9V。
vcc2v8_dvp LDO1 摄像头(DVP 接口)2.8V 电源。
vdda_0v9 LDO2 模拟音频 0.9V 电源。
vdda0v9_pmu LDO3 PMU 域模拟 0.9V,休眠时保持供电。
vccio_acodec LDO4 音频 Codec IO 电源(3.0V)。
vccio_sd LDO5 SD 卡 IO 电源(1.8V/3.3V 动态切换)。
vcc3v3_pmu LDO6 PMU 域 3.3V 电源,休眠时保持。
vcca_1v8 LDO7 模拟 1.8V 电源(例如 PLL、HDMI)。
vcca1v8_pmu LDO8 PMU 域模拟 1.8V,休眠保持。
vcc1v8_dvp LDO9 摄像头 DVP 接口 1.8V 电源。
vcc_1v8 DCDC_REG5 数字 1.8V 主电源。
vcc_3v3 SWITCH_REG1 3.3V 开关电源(常开,为外设如 Wi-Fi 供电)。
vcc3v3_sd SWITCH_REG2 SD 卡插槽 3.3V 供电,可独立控制。

注:vcc3v3_sd 由 RK809 输出,之前设备树中 sdmmc0vmmc-supply = <&vcc3v3_sd> 即引用此处。


3.4 音频 Codec(rk809_codec)

rk809_codec: codec {
    compatible = "rockchip,rk809-codec", "rockchip,rk817-codec";
    clocks = <&mclkout_sai0>;
    clock-names = "mclk";
    assigned-clocks = <&mclkout_sai0>;
    assigned-clock-rates = <12288000>;
    pinctrl-0 = <&i2s0m0_mclk>;
    hp-volume = <20>;
    spk-volume = <3>;
    mic-in-differential;
    status = "okay";
};
  • 作用:配置 RK809 内部的音频编解码器,通过 SAI0 (I2S)接口与 SoC 连接。
  • 时钟mclkout_sai0 是 SoC 提供给 Codec 的主时钟(MCLK),频率设为 12.288MHz(常见音频采样率 48kHz 的 256 倍)。
  • 引脚i2s0m0_mclk 确保 MCLK 引脚复用正确。
  • 音量与输入
    • hp-volume = <20>:耳机输出默认音量(0~31)。
    • spk-volume = <3>:扬声器默认音量。
    • mic-in-differential:麦克风使用差分输入模式(抗干扰)。
  • 关联:此节点被 rk809_sound 节点(之前提供的文件中的 rk809-sound)引用为 rockchip,codec

4. 总结:RK809 在系统中的角色

  • 电源管理核心:为 CPU、GPU、逻辑、DDR、IO 等提供各种电压,并控制系统上下电时序。
  • 用户交互:电源按键检测,实现关机/休眠/唤醒。
  • 音频中枢:内置 Codec,与 SoC 的 SAI0 接口配合,实现耳机/麦克风/喇叭的音频输入输出。
  • 辅助功能:提供时钟输出、一个 GPIO 引脚(SLPPIN)用于 SoC 与 PMIC 的状态同步。

这个 dtsi 文件(如 rk3562-rk809.dtsi)是 RK3562 EVB 板级设备树的核心组成部分,为系统提供了完整的电源和音频基础。所有电压配置已经过 Rockchip 官方验证,开发者一般无需修改,除非更换 PMIC 或调整电压需求。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐