linux i2c probe 函数示例
时间: 2023-12-24 07:04:58 浏览: 39
以下是一个简单的 i2c_probe 函数示例:
```
static int my_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
struct my_data *data;
int err;
// Allocate memory for our private data structure
data = devm_kzalloc(&client->dev, sizeof(struct my_data), GFP_KERNEL);
if (!data) {
dev_err(&client->dev, "Failed to allocate memory\n");
return -ENOMEM;
}
// Initialize our private data structure
data->client = client;
// Set up any necessary hardware
err = my_hardware_setup(data);
if (err) {
dev_err(&client->dev, "Failed to set up hardware\n");
return err;
}
// Register our device with the kernel
err = devm_device_add(&client->dev, &data->client->dev);
if (err) {
dev_err(&client->dev, "Failed to register device\n");
return err;
}
// Store our private data structure in the i2c_client structure
i2c_set_clientdata(client, data);
dev_info(&client->dev, "Device probed successfully\n");
return 0;
}
```
注释中已经解释了每个步骤的作用,这个函数的目的是在 i2c 总线上探测并初始化一个新的 i2c 设备。