芯
⽚
名
称
内
核
版
本
所
有
芯
⽚
Linux4.4
、
Linux4.19
⽇
期
版
本
作
者
修
订说
明
2018-09-14 V1.0
肖
锋
初
始
版
本
2019-11-14 V1.1
肖
锋
⽀
持
Linux4.19
Devfreq
开
发
指
南
发
布
版
本
:
1.1
作
者
邮
箱
:
finley.xiao@rock-chips.com
⽇
期
:
2019.11
⽂
档
密
级
:
公
开
资
料
前
⾔
概
述
主
要
描
述
devfreq
的相
关
概
念
、
配
置
⽅
法
和
⽤
⼾
态
接
⼝
。
产
品
版
本
读
者
对
象
软
件
开
发
⼯
程
师
技
术
⽀
持
⼯
程
师
修
订记
录
Devfreq
开
发
指
南
1
概
述
2
代
码
路
径
3 Menuconfig
配
置
4 Device Tree
配
置
⽅
法
4.1 GPU DVFS
配
置
⽅
法
4.1.1 Clock
配
置
4.1.2 Regulator
配
置
4.1.3 OPP Table
配
置
4.1.3.1
增
加
OPP Table
4.1.3.2
删
除
OPP
4.1.4
根
据
leakage
调
整
OPP Table
4.1.4.1
根
据
leakage
调
整
电
压
4.1.5
根
据
PVTM
调
整
OPP Table
4.1.5.1
根
据
PVTM
调
整
电
压
4.1.6
根
据
IR-Drop
调
整
OPP Table
4.1.7
宽
温
配
置
4.1.8
升
降
频
负
载
配
置
4.2 DMC DVFS
配
置
⽅
法
4.2.1 Clock
配
置
4.2.2 Regulator
配
置
4.2.3 OPP Table
配
置
4.2.3.1
增
加
OPP Table
4.2.3.2
删
除
OPP
4.2.4
根
据
leakage
调
整
OPP Table
4.2.4.1
根
据
leakage
调
整
电
压
4.2.5
根
据
PVTM
调
整
OPP Table
4.2.5.1
根
据
PVTM
调
整
电
压
4.2.6
根
据
IR-Drop
调
整
OPP Table
4.2.7
场
景
变
频
配
置
4.2.8
负
载
变
频
配
置
4.2.9
根
据
VOP
带
宽
变
频
4.3 BUS DVFS
配
置
⽅
法
4.3.1 PLL DVFS
配
置
5
⽤
⼾
态
接
⼝
介
绍
6
常
⻅
问
题
6.1
如
何
查
看
频
率
电
压
表
6.2
如
何
定
频
6.3
如
何
查
看
当
前
频
率
6.4
如
何
查
看
当
前
电
压
6.5
如
何
单
独
调
频
调
压
6.6
如
何
查
看
当
前
电
压
的
档
位
6.7
如
何
查
看
leakage
6.8
如
何
修
改
电
压
1
概
述
Devfreq
是
内
核
开
发
者
定
义
的
⼀
套
⽀
持
根
据
指
定
的
governor
动
态
调
整
频
率
和
电
压
的
框
架
模
型
,
它
能
有
效
地
降
低
的
功
耗
,
同
时
兼
顾
性
能
。
Devfreq
类
似
CPUFreq
,
不
过
CPUFreq
只
适
⽤
于
CPU
,
devfreq
⽤
于
除
了
CPU
外
,
也
需
要
动
态
调
频
调
压
的
模
块
。
Devfreq framework
由
governor
、
core
、
driver
、
event
组
成
,
软
件
框
架
如
下
:
Devfreq governor
:
⽤
于
升
降
频
检
测
,
决
定
频
率
。
⽬
前
Linux4.4
内
核
中
包
含
了
如
下
⼏
种
governor
:
simple ondemand
:
根
据
负
载
动
态
调
频
。
userspace
:
提
供
相
应
接
⼝
供
⽤
⼾
态
应
⽤
程
序
调
整
频
率
。
powersave
:
功
耗
优
先
,
始
终
将
频
率
设
置
在
最
低
值
。
performance
:
性
能
优
先
,
始
终
将
频
率
设
置
为
最
⾼
值
。
dmc ondemand
:
simple ondemand
的
基
础
上
,
增
加
场
景
变
频
的
⽀
持
,
DDR
变
频
专
⽤
。
Devfreq core
:
对
devfreq governors
和
devfreq driver
进
⾏
了
封
装
和
抽
象
,
并
定
义
了
清
晰
的
接
⼝
。
Devfreq
driver
:
⽤
于
初
始
化
设
备
的
频
率
电
压
表
,
设
置
具
体
设
备
的
频
率
。
Devfreq event
:
⽤
于
监
控
设
备
的
负
载
信
息
。
2
代
码
路
径
Governor
相
关
代
码
:
drivers/devfreq/governor_simpleondemand.c /* simple ondemand
调
频
策
略
*/
drivers/devfreq/governor_performance.c /* performance
调
频
策
略
*/
drivers/devfreq/governor_powersave.c /* powersave
调
频
策
略
*/
drivers/devfreq/governor_userspace.c /* userspace
调
频
策
略
*/
Event
相
关
代
码
:
Core
相
关
代
码
:
Driver
相
关
代
码
:
3 Menuconfig
配
置
不
同
的
平
台可
根
据
实
际
情
况
修
改
配
置
。
4 Device Tree
配
置
⽅
法
4.1 GPU DVFS
配
置
⽅
法
4.1.1 Clock
配
置
drivers/devfreq/devfreq-event.c
drivers/devfreq/event/rockchip-dfi.c /*
⽤
于
监
控
DDR
的
读
写
cycle
数
*/
drivers/devfreq/event/rockchip-nocp.c /*
⽤
于
监
控
各
个
模
块
访
问
DDR
的
字
节
数
*/
drivers/devfreq/devfreq.c
drivers/devfreq/rockchip_dmc.c /* dmc ondemand
调
频
策
略
和
DMC driver */
drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c /* GPU driver */
drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c /* GPU driver */
drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c /* GPU driver */
drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c /* GPU driver */
drivers/devfreq/rockchip_bus.c /* bus driver */
drivers/soc/rockchip/rockchip_opp_select.c /*
修
改
电
压
表
相
关
接
⼝
*/
Device Drivers --->
[*] Generic Dynamic Voltage and Frequency Scaling (DVFS) support --->
--- Generic Dynamic Voltage and Frequency Scaling (DVFS) support
*** DEVFREQ Governors *** /* devfreq governor */
-*- Simple Ondemand
<*> Performance
<*> Powersave
*** DEVFREQ Drivers ***
<*> ARM ROCKCHIP BUS DEVFREQ Driver /* bus devfreq driver */
<*> ARM ROCKCHIP DMC DEVFREQ Driver /* dmc devfreq driver */
[*] DEVFREQ-Event device Support --->
--- DEVFREQ-Event device Support
-*- ROCKCHIP DFI DEVFREQ event Driver /* dfi event driver */
/* nocp event driver */
<*> ROCKCHIP NoC (Network On Chip) Probe DEVFREQ event Driver
根
据
平
台
的
实
际
情
况
,
在
GPU
节
点
下
增
加
“clock”
和
“clock-names”
属
性
,
⼀
般
在
DTSI
⽂
件
中
。
Clock
的
详
细
配
置
说
明
,
请
参
考
clock
相
关
的
开
发
⽂
档
。
以
RK3399
为
例
:
4.1.2 Regulator
配
置
根
据
实
际
产
品
硬
件使
⽤
的
电
源
⽅
案
,
在
GPU
节
点
下
增
加
“mali-supply”
属
性
,
⼀
般
在
板
级
DTS
⽂
件
中
。
Regulator
的
详
细
配
置
说
明
,
请
参
考
regulator
和
PMIC
相
关
的
开
发
⽂
档
。
以
RK3399
为
例
:
4.1.3 OPP Table
配
置
gpu: gpu@ff9a0000 {
compatible = "arm,malit860",
"arm,malit86x",
"arm,malit8xx",
"arm,mali-midgard";
...
clocks = <&cru ACLK_GPU>;
clock-names = "clk_mali";
...
};
&i2c0 {
...
vdd_gpu: syr828@41 {
compatible = "silergy,syr828";
reg = <0x41>;
vin-supply = <&vcc5v0_sys>;
regulator-compatible = "fan53555-reg";
pinctrl-0 = <&vsel2_gpio>;
vsel-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
regulator-name = "vdd_gpu";
regulator-min-microvolt = <712500>;
regulator-max-microvolt = <1500000>;
regulator-ramp-delay = <1000>;
fcs,suspend-voltage-selector = <1>;
regulator-always-on;
regulator-boot-on;
regulator-initial-state = <3>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
&gpu {
status = "okay";
mali-supply = <&vdd_gpu>;
};