regmap模块

从3.10版本开始,Linux内核引入了regmap接口,它为I2C、SPI、MMIO、IRQ等提供了统一的读写操作。regmap通过devm_regmap_init_i2c或devm_regmap_init注册,并在regmap模块中注册regmap_bus和对象。regmap_read、regmap_write和regmap_update_bits等函数利用注册的read和write方法进行操作,内部调用i2c_master_send和i2c_transfer。理解这一接口原理有助于自定义类似接口设计。
摘要由CSDN通过智能技术生成

3.0linux内核版本中,codec driver是直接调用i2c的i2c_master_send函数与i2c_transfer函数来实现i2c的读写,

3.3版本,codec driver通过调用snd_soc_read和snd_soc_write函数来实现i2c的读写,这两个函数内部包裹了codec->read和codec->write,而codec->read和codec->write的赋值是在snd_soc_codec_set_cache_io中,最终也是调用了i2c_master_send函数与i2c_transfer函数

3.10版本开始出现了regmap的接口,这个regmap将i2c、spi、mmio、irq都抽象出统一的接口regmap_read、regmap_write、regmap_update_bits等接口
例如对于i2c接口
devm_regmap_init_i2c(i2c, &regmap_i2c);或者使用
devm_regmap_init(&i2c->dev, &regmap_i2c, &i2c->dev, config)
|
regmap_init(struct device *dev, struct regmap_bus *bus, void *bus_content, struct regmap_config *config);
1)注册方法regmap_bus和对象i2c:
通过把struct regmap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckywang1103

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值