设备树节点

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. Markdown转HTML之Node篇
  2. Coherence-Enhancing Shock Filters(附源码)
  3. 使用下列 else-if 排列来处理多个条件:
  4. 2017校赛 问题 D: 我知道了,你知道了吗?【递归】
  5. 云炬VB开发笔记 4选择结构
  6. 【CodeForces - 340D】Bubble Sort Graph (思维,nlogn最长上升子序列类问题)
  7. Django 模板实现(动态)图片/头像展示到页面
  8. 对extern C的一点小认识
  9. [Ext JS 4] 实战之 ComboBox 和 DateField (消失之解决办法)
  10. 具体数学第二版第四章习题(4)
  11. js一键复制并调起微信客户端
  12. 51nod 1423:最大二“货”
  13. html兼容ie低版本,jquery不兼容低版本ie浏览器怎么办?
  14. 巴比特MatPool运营NEO节点,2019年必定是 Staking 经济元年
  15. 逐步回归matlab函数,逐步回归matlab程序
  16. 已知四点经纬度位置计算球面面积
  17. C++使用OpenSSL证书API
  18. 如何创业系列1:创业四要素
  19. 中国金属采矿行业前景调研及发展战略深度研究报告2022-2028年
  20. 【工具】白嫖1年多总结一下OneDrive的使用体验,OneDrive基本操作方法

热门文章

  1. xrd连续扫描和步进扫描_XRD基础性问题
  2. 我的盖洛普“优势识别器”测试报告
  3. 分布式机器学习——入门篇
  4. 什么软件能测试显卡功耗,如何在win10中检查计算机的显卡功耗
  5. 中维云视通网络监控系统
  6. html烟花特效,发射粒子特效,爱心特效,动态祝福、节日祝福网页,时间罗盘,黑客帝国代码雨、文字闪烁、表白爱心网页等等(附下载链接)
  7. linux 安装 迅雷
  8. Game.Physics.Engine.Development(游戏物理引擎开发)
  9. java迷宫算法_迷宫算法(JAVA实现)
  10. DB2操作指南及命令大全