i2c_driver结构体detect
时间: 2023-09-14 21:10:34 浏览: 58
在 Linux 内核中, `i2c_driver` 结构体是表示 I2C 设备驱动的数据结构。它包含了一组函数指针,用于描述该驱动如何与 I2C 设备进行交互。其中,`detect` 函数指针表示设备探测函数,用于检测设备是否存在。当 I2C 总线扫描到一个地址时,内核会调用 `detect` 函数,通过读取设备的特定寄存器或发送特定的命令,来确定设备是否存在。如果存在,则返回设备的地址,否则返回 `-ENODEV` 错误码。
相关问题
i2c_driver结构体
i2c_driver结构体是Linux内核中用于描述I2C总线设备驱动程序的数据结构。它定义在<linux/i2c.h>头文件中,包含以下成员:
- struct module *owner:指向驱动程序所属的模块的指针。
- const char *driver_name:驱动程序的名称。
- const struct i2c_device_id *id_table:指向一个数组,每个元素表示一个支持的I2C设备,包含设备的名称和ID。
- int (*probe)(struct i2c_client *client, const struct i2c_device_id *id):当I2C设备被探测到时,该函数被调用。该函数返回0表示成功,返回其他值表示错误。
- int (*remove)(struct i2c_client *client):当I2C设备被移除时,该函数被调用。该函数返回0表示成功,返回其他值表示错误。
- void (*shutdown)(struct i2c_client *client):当系统关闭时,该函数被调用,用于释放资源。
- int (*suspend)(struct i2c_client *client, pm_message_t mesg):当系统进入挂起状态时,该函数被调用,用于保存设备状态。
- int (*resume)(struct i2c_client *client):当系统恢复正常工作时,该函数被调用,用于恢复设备状态。
- const struct of_device_id *of_match_table:指向一个数组,每个元素表示一个支持的设备节点,包含设备的名称和ID。
通过填充i2c_driver结构体中的成员,可以实现对I2C设备的控制和管理。
platform_driver结构体
platform_driver结构体是Linux内核中的一个结构体,用于管理平台设备驱动程序。
该结构体包含了一系列的成员变量和函数指针,用于描述驱动程序的基本信息、初始化、挂载、卸载以及设备的控制等操作。
下面是platform_driver结构体的定义:
```c
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
void (*shutdown)(struct platform_device *);
int (*suspend)(struct platform_device *, pm_message_t state);
int (*resume)(struct platform_device *);
struct device_driver driver;
const struct platform_device_id *id_table;
bool prevent_deferred_probe;
};
```
其中,成员变量的含义如下:
- probe:设备探测函数,用于初始化设备并将其添加到系统中。
- remove:设备移除函数,用于卸载设备并释放相关资源。
- shutdown:设备关机函数,用于处理设备在关机时的相关操作。
- suspend:设备挂起函数,用于处理设备在挂起时的相关操作。
- resume:设备恢复函数,用于处理设备在恢复时的相关操作。
- driver:设备驱动程序的基本信息,包括驱动名、设备名等。
- id_table:设备ID表,用于描述设备的硬件信息。
- prevent_deferred_probe:是否在设备探测过程中进行延迟探测。
通过填充platform_driver结构体的成员变量和函数指针,可以实现平台设备驱动程序的管理和控制。