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

The*_*ker 4 drivers clock linux-device-driver linux-kernel

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

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

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

谢谢,

〜VJ

小智 5

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

该例程具有等待循环,其旋转直到硬件PLL显示锁定.不能从原子上下文那样做.另一篇LWN文章对prepare()vs enable()分离说了一些话.

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