在平台代码中添加device
定义设备结构体
struct i2c_board_info{
}
使用i2c_register_board_info注册
添加驱动
定义id_table数组
struct i2c_device_id e2prom_ids=
{
{"24c02", 0}
};
驱动
struct i2c_driver 24c02_deiver=
{
.driver = {
.name="24c02_driver"
}
.probe=24c02_probe,
.remove=24c02_remove,
.id_table=e2prom_ids,
}
使用i2c_add_driver 添加驱动
使用i2c_del_driver卸载驱动
在read/write封装i2c消息
将封装好的消息传递给i2c_core
(1)在平台代码中添加i2c设备信息
- 使用I2C_BOARD_INFO宏
2.使用i2c_register_board_info注册i2c设备
(2)编写i2c设备驱动
- 定义i2c_driver
- 加载函数 i2c_add_driver
- 卸载函数 i2c_del_driver
- 实现probe
- 保存client
- 申请设备号
- 注册字符设备
- 实现remove
- 注销字符设备
- 释放设备号
- 实现操作集合
- open 定义当前读写地址
- ioctl 设置当前读写地址
- read操作
- 封装i2c消息
- 调用i2c_transfer
- copy_to_user
- write操作
- 封装i2c消息
- 调用i2c_transfer
- copy_from_user
<linux/i2c.h>