Linux regulator子系统分析之一 总体概述

        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约束也包含三部分:

  1. 该regulator自身的约束信息:这属于regulator相关的约束信息,可通过regulator的datasheet中获取该regulator的约束信息;
  2. Power domain级别的约束信息:这属于该regulator下不同电源域的约束信息,这些约束信息时regulator自身约束信息的子集(如regulator的电压输出约束为1v-3.5v;而domain1的约束信息为2v-3v;domain2的约束信息为2.5v等);
  3. consumer级别的约束信息,可动态设置该consumer所需的输入电压或电流约束等。

 

      针对regulator子系统基本上就是这几个主要的概念,而linux regulator子系统的实现也是围绕着这几个概念进行子系统的框架设计的。

 

二、regulator子系统框架说明

针对regulator子系统主要也就包含如下几方面的设计:

  1. 提供Consumer driver interface接口,供各外设驱动接口调用,实现电源输出的使能、电源的动态调节等功能;
  2. 提供Machine interface接口,为一个regulator建立电源域(定义每一个电源域下所有consumer信息)、电源域级别的约束信息配置等;
  3. 提供Regulator driver interface接口,该部分是regulator子系统的主要功能,包含该regulator的访问方法(包含电源的使能、去使能、电源动态调节、regulator的约束信息、machine级别的约束信息等);
  4. 提供Userspace ABI接口,和其他的驱动子系统类似,regulator子系统也提供了和应用层的交互,主要结束sysfs,实现与应用层交互。

 

如下是regulator子系统与内核其他子系统的关联关系:

  1. regulator子系统的最底层为regulator device driver ,用于驱动regulator device,该regulator device driver包含操作regulator的接口、该regulator的约束信息、该regulator下domain的约束信息(这部分内容由regulator machine部分实现定义,由具体的soc board根据硬件信息,进行domain定义(该domain下使用power的consumer信息、domain的constraints等));
  2. 该regulator 子系统提供了consumer interface,供内核其他的驱动子系统模块使用,如regulator_get、regulator_enable等接口;
  3. 该regulator子系统借助sysfs,针对该regulator device相关的属性参数,均创建相应的文件,供应用层访问。

 

 

 

 

      以上即是regulator 子系统的大概内容,本篇主要让读者对regulator子系统有一个感性的认识,下一步我们在进行具体的实现说明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章