MTK6592 GPIO模拟I2C
2014-08-04 10:34
204 查看
虽然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加入
{
.name = "i2c-gpio",
.id = 3, //3号总线
.dev =
{
.platform_data = &i2c_bus_data,
}
},
而i2c_bus_data的定义为:
到这里,总线相关的就完成了
3. 看看I2C设备如何注册到新建的3号总线上面
i2c_register_board_info(3, &i2c_tpd, 1);//当然,这是在外挂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加入
{
.name = "i2c-gpio",
.id = 3, //3号总线
.dev =
{
.platform_data = &i2c_bus_data,
}
},
而i2c_bus_data的定义为:
struct i2c_gpio_platform_data i2c_bus_data = { .sda_pin = GPIO_HDMI_I2C_SDA, .scl_pin = GPIO_HDMI_I2C_SCL, .sda_is_open_drain = 1, .scl_is_open_drain = 1, .scl_is_output_only = 1, .udelay = 3,//设置成3,只能获取到60KHz的频率,无法再高了,高数据通信的设备,是无法使用gpio来模拟i2c通信的 };
到这里,总线相关的就完成了
3. 看看I2C设备如何注册到新建的3号总线上面
i2c_register_board_info(3, &i2c_tpd, 1);//当然,这是在外挂I2C设备的驱动里进行注册的,该设备并不知道自己在与GPIO模拟的I2C总线进行通信
相关文章推荐
- I2C学习之 STC15F204EA---GPIO端口模拟--简单控制PCF8574AT
- GPIO模拟I2C-1
- GPIO模拟I2C快速入门 与程序实现+软件模拟I2C时序
- gpio模拟I2C
- Linux I2C子系统分析之(一) ----- 用GPIO模拟I2C总线
- i2c 驱动五:gpio模拟i2c
- GPIO模拟I2C程序实现
- 学习:GPIO口模拟I2C
- 学习:GPIO口模拟I2C
- 调试gpio模拟i2c的TP中碰到的问题
- ARM Linux 内核gpio模拟I2C
- GPIO模拟I2C操作
- GPIO模拟I2C程序实现.
- GPIO模拟I2C程序实现
- GPIO模拟I2C操作调试注意事项
- Linux 内核gpio模拟I2C
- GPIO模拟I2C操作
- gpio模拟I2C
- GPIO模拟i2c时序
- linux gpio模拟i2c的使用/用GPIO模拟I2C总线-1