devm_regmap_init_i2c【转】
本文转载自:http://blog.csdn.net/u011975319/article/details/52128845
本文有此处转载http://blog.csdn.net/luckywang1103/article/details/47091817
3.0linux内核版本中,codec driver是直接调用i2c的i2c_master_send函数与i2c_transfer函数来实现i2c的读写,
3.3版本,codec driver通过调用snd_soc_read和snd_soc_write函数来实现i2c的读写,这两个函数内部包裹了codec->read和codec->write,而codec->read和codec->write的赋值是在snd_soc_codec_set_cache_io中,最终也是调用了i2c_master_send函数与i2c_transfer函数
3.10版本开始出现了regmap的接口,这个regmap将i2c、spi、mmio、irq都抽象出统一的接口regmap_read、regmap_write、regmap_update_bits等接口
例如对于i2c接口
devm_regmap_init_i2c(i2c, ®map_i2c);或者使用
devm_regmap_init(&i2c->dev, ®map_i2c, &i2c->dev, config)
|
regmap_init(struct device *dev, struct regmap_bus *bus, void *bus_content, struct regmap_config *config);
1)注册方法regmap_bus和对象i2c:
通过把struct regmap_bus regmap_i2c和i2c->dev注册到regmap模块中去,而regmap_bus中已经实现了read和write函数(调用的就是i2c_master_send与i2c_transfer)
2)使用注册的对象和方法
当调用regmap_read或者regmap_write的时候,这两个函数会取出struct regmap中的content即i2c,并调用之前注册的regmap_bus中的read和write函数来实现读和写。
regmap_update_bit内部调用了regmap_read和regmap_write
我觉得以上的原理挺重要的,我们可以自己实现类似的接口:提供注册的机制,能够将对象以及对象的方法注册进去;当需要调用的时候,取出对应的对象和方法。
devm_regmap_init_i2c【转】的更多相关文章
- linux内核中的regmap是如何初始化的?
1. 内核版本 5.2.0 2. 请看devm_regmap_init_i2c (include/linux/regmap.h) /** * devm_regmap_init_i2c() - Init ...
随机推荐
- gcc/g++ 编译时出现:“对’xxxx’未定义的引用,collect2: error: ld returned 1 exit status” 的错误
出现的问题: 在使用 make 编译实现一个程序时,出现了下面的错误.查看程序源文件所在的目录时发现程序已经完成了编译,并生成了 list_repo.o 的文件,说明是在程序链接生成可执行文件时发生了 ...
- Spoj-NPC2015A Eefun Guessing Words
Eefun Guessing Words Eefun is currently learning to read. His way of learning is unique, by trying ...
- 等价表达式(codevs 1107 答案错误)
题目描述 Description 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...
- css样式---隐藏元素
1.通过设置width:0;或height:0 2.将元素的opacity设置成0 3.通过定位将元素移出屏幕范围 4.通过text-indent实现隐藏文字的效果 5.通过z-index隐藏一个元素 ...
- Hadoop学习(一)生态体系之简介
Hadoop 系列(一)基本概念 一.Hadoop 简介 Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情況下开发分布式程序,充分利用集群 ...
- Java日志框架-Spring中使用Logback(Spring/Spring MVC)
继上一篇文章http://www.cnblogs.com/EasonJim/p/7800880.html中所集成的是基于Java的普通项目,如果要在Spring和Spring MVC上集成,需要做如下 ...
- Win10 - 默认图片查看器恢复
1. 新建一个文本文件“1.txt” 2. 在“1.txt”中添加如下代码,并保存: Windows Registry Editor Version 5.00 ; Change Extension's ...
- 【Todo】git的fast forward & git命令学习 & no-ff
git的fast-forward在之前的文章有介绍过,但是介绍的不细: http://www.cnblogs.com/charlesblc/p/5953066.html fast-forward方式就 ...
- [Tools] Convert SVG to a PDF in Node with PDFKit and SVG.js
Given a epxress application and an svg template, we want to draw some text, date onto it and convert ...
- 使用UltraISO刻录自己的音乐CD步骤
1.文件->新建->音乐光盘映像. 2.在左下方,“本地目录”中,找到音乐所在目录,右下方会出现mp3等音乐文件. 3.在右下方,点击音乐文件,右键选“添加”.音乐文件会出现在右上方窗口里 ...