在linux内核的clk初始化中,表的clk符号是什么
我正在学习linux内核3.10,它的函数在linux内核的clk初始化中,表的clk符号是什么,linux,linux-kernel,kernel,clock,Linux,Linux Kernel,Kernel,Clock,我正在学习linux内核3.10,它的函数为_clk_init,如下所示 void __init of_clk_init(const struct of_device_id *matches) { struct device_node *np; if (!matches) matches = __clk_of_table; for_each_matching_node(np, matches) { const struct of_dev
为_clk_init
,如下所示
void __init of_clk_init(const struct of_device_id *matches)
{
struct device_node *np;
if (!matches)
matches = __clk_of_table;
for_each_matching_node(np, matches) {
const struct of_device_id *match = of_match_node(matches, np);
of_clk_init_cb_t clk_init_cb = match->data;
clk_init_cb(np);
}
}
当我查找表的符号时,我没有找到任何参考,但我非常确定表的符号与linux设备树模型有关,是吗 是,
\u表的
反映了blob中的特殊部分,该部分为时钟提供了设备id的结构
在include/linux/clk provider.h中定义
extern struct of_device_id __clk_of_table;
#define CLK_OF_DECLARE(name, compat, fn) OF_DECLARE_1(clk, name, compat, fn)
请参阅
include/asm generic/vmlinux.lds.h
。这是我找到的#定义CLK_OF_TABLES()对齐(8);VMLINUX_符号(_表的_uclk_)=。;*(u clk_of_table)*(u clk_of_table_end)
当我看到我的代码时,使用上述宏声明了各种类型的时钟(固定、选通、MUX..),这些宏使它们出现在位置u clk_of_table
上,并且使用设备树中的可用时钟验证相同类型的时钟(所有节点的)使用fn
进一步调用,其中np
为参数。。。我说的对吗。。。这是一个有效的通用时钟树实现。。。如果我错了,请纠正我?我没有深入调查,尽管你可能是对的。我不明白你在通用实现下的意思。