int clk_prepare(struct clk *clk) void clk_unprepare(struct clk *clk) //启动/停止clock。不会睡眠。 static inline int clk_enable(struct clk *clk) static inline void clk_disable(struct clk *clk) //clock频率的获取和设置 static inline unsigned long clk_get_rate(struct clk *clk) static inlin...
struct clk:对于驱动开发来说,struct clk只是访问时钟的一个句柄,有了它,驱动开发就可以对时钟进行配置;其中sruct clk_hw结构包含了struck clk成员; 2.1 struct clk(drivers/clk/clk.c) 一个系统的时钟树结构是固定的,因此时钟的数目和用途也是固定的,我们以上面我们的案例图为例,假设其为一个完整的时钟系统,...
第801行,调用函数devm_ioremap_resource 完成内存映射,得到RTC外设寄存器物理基地址对应的虚拟地址。 第856行,调用clk_prepare_enable函数使能时钟。 第872行,初始化STM32MP1 rtc的寄存器。 第876行,获取设备树的中断号。 第892行,调用devm_rtc_device_register函数向系统注册rtc_devcie,RTC底层驱动集为stm32_rtc_o...
static inline int clk_prepare_enable(struct clk *clk) static inline void clk_disable_unprepare(struct clk *clk) 总结
这一类clock只可开关(会提供.enable/.disable回调),可使用下面接口注册: struct clk *clk_register_gate(struct device *dev,constchar*name, constchar*parent_name,unsignedlongflags, void__iomem *reg, u8 bit_idx, u8 clk_gate_flags,spinlock_t*lock); ...
这一类clock只可开关(会提供.enable/.disable回调),可使用下面接口注册: struct clk *clk_register_gate(struct device *dev,constchar*name, constchar*parent_name,unsignedlongflags, void__iomem *reg, u8 bit_idx, u8 clk_gate_flags,spinlock_t*lock) ; ...
驱动程序中常用的API集成了原子和非原子操作,以确保时钟启用或停用的正确执行。这些操作可能需要CPU睡眠,特别是在启动依赖于长时间稳定状态的时钟,如PLL时钟时。因此,为了简化调用,内核封装了`clk_prepare_enable`和`clk_disable_unprepare`接口。CLK子系统的核心数据结构包括`struct clk_notifier`、`...
Elixir Cross Referencer - clk_prepare_enable identifier references search for Linux v4.3. Defined as a function in include/linux/clk.h. Referenced in 690 files: arch/arm/kernel/smp_twd.c...
ret= clk_prepare_enable(ts.clock);//使能时钟if(ret) { dev_err(dev,"Failed! to enabled clocks\n");gotoerr_clk_get; } dev_dbg(dev,"got and enabled clocks\n"); ts.irq_tc= ret = platform_get_irq(pdev,0);//获取第一个IRQ编号if(ret <0) { ...
ret=clk_prepare_enable(rs->spiclk); if(ret< 0) { dev_err(&pdev->dev,"Failedtoenablespi_clk "); gotoerr_disable_apbclk; } spi_enable_chip(rs,false); ret=platform_get_irq(pdev,0); if(ret< 0) goto err_disable_spiclk;