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

Linux kernel Linux内核-时钟框架-clk_prepare/unprepare的作用是什么?,linux-kernel,linux-device-driver,clock,drivers,Linux Kernel,Linux Device Driver,Clock,Drivers,我正在阅读以下关于Linux内核中新的时钟框架的文章 我不清楚的是,新API的clk_准备/取消准备的用法,它补充了clk_启用/禁用API 还提到,虽然可以从原子上下文调用API的clk_enable/disable,但这不适用于clk_prepare/unprepare(可以休眠)。为什么会有这种功能和行为的分离 我很想了解我们需要准备/取消准备时钟的原因是什么 谢谢 ~vj在启用时钟之前,时钟可能需要设置和锁定PLL、设置电压OPP或其他先决条件操作。例如: 驱动程序/时钟/时钟hi

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

  • 我不清楚的是,新API的clk_准备/取消准备的用法,它补充了clk_启用/禁用API
  • 还提到,虽然可以从原子上下文调用API的clk_enable/disable,但这不适用于clk_prepare/unprepare(可以休眠)。为什么会有这种功能和行为的分离
  • 我很想了解我们需要准备/取消准备时钟的原因是什么
谢谢


~vj

在启用时钟之前,时钟可能需要设置和锁定PLL、设置电压OPP或其他先决条件操作。例如: 驱动程序/时钟/时钟highbank.c时钟pll\U准备()

此例程具有等待循环,等待循环旋转直到硬件PLL显示锁定。不能从原子上下文中执行此操作。另一个是关于prepare()和enable()的分离

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