shi*_*esh 5 arm clock linux-kernel
在Linux中,如何实现时钟架构.有一个文件include/linux/clkdev.h
struct clk_lookup {
struct list_head node;
const char *dev_id;
const char *con_id;
struct clk *clk;
};
Run Code Online (Sandbox Code Playgroud)
各种领域有哪些,它广泛用于时钟架构中arch/arm/Board***/...?
clk.txt中记录了通用Linux时钟基础结构.对于ARM,Sasha Hauer 最近创建了公共时钟框架(最近两年).时钟以父/子关系构成.典型的SOC(片上系统)具有由晶体产生的主时钟,这些时钟可以按比例缩小(使用计数器),也可以使用PLL进行缩放,也可以同时使用两者.它们的层次结构对节省电力很重要.通常,设备仅使用树中最低/最小的时钟之一.当设备请求时钟时,基础结构可确保启动所有父项.
以前(传统),时钟通过平台数据从机器文件(参考arch/arm/Board***/)传递到驱动器/设备; 最终通过platform_device_register().有时,时钟是从设备名称派生的.例如,fec驱动程序可能使用fec-clk.这对多机配置不起作用,因此引入了平台数据机制.甚至更新的机器也使用dt(或设备表).这里没有机器文件,只有从引导加载程序传递到内核的设备表.在这种情况下,dt告诉驱动程序使用哪个时钟.
最初,dev_id和con_id分别为涉及用于钟表装置及钟表被连接(父/子).通常为dev_id或者con_id为NULL,因为只需要一个方面.我认为这种观点被认为是缺乏的; 特别是对于启动整个时钟链.因此,根据Linux版本,答案会有所不同.即使在当前的源代码中,某些平台(如orion)仍然使用较旧的机制.我不认为orion支持设备树.
具体答案取决于您的Linux版本和正在使用的机器(可能还有平台).
另见:clkdev.c,clk.c
开源 - 有很多突变.他们都有不同的计划.
参考:关于ARM clkdev的Russell Kings消息,原文并未暗示订购.
| 归档时间: |
|
| 查看次数: |
2922 次 |
| 最近记录: |