电源管理之regulator机制流程

今晚很郁闷了,郁闷之余,戴上耳麦放大音乐,就敲打了以下文字,解郁闷~明天又是不错的开始~~


现在android/linux为模块设备供电有两种,一种GPIO供电,另一个就是电源管理芯片。

电源管理芯片可以为多设备供电,且这些设备电压电流有所同。为这些设备提供的稳压器代码模型即为regulator


下面通过下面三个过程分析regulartor供电机制:

1.分析regulator结构体

2.regulator 注册过程

3.设备使用regulator过程


.分析regulator结构体

Regulator模块用于控制系统中某些设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过regulator关闭其电源供应;或者降低提供给该模块的电压、电流大小。

Regulator的文档在KERNEL/Documentation/Power/Regulator中。

 

Regulator与模块之间是树状关系。父regulator可以给设备供电,也可以给子regulator供电:

Regulator

--> 子Regulator --> [supply]

--> 设备[Consumer]

具体细节可参考内核文档machine.txt


regulator_dev

regulator_dev代表一个regulator设备。

struct regulator_dev {

struct regulator_desc *desc; // 描述符,包括regulator的名称、IDregulator_ops

int use_count; // 使用计数

 

struct list_head list; // regulator通过此结构挂到regulator_list链表中

struct list_head slist; // 如果有父regulator,通过此域挂到父regulator的链表

 

struct list_head consumer_list; // 此regulator负责供电的设备列表

struct list_head supply_list; //regulator负责供电的子regulator

struct blocking_notifier_head notifier; // notifier,具体的值在consumer.h中,比如REGULATOR_EVENT_FAIL

struct mutex mutex;

struct module *owner;

struct device dev; // device结构,属于class regulator_class

struct regulation_constraints *constraints; // 限制,比如最大电压/电流、最小电压/电流

struct regulator_dev *supply; // 父regulator的指针,即由此regulator 供电

void *reg_data;

};


regulator_init_data

 

regulator_init_data在初始化时使用,用来建立父子regulator、受电模块之间的树状结构,以及一些regulator的基本参数。

struct regulator_init_data {

struct device *supply_regulator_dev; // 父regulator的指针

struct regulation_constraints constraints;

int num_consumer_supplies;

struct regulator_consumer_supply *consumer_supplies; // 负责供电的设备数组

 

int (*regulator_init)(void *driver_data); // 初始化函数,在regulator_register被调用

void *driver_data;

};

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值