zoukankan      html  css  js  c++  java
  • 关于I2C的重要的结构体

    以下内容均摘自linux 2.6.39内核版本的相关文件

    1.i2c_board_info

    包含7个结构体成员,源于i2c.h文件。

    1 struct i2c_board_info {
    2     char        type[I2C_NAME_SIZE];
    3     unsigned short    flags;
    4     unsigned short    addr;
    5     void        *platform_data;
    6     struct dev_archdata    *archdata;
    7     struct device_node *of_node;
    8     int        irq;
    9 };

    2.i2c_client

    包含8个结构体成员,源于i2c.h文件。

     1 struct i2c_client {
     2     unsigned short flags;
     3     unsigned short addr;
     4     char name[I2C_NAME_SIZE];
     5     struct i2c_adapter *adapter;
     6     struct i2c_driver *driver;
     7     struct device dev;
     8     int irq;
     9     struct list_head detected;
    10 };

    3.i2c_adapter

    包含13个结构体成员,源于i2c.h文件。

     1 struct i2c_adapter {
     2     struct module *owner;
     3     unsigned int class;
     4     const struct i2c_algorithm *algo;
     5     void *algo_data;
     6     struct rt_mutex bus_lock;
     7     int timeout;
     8     int retries;
     9     struct device dev;
    10     int nr;
    11     char name[48];
    12     struct completion dev_released;
    13     struct mutex userspace_clients_lock;
    14     struct list_head userspace_clients;
    15 };

    4.i2c_driver

    包含15个结构体成员,源于i2c.h文件。

     1 struct i2c_driver {
     2     unsigned int class;
     3     int (*attach_adapter)(struct i2c_adapter *) __deprecated;
     4     int (*detach_adapter)(struct i2c_adapter *) __deprecated;
     5     int (*probe)(struct i2c_client *, const struct i2c_device_id *);
     6     int (*remove)(struct i2c_client *);
     7     void (*shutdown)(struct i2c_client *);
     8     int (*suspend)(struct i2c_client *, pm_message_t mesg);
     9     int (*resume)(struct i2c_client *);
    10     void (*alert)(struct i2c_client *, unsigned int data);
    11     int (*command)(struct i2c_client *client, unsigned int cmd, void *arg);
    12     struct device_driver driver;
    13     const struct i2c_device_id *id_table;
    14     int (*detect)(struct i2c_client *, struct i2c_board_info *);
    15     const unsigned short *address_list;
    16     struct list_head clients;
    17 };

     4.device

    包含26个结构体成员,源于device.h文件。

     1 struct device {
     2     struct device        *parent;
     3     struct device_private    *p;
     4     struct kobject kobj;
     5     const char        *init_name;
     6     struct device_type    *type;
     7     struct mutex        mutex;
     8     struct bus_type    *bus;
     9     struct device_driver *driver;
    10     void        *platform_data;    
    11     struct dev_pm_info    power;
    12     struct dev_power_domain    *pwr_domain;
    13 #ifdef CONFIG_NUMA
    14     int        numa_node;
    15 #endif
    16     u64        *dma_mask;
    17     u64        coherent_dma_mask;
    18     struct device_dma_parameters *dma_parms;
    19     struct list_head    dma_pools;
    20     struct dma_coherent_mem    *dma_mem;
    21     struct dev_archdata    archdata;
    22     struct device_node    *of_node;
    23     dev_t            devt;
    24     spinlock_t        devres_lock;
    25     struct list_head    devres_head;
    26     struct klist_node    knode_class;
    27     struct class        *class;
    28     const struct attribute_group **groups;
    29     void    (*release)(struct device *dev);
    30 };
  • 相关阅读:
    【Linux高频命令专题(7)】rm
    【Linux高频命令专题(6)】mkdir
    【mongoDB运维篇①】用户管理
    【Linux高频命令专题(5)】rmdir
    【mongoDB中级篇②】索引与expain
    【mongoDB中级篇①】游标cursor
    Lua中的字符串函数库
    ngx_lua 随笔
    Nginx与Lua
    MAC 上搭建lua
  • 原文地址:https://www.cnblogs.com/kunshanpipixia/p/14046596.html
Copyright © 2011-2022 走看看