2024年6月12日发(作者:)
电源管理中的regulator(转载)
原文地址:
regulator是驱动中电源管理的基础设施。要先注册到内核中,然后
使用这些电压输出的模块get其regulator,在驱动中的init里,在适当时
间中进行电压电流的设置.
Linux内核的动态电压和电流控制接口
"LDO是low dropout regulator,意为低压差线性稳压器",是相
对于传统的线性稳压器来说的。传统的线性稳压器,如78xx系列的芯
片都要求输入电压要比输出电压高出 2v~3V以上,否则就不能正常工
作。但是在一些情况下,这样的条件显然是太苛刻了,如5v转3.3v,
输入与输出的压差只有1.7v,显然是不满足条件 的。针对这种情况,
才有了LDO类的电源转换芯片。生产LDO芯片的公司很多,常见的有
ALPHA, Linear(LT), Micrel, National semiconductor,TI等。
in:twl4030-poweroff.c
一种称为校准器(regulator)的动态电压和电流控制的方法,很有参考
意义和实际使用价值。
1:校准器的基本概念
所谓校准器实际是在软件控制下把输入的电源调节精心输出。
2:Consumer的API
regulator = regulator_get(dev, “Vcc”);
其中,dev 是设备“Vcc”一个字符串代表,校准器(regulator)然后返
回一个指针,也是regulator_put(regulator)使用的。
打开和关闭校准器(regulator)API如下。
int regulator_enable(regulator);
int regulator_disable(regulator);
3: 电压的API
消费者可以申请提供给它们的电压,如下所示。
int regulator_set_voltage(regulator, int min_uV, int max_uV);
在改变电压前要检查约束,如下所示。
regulator_set_voltage(regulator,100000,150000)
电压值下面的设置改变如下所示。
int regulator_get_voltage)struct regulator *regulator);
4:校准器的驱动和系统配置
在实际使用校准器之前,需要按照下面的结构写校准器的驱动程序,
然后注册后通知给消费者使用。
//
static LIST_HEAD(regulator_list); //整个regulator模型的所有
regulator.
static LIST_HEAD(regulator_map_list); //整个regulator模型的map
struct regulator_consumer_supply : 用户支持的接口映射。 supply ->
device
struct regulator_state: 用于表示 在整个系统的低功耗状态下的设备状
态。
struct regulation_constraints : 操作约束。
struct regulator_init_da ta 校准器平台初始化数据。
struct regulator_dev 向内核注册后 得到regulator设备结构
注册:
struct regulator_dev *regulator_register(struct regulator_desc
*regulator_desc,struct device *dev, void *driver_data)
反注册:
要使用注册得到 regulator_dev:
void regulator_unregister(struct regulator_dev *rdev)
#define REGULATOR_MODE_FAST 0x1 //电压可以快速调
#define REGULATOR_MODE_NORMAL 0x2 //一般模式
#define REGULATOR_MODE_IDLE 0x4 //低load
#define REGULATOR_MODE_STANDBY 0x8 //sleep/ standby 状态下
低功耗
例子:
static struct regulator_init_da ta zoom2_vsim = { //这个da ta被置于 对应
的 platform_device 的da ta字段中。
.constraints = {
.min_uV = 1800000,


发布评论