内核把所有的clk  provider管理维护起来,这些存放在of_clk_providers链表当中,
这个provider定义如下:
struct of_clk_provider {struct list_head link; struct device_node *node;struct clk *(*get)(struct of_phandle_args *clkspec, void *data);struct clk_hw *(*get_hw)(struct of_phandle_args *clkspec, void *data);void *data;
};
static LIST_HEAD(of_clk_providers);
static DEFINE_MUTEX(of_clk_lock);
 
添加函数:
/*** of_clk_add_provider() - Register a clock provider for a node* @np: Device node pointer associated with clock provider* @clk_src_get: callback for decoding clock* @data: context pointer for @clk_src_get callback.*/
int of_clk_add_provider(struct device_node *np,struct clk *(*clk_src_get)(struct of_phandle_args *clkspec,void *data),void *data)
{struct of_clk_provider *cp; cp = kzalloc(sizeof(struct of_clk_provider), GFP_KERNEL);if (!cp)return -ENOMEM; cp->node = of_node_get(np);cp->data = data;cp->get = clk_src_get; mutex_lock(&of_clk_lock);
 list_add(&cp->link, &of_clk_providers);mutex_unlock(&of_clk_lock);pr_debug("Added clock from %s\n", np->full_name); return 0;
}
删除操作
/*** of_clk_del_provider() - Remove a previously registered clock provider* @np: Device node pointer associated with clock provider*/
void of_clk_del_provider(struct device_node *np)
{struct of_clk_provider *cp; mutex_lock(&of_clk_lock);list_for_each_entry(cp, &of_clk_providers, link) {if (cp->node == np) {  list_del(&cp->link);of_node_put(cp->node);kfree(cp);break;}}mutex_unlock(&of_clk_lock);
}
获取clk:struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec)
{struct of_clk_provider *provider;struct clk *clk = ERR_PTR(-ENOENT); /* Check if we have such a provider in our array */mutex_lock(&of_clk_lock);list_for_each_entry(provider, &of_clk_providers, link) {if (provider->node == clkspec->np)clk = provider->get(clkspec, provider->data);if (!IS_ERR(clk))break;}mutex_unlock(&of_clk_lock); return clk;
}
 
 

Linux 内核clk 添加clk provider相关推荐

  1. i.MX 6ULL 驱动开发 二十九:向 Linux 内核中添加自己编写驱动

    一.概述 Linux 内核编译流程如下: 1.配置 Linux 内核. 2.编译 Linux 内核. 说明:进入 Linux 内核源码,使用 make help 参看相关配置. 二.make menu ...

  2. Linux 编译内核 dirty,向linux内核版本号添加字符/为何有时会自动添加+号或者xxx-dirty【转】...

    转载说明:你可能想不到,是git管理的"问题",看下面的解析,对于u-boot也是有同样的效果. 问题解决方案: 1.删除.git目录 2.去掉CONFIG_LOCALVERSIO ...

  3. exfat单元分配要设置多少_微软宣布,支持往Linux内核里添加exFAT存储了!跨系统存储的福音...

    栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI exFAT,是微软开发的文件系统,为闪存而生. 你的U盘.SD卡.手机等等存储设备,能存4G以上的大文件,很大程度上是它的功劳. 可exF ...

  4. linux内核静态添加sdio设备,Linux下sdio设备扫描过程

    前言 本文基于Linux version 3.10.52版本代码分析sdio设备的扫描过程,同时选择sdio wifi设备作为分析对象,在分析过程中,附带上sdio的协议内容,帮助初学人员学习sdio ...

  5. 向linux内核版本号添加字符/为何有时会自动添加“+”号

    转载:http://blog.csdn.net/adaptiver/article/details/7225980 1.   引子 编译2.6.35.7 kernel版本的时候发现,"2.6 ...

  6. linux内核lsusb添加,详解 lsusb命令

    USB设备检测的一般过程 USB设备检测也是通过/proc目录下的USB文件系统进行的.为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块.在检测开始时,一般要先检测是否存在/pr ...

  7. Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的“+“号)

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作 因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 也欢迎大 ...

  8. linux 内核编译 Kconfig文件详解

    Kconfig的格式 下面截取/drivers/net下的Kconfig文件中的部分内容, # Network device configuration menuconfig NETDEVICESde ...

  9. Linux内核深入理解系统调用(1):初始化-入口-处理-退出

    Linux内核深入理解系统调用(1):初始化-入口-处理-退出 rtoax 2021年3月 1. Linux 内核系统调用简介 这次提交为 linux内核解密 添加一个新的章节,从标题就可以知道, 这 ...

最新文章

  1. mysql创建表的时候对字段和表添加COMMENT
  2. 薅羊毛丨5个平价好物,终于终于终于打折了!
  3. MongoDB的基本shell操作(三)
  4. Python 使用 Scrapy 发送 post 请求的坑
  5. 要不要赶个时髦,去建设一个「 中台 」?
  6. Windows任务管理 连接用户登录信息 通用类[C#版]
  7. 页面的主题标记--body
  8. 电商:购物车模块解决思路
  9. 塞尔达盾反机器人_《塞尔达传说:荒野之息》新手盾反技巧详解攻略
  10. 奇迹服务端架设教程技术分享探究——学习
  11. Windows7 密码破解
  12. Origin8画图:画百分比堆积柱形图
  13. vue组件中校验身份证号,手机号和邮箱
  14. 配置apache支持django
  15. leetcode881.救生艇(中等)
  16. 加解密、PKI与CA基础
  17. Windows 普通模式切换到管理员权限模式 runas
  18. 高德地图API实现区域立体效果
  19. mysql ASCII '\0' appeared in statement
  20. fft画图出现乱直线情况

热门文章

  1. App性能测试——使用GT监控手机流量
  2. 携手华为打造鲲鹏产业生态 | 麒麟信安亮相鲲鹏开发者创享日·长沙站
  3. 5月29日第十三届蓝桥杯国赛python中高年级组 小鸟看对方 题目、答案和解析
  4. 留学目的地之马里兰州
  5. ArcGIS利用DEM进行洪水淹没分析(附练习数据下载)
  6. swfobject.js 详细解说
  7. python大数据是什么意思_大数据是什么意思
  8. CSS 实现input自定义样式--文本框
  9. 给0-2 岁孩子的书单
  10. python猫狗大战游戏下载_带你少走弯路:强烈推荐的TensorFlow快速入门资料和翻译(可下载)...