关于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 };
原文地址:https://www.cnblogs.com/kunshanpipixia/p/14046596.html