CLK_OF_DECLARE(imx6ul, "fsl,imx6ul-ccm", imx6ul_clocks_init); 存在下图类似的SOC时钟描述语句: 上述语句中无论是imx_clk_mux()还是imx_clk_pllv3()都会调用clk_register()向内核注册时钟资源。 2、驱动层clk 当底层(clk-provider)设计完成后,在驱动层(也称为消费者(Consumer))则可以很方便的获取对应...
CLK_OF_DECLARE(fixed_clk, "fixed-clock", of_fixed_clk_setup); struct clk *clk_register_fixed_rate(struct device *dev, const char *name, const char *parent_name, unsigned long flags, unsigned long fixed_rate); 2. gate clock 这一类clock只可开关(会提供.enable/.disable回调),可使用下面接...
intof_clk_add_provider(structdevice_node *np,structclk *(*clk_src_get)(structof_phandle_args *args,void*data),void*data); 1.2 consumer使用时钟 其他设备需要使用时钟,可以再驱动中后去时钟也可以在设备DTS中引用时钟。 structclk *clk_get(structdevice *dev,constchar*id);structclk *devm_clk_get...
voiddevm_clk_unregister(structdevice*dev,structclk*clk); 2、驱动中常使用的API 芯片厂家会根据clk框架,对下层(即底层硬件)设计出接口,以供上层驱动接口调用,在内核中,提供的接口主要由/include/linux/clk.h文件导出,使用这些API接口时,需包含linux/clk.h头文件: #include 获取struct clk指针: structclk*devm_...
CLK_OF_DECLARE(fixed_clk,"fixed-clock",of_fixed_clk_setup);struct clk*clk_register_fixed_rate(struct device*dev,constchar*name,constchar*parent_name,unsignedlongflags,unsignedlongfixed_rate); 1. 2. 3. 4. 2. gate clock 这一类clock只可开关(会提供.enable/.disable回调),可使用下面接口注册:...
CLK_OF_DECLARE(fixed_clk, "fixed-clock", of_fixed_clk_setup); struct clk *clk_register_fixed_rate(struct device *dev, const char *name, const char *parent_name, unsigned long flags, unsigned long fixed_rate); 2. gate clock 这一类clock只可开关(会提供.enable/.disable回调),可使用下面接...
CLK_OF_DECLARE(fixed_clk,'fixed-clock', of_fixed_clk_setup); struct clk *clk_register_fixed_rate(struct device *dev,constchar*name, constchar*parent_name,unsignedlongflags, unsignedlongfixed_rate); 2. gate clock 这一类clock只可开关(会提供.enable/.disable回调),可使用下面接口注册: ...
初始化过程中,kernel在驱动初始化阶段处理时钟,不同于CPU初始化,它在bootrom和U-Boot配置基本时钟后进行。CLK_OF_DECLARE宏用于声明初始化函数,通过它声明的函数负责配置时钟。RK3399的时钟初始化涉及cru和pmu,以cru为例,其核心初始化基于rockchip_clk_provider数据结构,通过rk3399.dtsi文件中的...
CLK_OF_DECLARE(fixed_clk,"fixed-clock", of_fixed_clk_setup); struct clk *clk_register_fixed_rate(struct device *dev,constchar*name, constchar*parent_name,unsignedlongflags, unsignedlongfixed_rate) ; 2. gate clock 这一类clock只可开关(会提供.enable/.disable回调),可使用下面接口注册: ...
CLK_OF_DECLARE(fixed_clk,"fixed-clock", of_fixed_clk_setup);structclk *clk_register_fixed_rate(structdevice *dev,constchar*name,constchar*parent_name,unsignedlongflags,unsignedlongfixed_rate); gate clock 这一类clock只可开关(会提供.enable/.disable回调),可使用下面接口注册: ...