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

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

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

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

谢谢,

〜VJ

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

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

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

转载注明原文:linux-kernel – Linux内核 – 时钟框架 – clk_prepare / unrepare的作用是什么? - 代码日志