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, &regulator_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系统的概念及测试的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础进程的概念及fork初识

多线程的概念及实现

数仓的概念及架构

mysql数据库的概念及入门语句

数据库的概念及简单Mysql数据操作

9-02事务的概念及特性