内核对swi2c的实现
内核中对swI2c 有两个参考,一个是在driver/i2c/bus/i2c-gpio.c 中,要使用这的话,可以像正常使用i2c一样,客户不清楚下面是真的i2c还是用gpio 模拟的,这个直接链接到i2c的框架中国。但是这个需要bios来适配,另外一个实现在drivers/staging/sm750fb/ddk750_swi2c.c 中,这个文件中直接写死gpio,不需要bios 来配置。和i2c的适配层没有关系,i2c的读和写都是自己实现
这里以scl的波形如何控制static void sw_i2c_scl(unsigned char value)
{unsigned long gpio_data;unsigned long gpio_dir;gpio_dir = peek32(sw_i2c_clk_gpio_data_dir_reg);if (value) { /* High *//** Set direction as input. This will automatically* pull the signal up.*/gpio_dir &= ~(1 << sw_i2c_clk_gpio);poke32(sw_i2c_clk_gpio_data_dir_reg, gpio_dir);} else { /* Low *//* Set the signal down */gpio_data = peek32(sw_i2c_clk_gpio_data_reg);gpio_data &= ~(1 << sw_i2c_clk_gpio);poke32(sw_i2c_clk_gpio_data_reg, gpio_data);/* Set direction as output */gpio_dir |= (1 << sw_i2c_clk_gpio);poke32(sw_i2c_clk_gpio_data_dir_reg, gpio_dir);}
}
可以看到这里直接通过peek32 和 poke32 来直接写gpio相关的寄存器的。
/* software control endianness */
static inline u32 peek32(u32 addr)
{return readl(addr + mmio750);
}static inline void poke32(u32 addr, u32 data)
{writel(data, addr + mmio750);
}
内核对swi2c的实现相关推荐
- 认识设备树(四)——内核对DTB文件的解析
目录 前言 1 从u-boot传参到__atags_pointer 2 内核对设备树中平台信息的处理 2.1 machine_desc 2.2 源码分析 2.2.1 setup_arch 2.2.2 ...
- linux mii 网卡驱动,网卡驱动8-MII接口以及linux内核对MII的支持
首先,向大家推荐一些文章. 这上面说了MII.RMII.SMII.GMII等一系列的接口. 网口一般是这样 MacàPhyà网络变压器àRJ45口 但是只是从电路上不一定看得这么清楚,应为有些是集成的 ...
- Linux网卡驱动适配各个内核,网卡驱动8 MII接口以及linux内核对MII的支持
首先,向大家推荐一些文章. http://blog.chinaunix.net/uid-24148050-id-131084.html http://hi.baidu.com/lds102/item/ ...
- linux内核对TCP的连接状态管理
TCP协议实例连接状态存放在struct sock数据结构的state数据域中. 当TCP协议实例连接处于不同状态时,对数据包的处理不一样,所以每个输入的数据包都要来查询TCP状态机,整个状态机制划分 ...
- linux 内核 睡眠,linux内核对S3C2410睡眠模式的支持有哪些?
一.S3C2410支持4种供电模式 (1)NORMAL MODE 耗电最大.可以通过关闭具体控制器的时钟来节电 (2)SLOW MODE 在此模式下可以没有内部PLL,耗电情况依赖于外部时钟的频率 ( ...
- linux2.6.28内核对bio完成通知的改进--集中走向分离的另一个例子
本文介绍一个例子,linux软中断是谁触发谁执行,这有点各司其职的意思,可是到了触发软中断的时候往往已经丢失触发这个"触发软中断"事件的源头,因此这种各司其职不是那么完善,于是2. ...
- 启用linux内核对usb摄像头的支持,linux利用USB摄像头
www.linuxsir.org/main/node/221?q=node/221 上述帖子是关于摄像头(WebCam)在Linux中批准Spcaserv 架设网络视频监控服务器 (v0.1b). 在 ...
- linux 内核对sata驱动问题
今天测试了一款新主板,据说是工控的,到手开始测试,发现一个小问题,格式化硬盘用的时间是35分钟左右,而IDE硬盘呢却是4分钟左右. 开始测试问题: 1 ,换另一块sata硬盘测试: 结果仍为35分钟左 ...
- linux内核对nsm配置,H3C SecPath系列安全产品 NSQM1NSM 单板手册(V1.02)
第4章 BIOS操作指导 4.1 NSM单板BIOS菜单 安全产品上电启动后,进入用户视图,执行xsm connect slot slotnum 命令,连接到NSM单板的串口上.slotnum表示 ...
最新文章
- 设计模式之四:抽象工厂(披萨店生产披萨模拟流程)
- 同步pod时区与node主机保持一致
- 总结一些关于操作数据库是sql语句还是存储过程问题
- 转——idapython import site failed
- springMVC,aop管理log4j,把当前session信息和错误信息打印到日志
- 信息安全技术网络安全等级保护定级指南_行业标准 |报业网络安全等级保护定级参考指南V2.0发布,明确保护对象、定级要求...
- IView的Form表单自定义验证需注意事项
- python处理pdf实例_python实现pdf转word的例子
- Vue中computed,methods,watch用法上的异同
- 2017程序员综合素质调研测试
- 手机linux服务器控制,手机上如何远程控制Linux服务器?
- crio电压采集 labview_LabVIEW与cRIO入门.pdf
- iconpath 微信小程序_微信小程序 底部导航栏
- iphone手机可不可以运行java_如何在不启动Xcode的情况下运行iPhone模拟器?
- c语言msgbox函数,msgbox函数的返回值类型为什么
- Python写反斜杠\a
- 谭的c语言,c语言 谭
- 有没有计算机网课,有没有电脑录制视频工具可以录制网课?
- 系统服务管理知识-进程守护工具:supervisor
- html wap广告代码,手机wap底部悬浮JS广告代码