kernel dts修改pmu cpu工作电压
时间: 2023-08-10 21:04:14 浏览: 128
要在 Linux 内核的 DTS (Device Tree Source) 文件中修改 PMU (Power Management Unit) 和 CPU 的工作电压,可以按照以下步骤进行操作:
1. 打开设备树文件 (通常位于 arch/arm64/boot/dts/ 目录下),找到与 PMU 和 CPU 相关的节点。例如,下面是一个名为 "cpu0" 的 CPU 节点的示例:
```
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,armv8";
reg = <0x0>;
operating-points = <0x0 0x96800 0x1 0x102800 0x2 0x120000>;
clock-latency-ns = <0x9c40>;
};
```
2. 修改 operating-points 属性,以便为 CPU 定义工作电压。operating-points 属性是一个数组,其中每个元素都表示一个电压/频率对,格式为 <vdd vdd-cvdd frequency>. 例如,下面是一个修改后的 operating-points 属性,将 CPU 的工作电压从 0.95V 提高到 1.0V:
```
operating-points = <0x0 0x9b000 0x1 0xb4800 0x2 0xd5000>;
```
在这个例子中,vdd 为 0x0、0x1 和 0x2,分别对应于 operating-points 数组中的三个电压/频率对。vdd-cvdd 表示 CPU 的工作电压。
3. 修改 PMU 节点的属性,以便为 CPU 定义默认的工作电压。例如,下面是一个名为 "pmu" 的 PMU 节点的示例:
```
pmu {
compatible = "arm,armv8-pmuv3";
reg = <0x0 0x1c12000 0x0 0x1000>;
#address-cells = <0x1>;
#size-cells = <0x0>;
ranges;
status = "okay";
opp_table {
opp_0: opp-0 {
opp-hz = /bits/ 64 <0x1f40600>;
opp-microvolt = <0x9a98>;
clock-latency-ns = <0x9c40>;
};
opp_1: opp-1 {
opp-hz = /bits/ 64 <0x1f40600>;
opp-microvolt = <0x9c40>;
clock-latency-ns = <0x9c40>;
};
};
};
```
在这个例子中,opp_table 节点包含了 PMU 的工作电压信息。修改 opp_table 节点中的 opp-microvolt 属性,以便为 CPU 定义默认的工作电压。例如,将 opp_0 的电压从 0.95V 提高到 1.0V:
```
opp_0: opp-0 {
opp-hz = /bits/ 64 <0x1f40600>;
opp-microvolt = <0x9c40>;
clock-latency-ns = <0x9c40>;
};
```
在这个例子中,opp-microvolt 属性的值为 0x9c40,表示电压为 1.0V。
4. 保存设备树文件后重新编译内核,然后将修改后的设备树文件通过 bootloader 加载到内存中。在启动时,内核将读取设备树文件并使用其中的信息来配置 CPU 的工作电压。
注意:这些步骤可能因不同的设备类型和内核版本而有所不同。在进行任何修改之前,请务必备份设备树文件和内核。
阅读全文