rk 3368 dvfsに関するいくつかの理解
2366 ワード
dts
&clk_core_b_dvfs_table {
operating-points = <
/* KHz uV */
216000 950000
312000 950000
408000 950000
600000 950000
696000 950000
816000 975000
1008000 1050000
//1200000 1150000
//1296000 1225000
>;
status = "okay";
};
&clk_core_l_dvfs_table {
operating-points = <
/* KHz uV */
216000 950000
312000 950000
408000 950000
600000 950000
696000 975000
816000 1025000
1008000 1050000
//1200000 1225000
>;
status = "okay";
};
rk 3368は8個のcpuがあり、4個の大きいA 53は4個の小さいA 53がある.
clk_core_b_dvfs_tableが大きいA 53の周波数電圧計clk_core_l_dvfs_tableは小A 53の周波数電圧計である.
周波数を下げてデバッグする過程で、私は
rk818_dcdc2_reg: regulator@1 {
regulator-name= "vdd_arm";/*vcc arm*/
regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1500000>;
regulator-initial-mode = <0x2>;
regulator-initial-state = <3>;
regulator-state-mem {
regulator-state-mode = <0x2>;
regulator-state-enabled;
regulator-state-uv = <900000>;
};
};
のregulator-max-microvolt=<1500000>;1050000に下げて、電源を入れる時ずっと1075000の誤りを探さないことを報告します.
[ 5.353620] [1: cfinteractive: 88] DVFS DBG: dvfs_target:clk_core_b new rate=1008000000(was=816000000),new volt=1075000,(was=1000000) [ 5.353704] [1: cfinteractive: 88] DVFS DBG: dvfs_scale_volt_direct: volt=1075000(old=1000000) [ 5.353785] [1: cfinteractive: 88] vdd_arm: unsupportable voltage range: 1075000-1050000uV [ 5.353860] [1: cfinteractive: 88] DVFS ERR: dvfs_regulator_set_voltage_readback: now read back to check voltage
疑念コードはdtsのテーブルを使わずに自分の内部で書かれています.
1075000と1075*1000を含むすべてのコードを変更しましたが、1075000で設定できないエラーがあります.
2日間追跡コードを調べたところ、
arch/arm/mach-rockchip/dvfs.cのadjust_table_by_leakageは手足を作った:すなわち電圧が2500 mV調整され、例えば1050000+2500=107500.
dtsには構成があります(rk 3368.dtsi)
lkg_adjust_volt_en = <1>;
channel = <0>;
tsadc-ch = <0>;
def_table_lkg = <25>;
min_adjust_freq = <216000>;
lkg_adjust_volt_table = <
/*lkg(mA) volt(uV)*/
0 25000
>;
pmuの制限電圧をregulator-max-microvolt=<107500>に変更してもエラーはなく、電圧が下がります.