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
相关推荐
lihao lihao1 小时前
软硬链接
linux·运维·服务器
YY&DS1 小时前
Qt 嵌入 CEF 在 Linux 下必须设置 `QT_XCB_GL_INTEGRATION=xcb_egl才能加载网页
linux·开发语言·qt
辰风沐阳1 小时前
ThinkPHP8.1 + think-swoole 4.1 使用指南(保姆级教程)
linux·后端·swoole
mounter6252 小时前
迈向硬件级无缝热升级:Linux 内核 VFIO 与 IOMMU 持久化技术的演进之路
linux·服务器·内存管理·kernel
晚风吹红霞2 小时前
Linux软件包管理器详解 —— yum与apt的使用及软件生态
linux·运维·服务器
曦夜日长2 小时前
Linux系统篇,进程概念(一):计算机体系、操作系统的认识、程序的加载过程
linux·运维·网络
似水এ᭄往昔2 小时前
【Linux网络编程】--Socket编程预备
linux·服务器·网络
皮卡狮3 小时前
环境变量详解
linux
致Great3 小时前
Claude Code 上线 Dynamic Workflows:一句话调度 1000 个子智能体并行干活
java·linux·服务器
满天星83035774 小时前
【Git】原理及使用(三)(分支管理)
linux·git