例如,在一个嵌入式系统中,对于某个特定的外设模块,如串口模块,在对其进行配置和使用之前,要先通过clk_prepare_enable使能该串口模块的时钟。这样才能确保后续对串口的寄存器操作等都是在有正确时钟信号的基础上进行,否则串口可能无法正常工作。 通常会有一些相关的参数需要传递给clk_prepare_enable函数。比如要指定具体...
Linux ATA驱动中libahci_platform_enable_clks函数会开启platform clocks,函数原型为drivers/ata/libahci_platform.c intahci_platform_enable_clks(structahci_host_priv *hpriv){intc, rc;for(c=0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++){ rc = clk_prepare_enable(hpriv->clks[c]);if(rc...
一是告诉底层的CLOCK Driver,需把可能引起睡眠的操作,放到Prepare()/Unprepare()中实现,一定不能放到Enable()/Disable()中; 二是提醒上层使用CLOCK的Driver,调用Prepare/Unprepare 接口时可能会睡眠,千万不能在Atomic上下文(例如内部包含Mutex 锁、中断关闭、Spinlock 锁保护的区域)调用,而调用Enable()/Disable()接口则...
驱动程序中常用的API集成了原子和非原子操作,以确保时钟启用或停用的正确执行。这些操作可能需要CPU睡眠,特别是在启动依赖于长时间稳定状态的时钟,如PLL时钟时。因此,为了简化调用,内核封装了`clk_prepare_enable`和`clk_disable_unprepare`接口。CLK子系统的核心数据结构包括`struct clk_notifier`、`str...
51CTO博客已为您找到关于clk_prepare_enable的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及clk_prepare_enable问答内容。更多clk_prepare_enable相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
if(WARN_ON(clk->prepare_count==0)) return-ESHUTDOWN; if(clk->enable_count==0) { ret=__clk_enable(clk->parent); if(ret) returnret; //这里的操作见一、5中的函数,内部进行了函数集绑定 if(clk->ops->enable) { ret=clk->ops->enable(clk->hw); ...
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) ...
我正在阅读以下关于Linux内核中的新时钟框架的文章。 我不清楚的是,新API的clk_prepare/unprepare,的使用是对clk_enable/disable API的补充。另外,虽然API的clk_enable/disable可以从原子上下文中调用,但这并不适用于clk_prepare/unprepare (可以休眠)。为什么会有这种功能和行为的分离?
时钟API 接口定义8 3.3.1.clk_get8 3.3.2.devm_clk_get8 3.3.3.clk_put9 3.3.4.clk_set_parent9 3.3.5.clk_get_parent9 3.3.6.clk_prepare9 3.3.7.clk_enable10 3.3.8.clk_prepare_enable10 3.3.9.clk_disable11 3.3.10.clk_unprepare11 3.3.11.clk_disable_unprepare11 3.3.12.clk_get_...
clk_prepare_enable() may fail, so let's check its return value and propagate it in the case of error. Also, fix the sequence for disabling the clock in the probe error path and also in the remove funct Signed-off-by: Fabio Estevam <fabio.este...@freescale.com> ...