cpufreq driver整体流程图
2015-11-03 19:10:55 2 举报
登录查看完整内容
CPU频率驱动(cpufreq driver)的整体流程图主要包括以下几个步骤:首先,驱动程序通过读取硬件寄存器来获取当前CPU的频率信息;然后,根据用户或系统设置的CPU工作频率,驱动程序计算出需要调整的PLL(Phase-Locked Loop,锁相环)值;接着,驱动程序通过写回硬件寄存器来改变CPU的工作频率;最后,驱动程序会定期检查并调整CPU的工作频率,以确保其保持在用户或系统设置的范围内。在整个过程中,驱动程序还需要处理各种可能的错误和异常情况,以保证系统的稳定运行。
作者其他创作
大纲/内容
kobject_uevent(policy,KOBJ_ADD)
driver_init
cpufreq-core
add_dev
for_each_possible_cpu
INIT_WORK (handle_update)
cpufreq_core_init()
bus
cpufreq_driver=driver_data
cpu子系统的初始化
register_cpu
cpufreq子系统的初始化
cpufreq_register_driver主要工作1. 检查driver是否提供verify/init/setpolicy或target的回调接口2. 检查全局变量cpufreq_driver是否已经被赋值3. 通过subsys_interface_register给每一个cpu建立一个cpu_policy,最后注册cpu_hotplug通知,以在hotplug的时候,能动态的处理各个cpu_policy的关系此时一个cpu的policy建立万恒,包括它的频率限制条件,使用的governor的策略,sysfs文件节点,需要注意系统有几个cpu,cpu_add_dev函数就会被调用几次为每个cpu建立自己的policy
kobject_create_and_add在sys/device/system/cpu下面生成一个cpufreq节点
blocking_notifier_call_chain(cpufreq_policy_notifier_list)
cpufreq_driver
cpu_dev_init
kobject
cpufreq_register_driver
cpufreq_driver-init
cpufreq_add_dev
init_pre_cpu_var
cpu
policy-governor=CPUFREQ_DEFAULT_GOVERNOR
kzalloc(cpufreq_policy)
cpufreq_Core
subsys_system_register
cpufreq_add_dev_interface
Bus/subsys
subsys_interface_register1. 遍历子系统下的每一个设备,然后调用cpufreq_interface的add_dev回调函数
Init-call
0 条评论
回复 删除
下一页