Linux regulator子系统分析之二 从数据结构理解系统实现( 二 )

 

Linux regulator子系统分析之二 从数据结构理解系统实现

文章插图
 
以上介绍的是数据结构间关联的说明,下面对几个数据结构进行简要说明:
 
struct regulator_desc该数据结构是一个regulator_dev的描述信息:
  1. regulator的名称;
  2. 若该regulator device是由别的的regulator device提供的电源(即该regulator device是另一个regulator device的使用者),则supply_name表示提供电源的regulator device名称;
  3. 说明该regulator device可提供的输出电压个数、支持的输出电压列表、单步电压调节值等
  4. 该regulator device的操作接口(struct regulator_ops,包括设置电压、设置电流、输出使能等接口)

Linux regulator子系统分析之二 从数据结构理解系统实现

文章插图
【Linux regulator子系统分析之二 从数据结构理解系统实现】 
struct regulation_constraints该数据结构描述regulator device的约束信息,定义如下:
  1. 输出电压范围;
  2. 输出电流范围;
  3. 该regulator device支持的模式(fast、normal、idle、standby等);
  4. 该regulator device支持的操作模式,包括change volt、change current、change bypass mode等;
  5. 该regulator device支持的suspend 状态下的输出控制(如在suspend to disk状态下的输出控制等);

Linux regulator子系统分析之二 从数据结构理解系统实现

文章插图
 
struct regulator_dev该数据结构表示一个regulator device,定义如下;
  1. 该regulator device的描述信息,struct regulator_desc类型的变量,描述regulator_dev的电压输出信息、操作信息(使能去使能接口、电压设置与获取接口、电流设置与获取接口);
  2. 该regulator_dev所有使用者的信息(consumer_list链表上的regulator成员);
  3. 该regulator_dev是另一个regulator_dev的使用者,则通过supply作为使用者信息;
  4. 该regulator_dev是否支持通过regmap访问;
  5. notifier链表,用于regulator_dev状态变化的通知链;
 
Linux regulator子系统分析之二 从数据结构理解系统实现

文章插图
 
 
struct regulator该数据结构表示一个regulator device的使用者,包括是否一直使能、是否使用bypass模式(bypass模式指regulator device输入电压直接作为输出,不做限制)、电压范围、电流值、设备属性信息、该regulator对应的supply名称等 。
Linux regulator子系统分析之二 从数据结构理解系统实现

文章插图
 
本章主要介绍regulator 子系统的数据结构,相对来说结构体比较多,但是我们要梳理主线,其主线即是文章开头的数据结构关联图,主要抓住regulator_dev、regulator、regulator_map这几个数据结构即可 。其他的数据结构主要是为了建立这三个数据结构间的关联(借助regulator_register、regulator_get) 。




推荐阅读