目录
1. clock驱动构架
1.2 clock consumer介绍
2. Clock Provider
2.1 数据结构表示
2.2 clock provider注册初始化
2.3 DTS配置
2.4 clock驱动实现举例:
3. clock consumer
3.1 获取clock
3.2 操作clock
3.3 实例操作
4. SoC硬件中的使用
参考:
电源管理的两个大方面就是电压和时钟。
Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,都需要从某个或某几个时钟源头而来,最终开枝散叶,形成一棵时钟树。
1. clock驱动构架
Linux的时钟子系统由CCF(common clock framework)框架管理,CCF向上给用户提供了通用的时钟接口,向下给驱动开发者提供硬件操作的接口。
这个也是一个consumer、framework、provider的模式。其中其provider会比较复杂一些,但是往往是由芯片厂商提供,我们编写设备驱动要使用调频的时候只需要在consumer里面进行配置使用就可以了。
1.1 Clock Provider介绍
在SoC上器件很多,会形成一个时钟树,如下所示: