时钟API的使用
对于一般的驱动开发(非clock驱动),我们只需要在dts中配置时钟,然后在驱动调用通用的时钟API接口即可。
1、设备树中配置时钟
mmc0:mmc0@0x12345678{
compatible = "xx,xx-mmc0";
......
clocks = < &peri PERI_MCI0 >;//指定mmc0的时钟来自PERI_MCI0,PERI_MCI0的父时钟是peri
clocks-names = "mmc0"; //时钟名,调用devm_clk_get获取时钟时,可以传入该名字
......
};
以mmc的设备节点为例,上述mmc0指定了时钟来自PERI_MCI0,PERI_MCI0的父时钟是peri,并将所指定的时钟给它命名为"mmc0"。
2、驱动中使用API接口
简单的使用:
/* 1、获取时钟 */
host- >clk = devm_clk_get(&pdev- >dev, NULL); //或者devm_clk_get(&pdev- >dev, "mmc0")
if (IS_ERR(host- >clk)) {
dev_err(dev, "failed to find clock sourcen");
ret = PTR_ERR(host- >clk);
goto probe_out_free_dev;
}
/* 2、使能时钟 */
ret = clk_prepare_enable(host- >clk);
if (ret) {
dev_err(dev, "failed to enable clock source.n");
goto probe_out_free_dev;
}
probe_out_free_dev:
kfree(host);
在驱动中操作时钟,第一步需要获取struct clk指针句柄,后续都通过该指针进行操作,例如:设置频率:
ret = clk_set_rate(host- >clk, 300000);
获得频率:
ret = clk_get_rate(host- >clk);
注意:devm_clk_get()的两个参数是二选一,可以都传入,也可以只传入一个参数。
像i2c、mmc等这些外设驱动,通常只需要使能门控即可,因为这些外设并不是时钟源,它们只有开关。如果直接调用clk_ser_rate函数设置频率,clk_set_rate会向上传递,即设置它的父时钟频率。例如在该例子中直接调用clk_set_rate函数,最终设置的是时钟源peri的频率。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Linux
+关注
关注
88文章
11817浏览量
219549 -
API
+关注
关注
2文章
2476浏览量
67020 -
开发
+关注
关注
0文章
380浏览量
42238 -
时钟
+关注
关注
11文章
1999浏览量
135231
发布评论请先 登录
相关推荐
热点推荐
鸿蒙开发API9 到 API12,有哪些不同
##HarmonyOS 应用开发##
虽然API9已经属于过时了,但是现在很多学校里教的还是基于API9的鸿蒙开发,当学生需要在毕业设计中使用A
发表于 06-29 22:47
OpenHarmony 应用开发SDK、API 与基础工具
一、整体说明
ArkTS 语言是鸿蒙系统主推的应用开发语言。因此鸿蒙系统提供给开发者的 API 绝大部分也是 ArkTS 语言的。
鸿蒙系统提供的 API 范围非常全面,包括应用服务、
发表于 09-19 15:45
分析API都有哪些特点
。因此,理解好的API特性是至关重要的。那么什么是好的API呢? API一词似乎是对软件开发人员的一种Rorschach Test。Web开发
发表于 09-28 17:38
•11次下载
API+DevOps:华为云API Arts一体化平台,端到端呵护您的API
、API托管、API运维、API变现,助力企业数字化转型。 API和微服务已经成为核心的数字化变革驱动引擎,数字企业RD始终围绕着
华纳云:使用 WireMock 在开发和测试中模拟 API 服务
在本地开发和测试期间,经常会遇到您的应用依赖于远程 API 的情况。网络问题、速率限制,甚至 API 提供商的停机都可能阻碍您的进度。这会严重影响您的工作效率并使测试更具挑战性。这就
api驱动的云服务是什么意思?
API驱动的云服务是指利用API技术来驱动和提供云服务的模式。在这种模式下,云服务提供商会公开一系列的API接口,允许
设计优先方法论实践:SmartBear API Hub +ReadyAPI组合使用,构建高效的API开发流
设计优先是一种在编写代码和执行测试之前,优先设计API接口的开发方式,能够帮助提升团队协作效率、加快开发进度、减少Bug和返工,并改善用户体验。如何实现?——将该与SmartBear API
驱动开发时钟API的使用
评论