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
相关推荐
ylscode1 小时前
CVE-2026-31694 漏洞深度分析:Linux 内核 FUSE 组件存在本地提权风险,普通用户可直取 root 权限
linux·运维·服务器
无足鸟ICT2 小时前
【RHCA+】bash命令
linux·开发语言·bash
weixin_307779132 小时前
Linux下Docker Compose里运行的MySQL数据库故障诊断Shell脚本
linux·运维·mysql·docker·自动化
小生不才yz2 小时前
Shell脚本精读 · S14-02 | 脚本模板:从 20 行工具到可维护项目
linux
x-cmd3 小时前
Linus 9 年前说「模糊测试有效」——今天已成 OSS-Fuzz 时代铁律
linux·ai·rust·开源·自动化·agent·安全性测试
六点_dn4 小时前
Linux学习笔记-chmod命令
linux·笔记·学习
AOwhisky4 小时前
Python 基础语法(上篇 + 下篇)——综合自测题
linux·windows·python
浮江雾4 小时前
Flutter第四节------核心概念学习笔记:从基础语法到异步编程
linux·服务器·开发语言·笔记·flutter·入门·基础
FoldWinCard4 小时前
D4 Linux 进程 内存 等命令
linux·运维·服务器
在线OJ的阿川4 小时前
仿muduo库实现高并发服务器
linux·服务器·c++