Linux i2c驱动初探(一)待补充

背景

移植camera驱动需要。

裸机下的i2c驱动

I2C控制器驱动 + 具体I2C设备驱动,其实linux就是这么搞的。

Linux i2c驱动框架

  • I2C控制器驱动(即也就是I2C总线驱动)由芯片原厂提供。I2C总线驱动的重点是I2C适配器(也就是SOC的I2C接口控制器)驱动,这里要用到两个重要的数据结构:i2c_adapteri2c_algorithm,具体在i2c.h里,驱动核心就是申请该i2c_adapter结构体并初始化成员变量,初始化i2c_adapter后,使用 i2c_add_adapteri2c_add_numbered_adapter来向内核注册I2C控制器驱动。
    i2c_adapter中有一个非常重要的成员变量i2c_algorithm(i2c_algorithm->master_xfer必须实现)此变量包含了I2C控制器访问I2C设备的API接口函数,需要芯片厂商来实现。
    master_xfer来实现具体寄存器的操作,实现I2C的收发。
  • I2C设备驱动(重点),是基于厂商驱动的基础之上的。该结构i2c_client(表示I2C设备,不需要我们自己创建i2c_client,根据设备树自己创建)。重点实现i2c_driver结构,注册使用函数i2c_register_driver,注销使用i2c_unregister_driver
相关推荐
乌萨奇也要立志学C++6 小时前
【Linux】网络基础 从零理解网络通信:局域网、跨网传输与 Socket 预备知识
linux·服务器·网络
RisunJan7 小时前
Linux命令-slabtop(实时显示内核 slab 缓存信息)
linux
蚰蜒螟10 小时前
从内核源码看Linux启动:chroot、execve与MS_MOVE的协奏曲
linux·服务器·网络
酷可达拉斯10 小时前
自动化运维-ansible配置文件与主机清单
linux·运维·自动化·ansible
影视飓风TIM11 小时前
Linux下C语言缓冲区原理 + Git版本控制
linux·c语言·git
来者皆善11 小时前
ZYNQ linux上使用 USB CDC ACM
linux·运维·服务器
☆凡尘清心☆12 小时前
CentOS Stream 9 专用 LNMP 全自动一键脚本
linux·运维·mysql·nginx·lnmp·centos stream 9
Dawn-bit12 小时前
Linux磁盘分区与Swap和磁盘故障查询
linux·运维·服务器·网络·云计算
无足鸟ICT14 小时前
【RHCA+】$[]
linux·运维·服务器
运维技术小记14 小时前
国产化环境配置 VNC 远程桌面:麒麟 V10 实战
linux·运维·服务器