设备驱动(十八)

在平台代码中添加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设备信息
  1. 使用I2C_BOARD_INFO宏

   2.使用i2c_register_board_info注册i2c设备
设备驱动(十八)_第1张图片
(2)编写i2c设备驱动
  1. 定义i2c_driver
  2. 加载函数 i2c_add_driver
  3. 卸载函数 i2c_del_driver
  4. 实现probe
    1. 保存client
    2. 申请设备号
    3. 注册字符设备
  5. 实现remove
    1. 注销字符设备
    2. 释放设备号
  6. 实现操作集合
    1. open 定义当前读写地址
    2. ioctl 设置当前读写地址
    3. read操作
      1. 封装i2c消息
      2. 调用i2c_transfer
      3. copy_to_user
    4. write操作
      1. 封装i2c消息
      2. 调用i2c_transfer
      3. copy_from_user
<linux/i2c.h>


你可能感兴趣的:(linux,kernel,设备驱动)