随笔十五、CPU电源管理与设备树修改

之前参考泰山派开源硬件完成了RK3566核心板的制作,通过RKDevTool工具将镜像烧录进去后,呼吸灯正常闪烁,但串口重复打印以下信息:

[   10.243449] rockchip-dmc dmc: cpu0 policy NULL
[   10.360097] rockchip-dmc dmc: cpu0 policy NULL
[   10.440113] rockchip-dmc dmc: cpu1 policy NULL
[   10.800077] rockchip-dmc dmc: cpu1 policy NULL
[   10.896787] rockchip-dmc dmc: cpu1 policy NULL
[   11.693508] rockchip-dmc dmc: cpu0 policy NULL
[   12.386800] rockchip-dmc dmc: cpu1 policy NULL
[   12.706800] rockchip-dmc dmc: cpu0 policy NULL
[   12.770133] rockchip-dmc dmc: cpu1 policy NULL
[   13.666824] rockchip-dmc dmc: cpu2 policy NULL
[   13.733432] rockchip-dmc dmc: cpu3 policy NULL
[   13.823417] rockchip-dmc dmc: cpu3 policy NULL

电源管理出了问题,DDR变频依赖CPU变频,如果CPU变频异常就会导致DDR变频失败,不断出现上述错误log。CPU变频异常一般就是CPU供电异常。比较泰山派的启动log,发现在这里出现首个不同:

FAN53555没获取到芯片id,查询发现这是个DCDC电源芯片,在电路中为RK3566的CPU内核供电。此时想起来,泰山派电路中是使用了TCS4525

随笔十五、CPU电源管理与设备树修改_第1张图片

由于商城里没这款芯片,比较后选择了SYR837,网友介绍可以代替,当时专注画PCB,也就没进一步深入研究,问题应该就是这个了。

阅读芯片数据手册,通信I2C的硬件地址,TCS4525为0x1C,SYR837PKC为0x40,所以默认驱动不能控制837了,也就不能给CPU提供900mV电源。

幸运的是,瑞芯微的SDK里提供了SYR827的驱动,兼容837,参考RK3399板卡的设备树,修改了泰山派的设备树,主要就是I2C的硬件地址

sdk/kernel/arch/arm64/boot/dts/rockchip/tspi-rk3566-core-v10.dtsi

&i2c0 {
	status = "okay";

//	vdd_cpu: tcs4525@1c {
//		compatible = "tcs,tcs452x";
//		reg = <0x1c>;
//		vin-supply = <&vcc5v0_sys>;
//		regulator-compatible = "fan53555-reg";
//		regulator-name = "vdd_cpu";
//		regulator-min-microvolt = <712500>;
//		regulator-max-microvolt = <1390000>;
//		regulator-init-microvolt = <900000>;
//		regulator-ramp-delay = <2300>;
//		fcs,suspend-voltage-selector = <1>;
//		regulator-boot-on;
//		regulator-always-on;
//		regulator-state-mem {
//			regulator-off-in-suspend;
//		};
//	};

  vdd_cpu: syr837@40 {
    compatible = "silergy,syr827";
    reg = <0x40>;
    vin-supply = <&vcc5v0_sys>;
    regulator-compatible = "fan53555-reg";
    regulator-name = "vdd_cpu";
    regulator-min-microvolt = <712500>;
    regulator-max-microvolt = <1390000>;
    regulator-init-microvolt = <1000000>;
    regulator-initial-mode = <1>;
    regulator-ramp-delay = <2300>;
    fcs,suspend-voltage-selector = <1>;
    regulator-boot-on;
    regulator-always-on;
    regulator-state-mem {
      regulator-off-in-suspend;
    };
  };

重新编译烧录,log显示正常

[    1.125320] i2c /dev entries driver
[    1.127162] fan53555-regulator 0-0040: FAN53555 Option[8] Rev[1] Detected!
[    1.130051] vdd_cpu: supplied by vcc5v0_sys

你可能感兴趣的:(立创泰山派随笔,嵌入式硬件,泰山派,设备树)