Linux regulator子系统主要用于管理电压、电流电源设备的电压、电流输入使能、动态调整电压、电流等,属于电源管理的一部分。
从本章开始我们分析regulator子系统。主要分为如下几部分:
一、regulator子系统总体概述
二、regulator相关数据结构分析
三、regulator相关注册、注销函数分析
四、regulator设备驱动实现
本章主要对regulator子系统进行简要说明。本章的内容主要包括:
一、regulator子系统相关的概念说明
二、regulator子系统框架说明
一、regulator子系统相关的概念说明
regulator属于电源管理部分,主要实现电压、电流的输出操作,本篇文章主要介绍regulator子系统的代码实现,因此我们先熟悉一些regulator子系统的相关概念。
Regulator
regulator用于向其他设备提供电源(通过控制regulator可实现电压、电流的输出);
PMIC
电源管理芯片,一个电源管理芯片可包含多个regulator;
Consumer
表示一个regulator使用者,regulator是电源的提供者,而consumer则是电源的消费者,一个regulator可供多个consumer使用;
Power Domain
电源域,regulator可以级联,不同的regulator的使用者属于相同的电源域。如下图的regulator,则包含三个电源域:
Domain1:switch-1、consumer D、Consumer E;
Domain2:switch-2、consumer B;
Domain3:consumer A、consumer C;
这三个电源域的关系如下:
Domain-1 --> Domain-2 --> Domain-3,在使用时domain-3下consumer相关的电压、电流设置需要满足这三级电源域的电压、电流约束。
Constraints
表示regulator的约束,而针对regulator约束也包含三部分:
- 该regulator自身的约束信息:这属于regulator相关的约束信息,可通过regulator的datasheet中获取该regulator的约束信息;
- Power domain级别的约束信息:这属于该regulator下不同电源域的约束信息,这些约束信息时regulator自身约束信息的子集(如regulator的电压输出约束为1v-3.5v;而domain1的约束信息为2v-3v;domain2的约束信息为2.5v等);
- consumer级别的约束信息,可动态设置该consumer所需的输入电压或电流约束等。
针对regulator子系统基本上就是这几个主要的概念,而linux regulator子系统的实现也是围绕着这几个概念进行子系统的框架设计的。
二、regulator子系统框架说明
针对regulator子系统主要也就包含如下几方面的设计:
- 提供Consumer driver interface接口,供各外设驱动接口调用,实现电源输出的使能、电源的动态调节等功能;
- 提供Machine interface接口,为一个regulator建立电源域(定义每一个电源域下所有consumer信息)、电源域级别的约束信息配置等;
- 提供Regulator driver interface接口,该部分是regulator子系统的主要功能,包含该regulator的访问方法(包含电源的使能、去使能、电源动态调节、regulator的约束信息、machine级别的约束信息等);
- 提供Userspace ABI接口,和其他的驱动子系统类似,regulator子系统也提供了和应用层的交互,主要结束sysfs,实现与应用层交互。
如下是regulator子系统与内核其他子系统的关联关系:
- regulator子系统的最底层为regulator device driver ,用于驱动regulator device,该regulator device driver包含操作regulator的接口、该regulator的约束信息、该regulator下domain的约束信息(这部分内容由regulator machine部分实现定义,由具体的soc board根据硬件信息,进行domain定义(该domain下使用power的consumer信息、domain的constraints等));
- 该regulator 子系统提供了consumer interface,供内核其他的驱动子系统模块使用,如regulator_get、regulator_enable等接口;
- 该regulator子系统借助sysfs,针对该regulator device相关的属性参数,均创建相应的文件,供应用层访问。
以上即是regulator 子系统的大概内容,本篇主要让读者对regulator子系统有一个感性的认识,下一步我们在进行具体的实现说明。