首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Regmap 框架:简化慢速IO接口优化性能

简介 Regmap 机制是在 Linux 3.1 加入进来的特性。主要目的是减少慢速 I/O 驱动上的重复逻辑,提供一种通用的接口来操作底层硬件上的寄存器。其实这就是内核做的一次重构。...这个结构体的定义在 include/linux/regmap.h,其中包含该设备的寄存器数量,寄存器位宽,缓存类型,读写属性等。 这一层是直接和驱动对接的。...Regmap 根据传进来的 regmap_config 初始化对应的缓存和总线操作接口,驱动就可以正常调用 regmap_write 和 regmap_read 函数。...); }; 在最新 Linux 4.0 版本中,已经有 3 种缓存类型,分别是数组(flat)、LZO 压缩和红黑树(rbtree)。...LZO(Lempel–Ziv–Oberhumer) 是 Linux 中经常用到的一种压缩算法,Linux 编译后就会用这个算法来压缩。

56320
您找到你想要的搜索结果了吗?
是的
没有找到

宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)

我们以regmap这个结构体为例,这个地方就是一个前向声明,告诉后面的代码regmap是个结构体,至于这个结构体里面有什么鬼,不知道! Linux可以说满世界都在使用这个结构体。...满世界都在使用声明在include/linux/regmap.h中的regmap_write()、regmap_read()这样的API,可以说无处不在,无处不用,比如drivers/rtc/rtc-at91sam9...所以,我们得出一个结论,尽管Linux满世界都在使用struct regmap,但是除了drivers/base/regmap/内部以外,其实外部没有任何一个人知道regmap这个结构体长成什么样子!!...相反,如果我们直接把regmap结构体的内部细节暴露在include/linux/regmap.h这个头文件中,那么由于这个头文件满世界都被引用,你只要修改regmap结构体本身,就会导致内核无数模块的增量编译...include/linux/regmap.h中暴露了regmap_config结构体,这说明这个结构体的内容需要被regmap以外的模块知道: ? ...

1.5K32

Linux电源管理-Linux regulator framework概述

如果一个系统只有一个regulator,而且只对一个设备控制的话,完全没必要使用linux regulator framework机制。...但是如果一个系统几个甚至十几个regulator,每个regulator之间还存在级连关系,这时候就需要Linux regulator framework。 2....如果一个regulator控制多个设备,而每个设备的电压或电流需求方式不同,linux regulator framework会怎么管理这些设备? 3....Linux Regulator Framework 1. Linux Regulator Framework设计出主要是提供一个标准的内核接口来控制电压和电流调节器。....regmap: regulator register map。 当调用regulator_register函数之后,传入静态和动态参数之后,就会返回一个regulator_dev结构。

3.6K52
领券