设备树节点

i2c0: i2c@01c2ac00 {compatible = "allwinner,sun6i-a31-i2c";reg = <0x01c2ac00 0x400>;interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;clocks = <&ccu CLK_BUS_I2C0>;resets = <&ccu RST_BUS_I2C0>;pinctrl-names = "default";pinctrl-0 = <&i2c0_pins>;status = "disabled";#address-cells = <1>;#size-cells = <0>;
};

控制器驱动源码路径

linux-5.1.0\drivers\i2c\busses\i2c-mv64xxx.c

控制器结构体与注册到核心层

linux-5.1.0\include\linux\i2c.h
struct i2c_adapter adapter;
linux-5.1.0\drivers\i2c\i2c-core-base.c
int i2c_add_numbered_adapter(struct i2c_adapter *adap);

控制器设备树节点包括外设子节点,记录到adapter结构体
drv_data->adapter.dev.of_node = pd->dev.of_node;

iic控制器驱动platform的probe函数调用流程

mv64xxx_i2c_probei2c_add_numbered_adapter /* 添加I2C控制器 */__i2c_add_numbered_adapteri2c_register_adapter /* 注册I2C控制器 */device_register /* I2C控制器设备注册 */of_i2c_register_devices/* 从设备树中把与该adapter匹配的iic控制器设备树节点找出来 */bus = of_get_child_by_name(adap->dev.of_node, "i2c-bus");/*解析设备树iic控制器节点,根据设备树的iic外设节点创建client */client = of_i2c_register_device(adap, node);  i2c_new_device// client是根据当前注册的adapter创建的,所以直接绑定adapter,以后不用再为client找adapter。client->adapter = adap;  // i2c外设client都绑定该i2c总线,不管这个client属于哪个adapter,client与adapter的关系已在上一步表述清楚,这一步是外设与外设驱动的总线匹配关系。 // 不过该client属于哪个adapter,都是通过同一条i2c_bus_type的i2c_device_match函数匹配,换言之,外设驱动适合所有adapter的外设client,只要i2c_bus_type的i2c_device_match匹配成功。client->dev.bus = &i2c_bus_type; device_register /* 添加设备I2C从设备 */i2c_scan_static_board_info /* 查找静态表,有些I2C设备是在代码中写死的,不是通过设备树的形式 */i2c_new_deviceclient->dev.bus = &i2c_bus_type;

注册前为什么需要申请中断?

drv_data->irq = platform_get_irq(pd, 0);
rc = request_irq(drv_data->irq, mv64xxx_i2c_intr, 0, MV64XXX_I2C_CTLR_NAME, drv_data);

看设备树中断描述
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
SPI:shared processor interrupts 的第6号中断,参考: 设备树中的interrupts属性解析

