攻城狮解析丨时钟使用之注册和获取(一)

本文主要介绍了在i.MX6平台上,如何在3.0.35版本内核中获取和使用时钟,特别是通过名称和设备进行时钟获取。内容包括clk_get函数的使用,时钟查找过程,以及时钟注册的过程,如mx6_clocks_init函数在板级文件初始化中如何将时钟添加到clocks链表。
摘要由CSDN通过智能技术生成

我们在编写或修改驱动时,经常会遇到时钟相关的问题,不知道从什么地方下手。在本文中,以i.MX6的3.0.35版本的内核举例时钟如何获取和使用。

我们常见的获取时钟的方法
❶ 通过名称获取

例如:获取时钟clko

clko = clk_get(NULL, “clko_clk”);
❷ 通过设备获取

例如在音频接口ssi的驱动中获时钟,

ssi->clk = clk_get(&pdev->dev, NULL); //设备的名字是 “imx-ssi”

我们可以通过查看函数clk_get的原型来进一步查看始终是怎么获取的

struct clk *clk_get(struct device *dev, const char *con_id)

{

   const char *dev_id = dev ? dev_name(dev) : NULL;



    return clk_get_sys(dev_id, con_id);

}

我们继续查看函数clk_get_sys,此函数通过设备的名字或时钟的名字来获取时钟

struct clk *clk_get_sys(const char *dev_id, const char *con_id)

{

    struct clk_lookup *cl;



    mutex_lock(&clocks_mutex); 

    cl = clk_find(dev_id, con_id);

    if (cl && !__clk_get(cl->clk))

            cl = NULL;

    mutex_unlock(&clocks_mutex);



    return cl ? cl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值