zoukankan      html  css  js  c++  java
  • linux platform i2c 驱动理解

    linux驱动 分为三个部分

    驱动 总线 设备

    总线有platform虚拟总线,i2c总线等

    比如i2c-imx.c将i2c控制器注册为platform形式

    platform_driver_register(&i2c_imx_driver);

    platform总线的两边 分别是driver和device链表

    platform_driver_register相当于在driver链表中添加了一个成员

    设备树描述了device信息,扫描设备树,相当于在device链表中添加成员

    i2c-imx将一些可变的控制器信息通过设备树表示,其他固定不变的部分写入i2c-imx.c driver里

    platform_match会进行适配,一旦适配成功,就会执行i2c-imx.c,即driver中的probe函数来初始化i2c控制器

    在i2c的probe函数中,会调用i2c_add_numbered_adapter注册i2c总线,初始化i2c_adapter和i2c_algorithm,对外提供读写API

    i2c_imx->adapter.algo = &i2c_imx_algo; //这样调用i2c_transfer就对应了i2c_imx_algo中的.master_xfer

    这样就有了i2c总线,如果某个设备接到了i2c总线上,比如ap3216c三合一环境光传感器

    那么在i2c总线上,device是设备树上ap3216c的信息,driver是ap3216c.c驱动

     每个i2c设备会对应一个i2c_client 相当于platform_device

    当i2c设备和驱动匹配成功后,就会执行ap3216c.c的probe函数,probe最后会执行ap3216cdev.private_data = client;

  • 相关阅读:
    POJ 2955 Brackets 区间DP
    POJ 3311 Hie with the Pie 最短路+状压DP
    POJ 3615 Cow Hurdles(最短路径flyod)
    hdu 3790 最短路径dijkstra(多重权值)
    poj 3254 Corn Fields 状压DP
    状压DP
    poj2411 Mondriaan's Dream 状压DP
    M: Mysterious Conch 字符串哈希
    哈希(hash)理解
    域渗透:GPP(Group Policy Preferences)漏洞
  • 原文地址:https://www.cnblogs.com/idyllcheung/p/13275350.html
Copyright © 2011-2022 走看看