全志V3s IIC控制器驱动分析相关推荐

  1. 【分析笔记】全志 i2c-sunxi.c 控制器驱动分析

    分析平台:全志 A64 内核版本:Linux 4.9 数据手册:Allwinner_A64_User_Manual_V1.1.pdf (whycan.com) 驱动框架 I2C 设备驱动 作为方案应用 ...

  2. 全志V3s USB PHY驱动分析

    USB PHY作用 USB控制器接受的是数字信号,USB PHY负责:在USB控制器与USB接口之间做数字信号与模拟信号的转换. 参考: 维基百科 PHY usb-phy usb-phy 设备树节点 ...

  3. linux pl320 mbox控制器驱动分析-(3) pl320驱动代码分析

    linux pl320 mbox控制器驱动分析-(3)pl320驱动代码分析 1 pl320 mbox控制器宏定义 2 初始化接口 3 ipc_handler mbox中断处理函数 4 数据的收发 4 ...

  4. linux pl320 mbox控制器驱动分析 - (1) pl320手册分析

    linux pl320 mbox控制器驱动分析 1 pl320简介 1.1 pl320用途 1.2 pl320 IPCM 由以下部分组成: 1.3 pl320 IPCM可配置的参数 1.4 功能操作 ...

  5. 基于全志A64平台v4l2驱动分析

    纪念再一次使用这里,刚好开通好博客,写下近年来的第一篇. 最近要做一个全志A64平台的vfe驱动培训,组织了下v4l2与vfe驱动分析.这里记录下. 全志A64芯片csi部份不自带isp(其实是有带一 ...

  6. 全志V3S裸机串口驱动(中断方式接收,DMA接收有问题,小于32字节数据无法触发DMA传输)

    调试DMA接收遇到了个很奇怪的问题,就是DMA发送没问题,DMA接收的时候,如果数据小于32字节,数据被DMA从串口接收FIFO中取走了,但是并不会传输到指定的buff中,这个就没法用于接收未知长度的 ...

  7. QCA7000/QCA7005基于全志V3S Linux系统驱动移植

    使用硬件: 荔枝派V3S Lichee Pi Zero with Dock QCA7000HomePlugGreen PHY模块 开发环境: Ubuntu18.04.6 LTS buildroot:2 ...

  8. 全志t3linux驱动_全志T3 Linux显示驱动分析

    1.总体架构 全志T3处理器的显示框架是基于标准Linux的帧缓冲架构,其结构如图 1.1所示.显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动.显示设备驱动. ...

  9. 全志T3 Linux显示驱动分析

    1.总体架构 全志T3处理器的显示框架是基于标准Linux的帧缓冲架构,其结构如图 1.1所示.显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动.显示设备驱动. ...

  10. 7.荔枝派 zero(全志V3S)-编译内核驱动,生成KO文件

    上面是我的微信和QQ群,欢迎新朋友的加入. 在网上溜了一大圈,发现竟然没人写过荔枝派编译内核驱动的帖子. 或许是我输入的关键字不对 今天特意做了一下这个事情. 1.改kernel makefile 当 ...

最新文章

  1. php实现小论坛,PHP开发 小型论坛教程之添加论坛-1
  2. Ubuntu安装HBase2.2.4并进行单机/伪分布式配置
  3. JVM学习笔记之-垃圾回收相关概念 System.gc()的理解 内存溢出与内存泄漏 STW 垃圾回收的并行与并发 安全点与安全区域 再谈引用:强引用 软引用 弱引用 虚引用 终结器引用
  4. linux go 安装路径,在Alpine Linux D的路径中找不到已安装的Go二进制文件
  5. 关于将vrep和matlab或者python结合的两种方法的比较
  6. Java前端顺序,java种初始化顺序
  7. 软件测试电脑内存适配,利用Memtest86 测试你电脑的内存
  8. itext 生成 PDF(一)
  9. dll注入之SetWindowsHookEx 键盘消息钩子
  10. Java HotSpot VM参数大全
  11. 2021年中国棘轮手柄市场趋势报告、技术动态创新及2027年市场预测
  12. 第二章 z变换之四 、序列的z变换与连续时间信号的Laplace变换、Fourier变换的关系
  13. 【C语言】计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
  14. 俄罗斯游戏java源代码_Java俄罗斯方块游戏源代码JAVA游戏源码下载
  15. 社区活动|Apache Hudi x Apache Pulsar Meetup 杭州站来啦!
  16. 组网胖模式_胖AP工作模式 | ZyXEL
  17. (3)登录界面———注册界面
  18. 1角5角荧光参照表转自南海老黄
  19. python编程培训费用-python编程语言学费多少钱?python培训费用贵吗
  20. [英语词条]手足口病

热门文章

  1. eyoucms页面调用
  2. 利用简单电阻分压原理自动测量电阻
  3. linux下anjuta的java环境,Anjuta下载-Anjuta IDE For Linux(集成开发环境)V3.18.0 官方版 - 极光下载站...
  4. bootice添加linux_使用BOOTICE 恢复系统启动项
  5. HTTP协议:工作原理
  6. 达梦数据库DM8中针对中文进行排序
  7. 打蚊子表情包_拍蚊子表情包 - 拍蚊子微信表情包 - 拍蚊子QQ表情包 - 发表情 fabiaoqing.com...
  8. 软件工程—实践者的研究方法
  9. c语言scanf用法详解
  10. 桌面版linux装哪个版本好用,linux桌面版哪个版本好用?