Linux内核 - 时钟框架 - clk_prepare / unrepare的作用是什么?

时间:2013-06-23 15:05:08

标签: linux-kernel linux-device-driver clock drivers

我正在阅读以下关于Linux Kernel中存在的新时钟框架的文章。

http://lwn.net/Articles/489668/

  • 我不清楚的是,新API的使用是 clk_prepare / nothingpare ,它补充了 clk_enable / disable API。
  • 还提到虽然可以从原子上下文调用API的 clk_enable / disable ,但这不适用于 clk_prepare / unrepare (可以睡眠)。为什么这种功能和行为分离?
  • 我很想知道我们需要准备/取消准备时钟是什么?

谢谢,

〜VJ

1 个答案:

答案 0 :(得分:5)

时钟可能需要设置和锁定PLL,设置电压OPP或clk_enable之前的其他先决条件操作。例如:     drivers / clk / clk-highbank.c clk_pll_prepare()

此例程具有等待循环,旋转直到硬件PLL显示锁定。不能从原子上下文那样做。另一个LWN article对prepare()vs enable()分离说了一点。

PLL和时钟详细信息特定于所讨论的处理器/ SoC。方框图将显示通向各种PLL的SoC输入引脚的时钟树,然后是从每个PLL驱动的各种时钟(也可以具有可以打开/关闭的电源域),并且一旦“准备”完成就单独启用时钟。很长的故事,但我希望上面的内容可能会有所帮助。