static inline struct clk *devm_clk_get_optional(struct device *dev, constchar *id) //(推荐使用,整组获取,整组开关) static inline int __must_check devm_clk_bulk_get(struct device *dev, intnum_clks, struct clk_bulk_data *clks) static inline int __must_check devm_clk_bulk_get_optiona...
[root@centos7 ~]# ls /sys/kernel/debug/clk/apb_pclk clk_dump clk_orphan_dump clk_orphan_summary clk_summary HISI02A2:00[root@centos7~]# ls /sys/kernel/debug/clk/clk_summary/sys/kernel/debug/clk/clk_summary [root@centos7~]# ls /sys/kernel/debug/clk/clk_summary -al-r--r--r--...
unsigned long flags,void__iomem*reg,u8 shift,u8 width,u8 clk_divider_flags,spinlock_t*lock);struct clk*clk_register_divider_table(struct device*dev,constchar*name,constchar*parent_name,unsigned long flags,void__iomem*reg,u8 shift,u8 width,u8 clk_divider_flags,conststruct clk_div_table*table...
voiddevm_clk_unregister(structdevice*dev,structclk*clk); 2、驱动中常使用的API 芯片厂家会根据clk框架,对下层(即底层硬件)设计出接口,以供上层驱动接口调用,在内核中,提供的接口主要由/include/linux/clk.h文件导出,使用这些API接口时,需包含linux/clk.h头文件: #include 获取struct clk指针: structclk*devm_...
Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,都需要从某个或某几个时钟源头而来,最终开枝散叶,形成一颗时钟树。可通过 cat /sys/kernel/debug/clk/clk_summary 查看这棵时钟树。
## 采样率44.1KHZ,mclk = 256 * sample = 256*44.1*1000 = 11289600 HZroot@xiaotianbsp:~# cat /sys/kernel/debug/clk/clk_summary | grep i2s0clk_i2s0_div 1 1 800000000 0 0clk_i2s0_frac 1 1 11289600 0 0clk_i2s0_mux 1 1 11289600 0 0clk_i2s0 1 2 11289600 0 0hclk_i2s0 1 2 ...
不同的clock设置,需要从某个或某几个时钟源头而来,最终开枝散叶,形成一颗时钟树。可通过 cat /sys/kernel/debug/clk/clk_summary 查看这棵时钟树。 内核中用 CCF 框架来管理 clock,如下所示,右边是 clock 提供者,即 Clock Provider;中间是 CCF;左边是设备驱动的 clock 使用者,即 Clock Consumer。
[root@rk3399:/]#cat/sys/kernel/debug/clk/clk_summaryclockenable_cntprepare_cntrateaccuracyphase---rk808-clkout2003276800xin32k00327680
Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,都需要从某个或某几个时钟源头而来,最终开枝散叶,形成一颗时钟树。可通过 cat /sys/kernel/debug/clk/clk_summary 查看这棵时钟树。
Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,都需要从某个或某几个时钟源头而来,最终开枝散叶,形成一颗时钟树。可通过 cat /sys/kernel/debug/clk/clk_summary 查看这棵时钟树。