当前位置: 技术问答>linux和unix
Linux下的i2c驱动
来源: 互联网 发布时间:2016-08-18
本文导语: 我使用 pca9564芯片挂在地址数据线上实现i2c功能。目前正在写驱动程序,使用到了内核提供的 i2c-pca-platform。 我看到资料说,在注册驱动之前必须实例化一个设备。使用类似 i2c_register_board_info(), platform_add_devices()的...
我使用 pca9564芯片挂在地址数据线上实现i2c功能。目前正在写驱动程序,使用到了内核提供的 i2c-pca-platform。
我看到资料说,在注册驱动之前必须实例化一个设备。使用类似 i2c_register_board_info(), platform_add_devices()的函数。
我应该在驱动的哪部份写这些函数呢? 这些函数又是如何与i2c-pca-platform中的函数关联呢?或者说我在编译驱动的时候需要把添加设备的这些函数也编译进去么??
我第一次写驱动程序,大虾们帮帮忙啊,先谢谢了。
我看到资料说,在注册驱动之前必须实例化一个设备。使用类似 i2c_register_board_info(), platform_add_devices()的函数。
我应该在驱动的哪部份写这些函数呢? 这些函数又是如何与i2c-pca-platform中的函数关联呢?或者说我在编译驱动的时候需要把添加设备的这些函数也编译进去么??
我第一次写驱动程序,大虾们帮帮忙啊,先谢谢了。
|
lz说得比较含糊,没说清楚是i2c controll的驱动,还是i2c device的驱动。
我估计你想说i2c device的驱动
在i2c_register_board_info里完成两个**重要**功能
1)设置.type, 最终会在i2c_new_device里会被设成client->name
由i2c_add_adapter/i2c_add_numbered_adapter->i2c_register_adapter->i2c_scan_static_board_info->
i2c_new_device调用。
2) 设置slave的地址
对于1)
在device的驱动里必须实现 i2c_device_id, 不然i2c_driver的probe就会失败,因为i2c是通过
判断i2c_device_id.name和client->name(即i2c_board_info.type)来判断的。
看drivers/i2c/i2c-core.c里的i2c_device_probe函数便知。
对于2)
在进行i2c命令/数据传输的时候就会用到了。
另外可以参考:
Documentation/i2c/writing-clients
我估计你想说i2c device的驱动
在i2c_register_board_info里完成两个**重要**功能
1)设置.type, 最终会在i2c_new_device里会被设成client->name
由i2c_add_adapter/i2c_add_numbered_adapter->i2c_register_adapter->i2c_scan_static_board_info->
i2c_new_device调用。
2) 设置slave的地址
对于1)
在device的驱动里必须实现 i2c_device_id, 不然i2c_driver的probe就会失败,因为i2c是通过
判断i2c_device_id.name和client->name(即i2c_board_info.type)来判断的。
看drivers/i2c/i2c-core.c里的i2c_device_probe函数便知。
对于2)
在进行i2c命令/数据传输的时候就会用到了。
另外可以参考:
Documentation/i2c/writing-clients