内核把所有的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. HDU 1406 完数
  2. python的image读取的图片是什么类型的-python如何实现读取并显示图片(不需要图形界面)...
  3. 不就是发个短信吗?这你都会?
  4. 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响
  5. css --- 应用媒介查询制作响应式导航栏
  6. 百度平台K12人群洞察报告
  7. 音视频开发(36)---麦克风阵列声音定位解决方案
  8. pinpoint 监控mysql_基于Centos7系统安装部署Pinpoint分布式监控
  9. Python内置函数max()高级用法
  10. 同城o2o商城系统开发和运营四大要素
  11. Vue打包项目图片等静态资源的处理
  12. java中定义存放汉字的数组_Java中如何存储汉字
  13. 《2020年度中国数据竞赛年鉴》发布!
  14. 向系统日历添加日程提醒的规则
  15. powershell下使用linux命令,Win10系统下使用Windows PowerShell运行ABD命令的方法
  16. 3.2.3 Quantization Techniques(HDR量化)(Advanced High Dynamic Range Imaging)Schlick TMO
  17. 网关系统就该这么设计(万能通用),稳的一批!
  18. OUC2021软件工程OUC拼车程序小组Gamma阶段博客目录
  19. 目前常见的大数据分析软件有哪些?
  20. 个人记账软件 共享及有条件开源

热门文章

  1. 阿里云网络解决方案架构师任江波:全球一张网,支撑游戏业务高效互联
  2. 無名の主页个人主页html源码(附源码)
  3. vbox虚拟机centos网桥模式上网
  4. 正则表达式的贪婪型,勉强型,占有型
  5. c语言:分鱼(枚举)
  6. css sass的@mixin 与 @include引用
  7. U盘“请将磁盘插入U盘”的问题/U盘0字节修复方法
  8. Win10 64bit +VS2015+GPU版本MXNet+Tensorflow 1.3.0的安装
  9. opencv亚像素边缘精度_opencv 亚像素 算法
  10. 愚人节整人软件测试自学,愚人节被玩坏的五大整人APP 帮你问鼎愚人节最佳损友...