linux regulator driver framwork

本文详细介绍了Linux电源管理框架,包括Regulator(电源芯片)、Consumer(电源消费者)和Machine(单板)的概念及其交互方式。解释了ldo、dcdc及pmu等不同类型电源管理芯片的应用场景,并展示了电源管理模块的软件实现原理。
摘要由CSDN通过智能技术生成

charger-manager.c

1.概念

Regulator : 电源芯片, 比如电压转换芯片
Consumer : 消费者,使用电源的部件, Regulator是给Consumer供电的
machine : 单板,上面焊接有Regulator和Consumer
Constraints : 约束, 比如某个电源管理芯片输出的电压范围
Supply : 提供电源的部件, Regulator就是一个Supply; Regulator A可以给Regulator B供电, 那么Regulator B的Supply就是A

regulaor :常用的为电压调节器,总共有以下几类
ldo :输入/输出电压差别不大时使用,电路简单,转换效率较低,如果输入/输出电压相差较大损耗就高,造成芯片发烫
dcdc:输入/输出压差别较大时使用,电路比较复杂,转换效率高
pmu : 集成了多个ldo、dcdc,可以工资每个单元电压的输出大小

2.framwork

主要作用: 给外设(consumer)供电
framwork层次:主要分为 machine、regulator、consumer三部分

regulator framwork图

machine
(1) 指定了regulaor和consumer的对应关系
(consumer dev的name和给consumer 引脚供电的引脚名字)
(2) 约束调节:regulator的电压范围等等

驱动要做的事情:
注册一个platform_device: 在它的私有数据里指定regulator和consume的对应关系(这个电源芯片给哪一个部件供电)
指定约束条件(比如电压范围)

regulator
电源芯片本身的驱动实现的fops
.enable
.disable
.set_votage
.set_current

regulator_register 后在 regulator_list 里就有了consumer dev的name和给consumer 引脚供电的引脚名字

驱动要做的事情:
注册一个platform_driver: 在它的probe函数里分配、设置、注册一个regulator
“设置”里要做的事情: 实现regulator的操作, 比如enable, disable, set_voltage

consumer
使用即可
regulator_get, regulator_enable, regulator_disable, regulator_set_voltage

regulator_get(struct device *dev, const char *id) // dev中包含了name,id指定了这个regulator给consumer那个电源引脚供电

3.regulator_register流程分析

// 分配regulator_dev
    rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL);

    /* set regulator constraints */
    set_machine_constraints
    add_regulator_attributes

    /* add consumers devices */
    set_consumer_device_supply
//在regulator_map_list链表里生成一项regulator_map: 它里面有dev_name(consumer的名字),supply(cosumer的电源引脚名字)

    // 把regulator_dev放入regulator_list
    list_add(&rdev->list, &regulator_list); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值