c语言sscanf函数的用法是什么
153
2024-01-24
时钟API的使用对于一般的驱动开发(非clock驱动),我们只需要在dts中配置时钟,然后在驱动调用通用的时钟API接口即可1、设备树中配置时钟复制mmc0:mmc0@0x12345678{ compa。
tible = "xx,xx-mmc0"; ...... clocks = ;//指定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的频率。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~