MTK6592 GPIO模拟I2C

MTK6592 GPIO模拟I2C这篇博客介绍了在 MTK6592 平台上如何通过 GPIO 模拟 I2C 总线 因为 MTK 平台不支持 I2C GPIO 功能

虽然Linux内核支持该功能,但是MTK并不支持I2C-GPIO功能,官方说法是硬件I2C接口已经够多,不需要软件模拟,并且用GPIO模拟I2C会影响系统性能...

所以,要做的,就是将被MTK阉割的功能给加回来,这个并不难。

GPIO模拟I2C核心就是增加了一个I2C Bus驱动,然后将要用GPIO模拟I2C的功能的器件挂在这个新建的Bus上面。

所以,第一件事情就是增加I2C-gpio Bus的驱动及设备:

1. 增加GPIO模拟I2C总线驱动

将i2c-gpio.c 以及 i2c-algo-bit.c加入编译

分析下i2c_gpio_probe(),得知它的作用是给当前的驱动设置了ADAPTER,而这个ADAPTER的Algorithms真是由i2c-algo-bit.c提供。大家也可以注意下这两个文件所处的文件夹的名称。

所以,当外挂的I2C设备驱动调用了i2c-core的接口,i2c-core就会找到ADAPTER, 然后使用该ADAPTER的Algorithms来实现通信。

下图是一个次简单的通信调用堆栈图,方便大家理解这些个代码


2. 增加GPIO模拟I2C总线设备

在mt_devs.c中的数组mt_device_i2c加入

今天的文章 
MTK6592 GPIO模拟I2C分享到此就结束了,感谢您的阅读。
                    
编程小号
上一篇 2024-12-30 23:33
下一篇 2024-12-30 23:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/91857.html