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子系統有一個感性的認識,下一步我們在進行具體的實現說明。

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