static struct cpufreq_driver *cpufreq_driver; /* 调频驱动指针,驱动开发者根据具体hardware实现,主要包括:设置频率,获取频率等接口 */ static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data); /* 区分大小核时,每个CPU可有不同的调频策略 */ static
然后arm big little cpufreq driver出场了,其init接口位于“drivers/cpufreq/arm_big_little_dt.c”中,如下: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 1:staticintgeneric_bL_probe(struct platform_device*pdev)2:{3:struct device_node*np;4:5:np=get_cpu_node_with_valid_op(0);6:if(!np...
root@OK8MP:/sys/devices/system/cpu/cpu2# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 1600000 root@OK8MP:/sys/devices/system/cpu/cpu2# cat /sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq 1200000 root@OK8MP:/sys/devices/system/cpu/cpu2# cat /sys/devices/system/cpu...
cpufreq core是一个硬件无关的调频框架,集中管理了cpufreq governor、cpufreq driver、cpufreq device对象,同时提供了简单方便使用的接口API。 1 数据结构 1.1 struct cpufreq_diver数据结构 struct cpufreq_driver { char name[CPUFREQ_NAME_LEN]; u16 flags; void *driver_data; int (*init)(struct cpufreq_...
另外一部分,与实际的调频策略相关的部分被称作cpufreq_policy,cpufreq_policy又是由频率信息和具体的governor组成,governor才是具体策略的实现者,当然governor需要我们提供必要的频率信息,governor的实现最好能做到平台无关,与平台相关的代码用cpufreq_driver表述,它完成实际的频率调节工作。
drivers层 drivers层的初始化在device_initcall或者late_initcall阶段。需要完成以下主要任务: 调用cpufreq_register_driver注册驱动 驱动的init回调完成硬件层的初始化,包括clk、regulator、pmu的控制 cpufreq_register_driver接口内部完成policy和governor的设置
4.1 CPUFreq Core Core中定义了一个全局变量cpufreq_governor_list,可以使用接口cpufreq_register_governor来注册决策者,系统中可以同时注册很多决策者,对于每个policy来说只有一个当前决策者生效。Core还定义了一个全局变量cpufreq_driver,可以使用接口cpufreq_register_driver来注册执行者,对于一个系统来说有且只能有一...
cpuinfo_min_freq scaling_driver cpuinfo_transition_latency scaling_governor droidphone@990:/sys/devices/system/cpu/cpu0/cpufreq$ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 在我的电脑上,部分的值如下: cpuinfo_cur_freq: 1600000
cpufreq_policy又是由频率信息和具体的governor组成,governor才是具体策略的实现者 governor的实现最好能做到平台无关,与平台相关的代码用cpufreq_driver表述 关于CPUFreq的具体理论,主要参考参考文献1,该参考文献使用的linux内核位2.6版本,该部分以2.6版本为主。
arm big little cpufreq driver位于drivers/cpufreq目录下,由三个文件组成: arm_big_little.c arm_big_little.h arm_big_little_dt.c 主要提供如下的功能(以本文参考的“linux-3.18-rc4” kernel为准): 1)支持A15和A7两个cluster。 2)当bL switching处于disable状态(bL switching的状态由arm bL switcher driv...