5regulator系统的概念及测试
Posted 拉风摊主
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5regulator系统的概念及测试相关的知识,希望对你有一定的参考价值。
概念:
Regulator : 电源芯片, 比如电压转换芯片
Consumer : 消费者,使用电源的部件, Regulator是给Consumer供电的
machine : 单板,上面焊接有Regulator和Consumer
Constraints : 约束, 比如某个电源管理芯片输出的电压范围
Supply : 提供电源的部件, Regulator就是一个Supply; Regulator A可以给Regulator B供电, 那么Regulator B的Supply就是A
regulator 电源芯片本身的驱动程序:.enable、.diable、.set_voltage、.set_current
Consumer在驱动中引用regulator的函数工作
machine(单板):1、Regulator和Consumer的对应关系
2、约束:单板相关的条件,比如电压范围
(详细文档见内核顶层目录下Documentation/power/regulator目录下的overview.txt和其他文档)
写驱动程序:
1. regulator:(可以参考drivers/regulator/tps6105x-regulator.c)
注册一个platform_driver: 在它的probe函数里分配、设置、注册一个regulator
"设置"里要做的事情: 实现regulator的操作, 比如enable, disable, set_voltage
在regulator的probe函数中通过dev_get_platdata获得在machine端设置的私有数据
2. machine:
注册一个platform_device: 在它的私有数据里指定regulator和consume的对应关系(这个电源芯片给哪一个部件供电)
指定约束条件(比如电压范围)
在machine端的platform_device中的.dev中设置platform_data私有数据(regulator和consumer的对应关系,约束条件),该私有数据供regulator在register的时候使用
在代码中
static struct regulator_consumer_supply myregulator_supplies[] = {
REGULATOR_SUPPLY("VCC", "mylcd"),//”mylcd”的名字是根据lcd驱动动注册的platform_device的名字,“VCC”是指的consumer的电源管脚名称(有的consumer有多个电源管脚)
};是对应关系,consumer中通过dev(中有mylcd名字)和VCC找到regulator,在suspend和resume中调用它的enable和disable
3. consumer: 使用即可: regulator_get, regulator_enable, regulator_disable, regulator_set_voltage....
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, ®ulator_list);
编译测试:
1. make menuconfig
Device Drivers --->
[*] Voltage and Current Regulator Support --->
修改 drivers/video/Makefile把原来的LCD驱动去掉
#obj-$(CONFIG_FB_S3C2410) += lcd_4.3.o
make uImage
2. 编译驱动
3. 使用新内核启动
4. 安装驱动:
insmod regulator.ko
insmod machine.ko
insmod consumer_lcd_4.3.ko
以上是关于5regulator系统的概念及测试的主要内容,如果未能解决你的问题,请参考以下文章