设备驱动中Regmap API的使用
1. Regmap API简介
在Linux系统中,I2C和SPI等子系统常用于连接总线上的设备,这些总线都具备对连接设备的寄存器进行读写的功能。然而,这往往会导致在具有寄存器读写功能的子系统中出现冗余代码。为了避免这种情况,同时提取通用代码,方便驱动的维护和开发,从Linux 3.1版本开始,引入了名为regmap的新内核API。
regmap基础设施最初存在于Linux ASoC(ALSA)子系统中,现在通过regmap API(定义在 include/linux/regmap.h ,实现在内核源代码树的 drivers/based/regmap/ 目录下)为整个Linux系统所使用。regmap子系统对SPI和I2C设备的寄存器访问以及内存映射寄存器(MMIO)进行了抽象,还提供了缓存机制,可减少对设备的访问次数,并能处理IRQ芯片和IRQ。
2. Regmap子系统的主要结构
regmap子系统主要包含以下几个重要的结构体:
- struct regmap :声明于 drivers/base/regmap/internal.h ,表示慢速I/O设备寄存器操作的映射。
- struct regmap_bus :声明于 include/linux/regmap.h ,表示某类慢速I/O设备(如SPI或I2C设备)的寄存器操作,该结构体与 regmap 结构体绑定。
- stru
超级会员免费看
订阅专栏 解锁全文
60

被折叠的 条评论
为什么被折叠?



