regmap_i2c_smbus_i2c_write() 使用实例
时间: 2024-01-17 17:05:34 浏览: 78
i2c-scmi.rar_LINUX SMBUS_i2c to smbus_smbus
regmap_i2c_smbus_i2c_write() 是linux内核中一种用于通过I2C总线向寄存器映射中写入数据的函数。使用实例如下:
```
#include <linux/i2c.h>
#include <linux/regmap.h>
struct regmap *map;
struct i2c_client *client;
// 初始化i2c_client
client = i2c_new_client_device(adapter, &addr);
if (!client)
return -ENODEV;
// 创建regmap
map = devm_regmap_init_i2c(client, ®s_config);
if (IS_ERR(map)) {
ret = PTR_ERR(map);
dev_err(&client->dev, "Failed to allocate regmap: %d\n", ret);
return ret;
}
// 使用regmap_i2c_smbus_i2c_write()写入数据
ret = regmap_i2c_smbus_i2c_write(map, reg, val);
if (ret) {
dev_err(&client->dev, "Failed to write reg: %d\n", ret);
return ret;
}
```
其中,adapter 是 i2c_adapter 结构体,addr 是I2C设备的地址,regs_config 是用于初始化regmap的配置参数,reg 是需要写入的寄存器地址,val 是需要写入的数据。调用该函数后,会自动将 reg 和 val 一起写入到对应的寄存器中。
阅读全文