以下内容均摘自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 };