在Linux下如何为时钟架构来实现。 这里有一个文件include/linux/clkdev.h
struct clk_lookup {
struct list_head node;
const char *dev_id;
const char *con_id;
struct clk *clk;
};
什么是各个领域,它是在时钟架构中广泛使用arch/arm/Board***/...
?
在Linux下如何为时钟架构来实现。 这里有一个文件include/linux/clkdev.h
struct clk_lookup {
struct list_head node;
const char *dev_id;
const char *con_id;
struct clk *clk;
};
什么是各个领域,它是在时钟架构中广泛使用arch/arm/Board***/...
?
在通用Linux时钟基础结构进行了说明clk.txt 。 对于ARM,萨沙豪尔创建最近(过去两年)的普通时钟帧作品。 时钟已经在父/子关系结构。 典型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罗素国王的消息 ,原来并不意味着排序。