问题:设备树配置频率的问题
”fixed-clock“ 节点 包含clock-frequency 属性,用于配置 时钟controller 的频率
注意区分assigned-clock-rate
static struct clk *_of_fixed_clk_setup(struct device_node *node)
{
struct clk *clk;
const char *clk_name = node->name;
u32 rate;
u32 accuracy = 0;
int ret;if (of_property_read_u32(node, "clock-frequency", &rate))
return ERR_PTR(-EIO);
of_property_read_u32(node, "clock-accuracy", &accuracy);
of_property_read_string(node, "clock-output-names", &clk_name);
}
问题2: 设置时钟频率需要的参数
provider: int (*set_rate)(struct clk_hw *hw, unsigned long rate,unsigned long parent_rate);
consumer:int clk_set_rate(struct clk *clk, unsigned long rate);
答:clk_set_rate会向上传递,即设置它的父时钟频率