Linux驱动子系统之I2C(6)
2016-07-12 16:19
260 查看
6 总结
下图根据之前的分析丰富的架构图
Tips:I2C适配器驱动不一定是基于platform实现,这里是以s3c-i2c为例。
I2c_driver、i2c_client与i2c_adapter
I2c_driver与i2c_client是一对多的关系,一个i2c_driver上可以支持多个同等类型的i2c_client。调用i2c_add_driver函数将I2c_driver注册到I2C总线上,调用i2c_register_board_info函数将i2c_client注册到全局链表__i2c_board_list。当调用i2c_add_adapter注册适配器时,遍历__i2c_board_list链表,i2c_register_adapter()->i2c_scan_static_board_info()->i2c_new_device()会构建i2c_client结构。当调用i2c_add_driver时,会先注册i2c_driver到I2C总线上,然后调用I2C
BUS注册的match函数进行匹配,如果匹配成功,则先调用I2C BUS中注册的probe函数,在调用i2c_driver中实现的probe函数,完成相应的工作。
*********如有错误,不吝赐教********
下图根据之前的分析丰富的架构图
Tips:I2C适配器驱动不一定是基于platform实现,这里是以s3c-i2c为例。
I2c_driver、i2c_client与i2c_adapter
I2c_driver与i2c_client是一对多的关系,一个i2c_driver上可以支持多个同等类型的i2c_client。调用i2c_add_driver函数将I2c_driver注册到I2C总线上,调用i2c_register_board_info函数将i2c_client注册到全局链表__i2c_board_list。当调用i2c_add_adapter注册适配器时,遍历__i2c_board_list链表,i2c_register_adapter()->i2c_scan_static_board_info()->i2c_new_device()会构建i2c_client结构。当调用i2c_add_driver时,会先注册i2c_driver到I2C总线上,然后调用I2C
BUS注册的match函数进行匹配,如果匹配成功,则先调用I2C BUS中注册的probe函数,在调用i2c_driver中实现的probe函数,完成相应的工作。
*********如有错误,不吝赐教********
相关文章推荐
- Linux驱动子系统之I2C(5)
- Linux下几种文件传输命令 sz rz sftp scp
- CentOS下编译安装LNMP环境
- Linux驱动子系统之I2C(4)
- Linux目录结构及文件
- Linux驱动子系统之I2C(3)
- Linux-KVM源代码结构介绍
- Linux学习笔记之对信号集的操作
- CentOS下Red5安装
- linux中字符串转换函数 simple_strtoul
- Centos Linux 开启端口 - 解决Centos发布服务外网访问不了的问题
- Linux下安装libiconv使php支持iconv函数
- gcc4.9.3 install in linux
- Gt9xx系列------irq的部分
- Linux发行版简介
- CentOs7 安装Tengine 并设置成系统服务,开机自动启动。
- perf学习-linux自带性能分析工具
- linux上安装部署activemq
- Linux下编译软件时指定安装目录
- Linux磁盘管理