Linux下I2C驱动client注册的方法
来源:互联网 发布:cydia微信软件源 编辑:程序博客网 时间:2024/06/05 07:50
可参考linux-3.4/Documents/i2c/instantiating-devices文档
第一种方法:
定义一个i2c_board_info,里面有名字,地址
然后i2c_register_board_info(busnum,……)(把他们放入链表)
list_add_tail(&devinfo->list, &__i2c_board_list);
链表何时使用
i2c_register_adapter->i2c_scan_static_board_info(struct i2c_adapter *adapter)>i2c_new_device
使用限制:必须i2c_register_adapter之前i2c_register_board_info
所以不适合我们动态加载insmod。
第二种方法:
1.2直接i2c_new_device,i2c_new_probe_device
1.2.1 i2c_new_device :认为设备肯定存在
1.2.2 i2c_new_probed_device :对于“已经识别出来的设备”probed__device”,才会(new)
probe(adap, addr_list[i] //确定设备是否真的存在
info->addr = addr_list[i];
return i2c_new_device(adap, info);
第三种方法:
1.3从用户空间创建设备
创建设备
echo at24c02 0x50 > /sys/class/i2c-adapter/i2c-7/new_device
删除设备
echo 0x50 > /sys/class/i2c-adapter/i2c-7/new_device
导致i2c_unregister_device
第四种方法:
通过i2c_detect函数。
i2c_detect函数执行过程:
i2c_add_driver
i2c_register_driver
__process_new_driver
i2c_do_add_adapter
i2c_detect
i2c_detect_address
其中在i2c_detect_address中做了两件很重要的事情:
1、err = driver->detect(temp_client, &info); //调用执行driver中的detect函数
2、client = i2c_new_device(adapter, &info);//根据driver->detect函数的Info参数创建一个client并且注册。
第一种方法:
定义一个i2c_board_info,里面有名字,地址
然后i2c_register_board_info(busnum,……)(把他们放入链表)
list_add_tail(&devinfo->list, &__i2c_board_list);
链表何时使用
i2c_register_adapter->i2c_scan_static_board_info(struct i2c_adapter *adapter)>i2c_new_device
使用限制:必须i2c_register_adapter之前i2c_register_board_info
所以不适合我们动态加载insmod。
第二种方法:
1.2直接i2c_new_device,i2c_new_probe_device
1.2.1 i2c_new_device :认为设备肯定存在
1.2.2 i2c_new_probed_device :对于“已经识别出来的设备”probed__device”,才会(new)
probe(adap, addr_list[i] //确定设备是否真的存在
info->addr = addr_list[i];
return i2c_new_device(adap, info);
第三种方法:
1.3从用户空间创建设备
创建设备
echo at24c02 0x50 > /sys/class/i2c-adapter/i2c-7/new_device
删除设备
echo 0x50 > /sys/class/i2c-adapter/i2c-7/new_device
导致i2c_unregister_device
第四种方法:
通过i2c_detect函数。
i2c_detect函数执行过程:
i2c_add_driver
i2c_register_driver
__process_new_driver
i2c_do_add_adapter
i2c_detect
i2c_detect_address
其中在i2c_detect_address中做了两件很重要的事情:
1、err = driver->detect(temp_client, &info); //调用执行driver中的detect函数
2、client = i2c_new_device(adapter, &info);//根据driver->detect函数的Info参数创建一个client并且注册。
阅读全文
0 0
- Linux下I2C驱动client注册的方法
- linux I2C 驱动之----i2c驱动的注册过程
- I2C驱动的另类注册方法
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册 .
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册
- linux i2c驱动注册流程
- linux下i2c适配器的注册过程
- Linux下i2c设备的注册过程
- linux下I2C驱动
- linux下i2c驱动
- cmake使用示例与整理总结
- 空间如何通过伪静态实现301重定向
- Fibre Channel光纤通道系统基础(三)
- c:forEach 遍历集合中的元素属性详解,判断是否是最后一个元素,
- java实现最大堆及堆排序
- Linux下I2C驱动client注册的方法
- win下安装composer
- OpenGL ES绘图
- SpringMVC工作原理?
- laravel-admin 使用心得
- R语言典型相关分析
- UVA 1103 象形符号
- 自定义Behavior(二)
- 数据结构-->图