【rk3506】解决cpufreq目录不存在问题

【rk3506】解决cpufreq目录不存在问题
问题描述最近和应用同事联调反馈日志里一直报这两个错记录一下完整排查过程。open/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:No such file ordirectory(2)open/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:No such file ordirectory(2)排查步骤1、先看内核配置是不是没开 cpufreq第一反应先去核对内核配置毕竟这种 sysfs 节点的问题大概率是配置没开。检查了.config文件这几个关键配置都已经是开启状态CONFIG_CPU_FREQy CONFIG_CPU_FREQ_GOV_PERFORMANCEy CONFIG_CPU_FREQ_GOV_ONDEMANDy CONFIG_ARM_ROCKCHIP_CPUFREQy配置没问题那说明不是 “没开驱动” 这么简单得往下挖。2、设备树才是关键RK3506 的 DVFS 链路查了下 Rockchip 的文档才反应过来RK3506 的 CPU 动态调频调压DVFS是有完整链路依赖的不是开了配置就完事。整个链路是这样的vdd_armPWM调压 → pwm0_4ch_0PWM控制器通道 → rm_io21_pwm0_ch0引脚复用配置这三个环节是环环相扣的只要缺了一环内核就没法建立 “CPU 频率 ↔ 核心电压” 的映射没法调压自然也就没法启用 cpufreq 驱动最后就表现为/sys/devices/system/cpu/cpu0/cpufreq这个目录直接不生成。翻了下设备树原厂 demo 的设备树里是完整配置了这部分的vdd_arm:vdd-arm{compatiblepwm-regulator;pwmspwm0_4ch_0050001;regulator-namevdd_arm;regulator-min-microvolt710000;regulator-max-microvolt1207000;regulator-init-microvolt1011000;regulator-always-on;regulator-boot-on;regulator-settling-time-up-us250;pwm-supplyvcc_sys;};pwm0_4ch_0{pinctrl-namesactive;pinctrl-0rm_io21_pwm0_ch0;statusokay;};rm_io21{/omit-if-no-ref/rm_io21_pwm0_ch0:rm-io21-pwm0-ch0{rockchip,pins0RK_PC545pcfg_pull_none_drv_level_1;};};排查发现我们基于原厂rk3506 demo板设计的原理图上是不支持CPU 动态调频调压。3、排查到根因硬件设计不支持 DVFS拿着设备树去核对我们自己的原理图才发现问题我们基于原厂 demo 板做的硬件设计压根就没接 PWM 调压电路不支持 CPU 动态调频调压。也就是说设备树里的这部分配置在我们的硬件上是不成立的内核没法正常初始化 cpufreq 驱动才会出现 sysfs 节点不存在的问题。