Linux regulator子系統分析之一 總體概述

2020-08-29 jerry的編程路

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子系統主要也就包含如下幾方面的設計:

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

相關焦點

  • Linux regmap子系統分析之一 系統概述
    本系統專欄主要涉及如下幾個子章節:一、regmap子系統概述二、regmap子系統數據結構分析三、regmap子系統接口說明四、regmap bus實例說明(以i2c為例)本章我們主要對regmap子系統做一個簡單的說明。
  • Linux regulator子系統分析之三 regulator註冊、註銷接口分析
    在上一章我們介紹了regulator子系統相關的數據結構間的關聯以及每一個數據結構的定義。針對數據結構間的關聯則需要regulator子系統提供的接口實現。而本章我們就說明這些接口。這兩個接口是否只設置一個等;為該regulator_dev創建struct device類型的變量,並註冊到linux設備驅動模型子系統中,並完成與regulator_class的關聯;為該regulator_dev創建設備屬性文件(在sysfs文件系統下創建屬性文件,以便應用程式通過設備屬性文件即可查看該regulator_dev相關的配置信息,如最小電壓、最大電壓
  • Linux regulator子系統分析之二 從數據結構理解系統實現
    上一章我們分析了regulator子系統的總體框架,本章我們將從數據結構入手,從而理解regulator子系統實現。 針對linux 內核各子系統學習而言,在理解了各子系統的實現背景後,再從數據結構入手,可快速理解其子系統的實現流程。因此本章我們從regulator子系統的數據結構入手,從而理解regulator子系統的實現。
  • Linux regulator子系統分析之四 虛擬regulator device驅動實現
    在前面幾章,我們分析了regulator子系統框架,主要是從數據結構及數據結構間的關聯分析了regulator子系統。為了讓大家對regulator子系統有一個深入的認識,我們本章將實現一個虛擬的regulator device驅動,從而掌握對regulator子系統的開發流程。
  • Linux V4l2子系統專欄之一 子系統概述
    從本章開始,我們開始分析V4L2子系統(Video for Linux two),主要用於音視頻設備的框架。V4l2主要用於驅動視頻輸出設備(video outpt interface)、Video overlay interface、Video output overlay device、VBI interface、Radio interface等。
  • LINUX IIO子系統專欄分析之一 IIO子系統概述
    從本章開始,我們進行IIO子系統專欄的分析文檔,本次IIO子系統專欄分析文檔大概包含如下幾章:一、 IIO子系統概述二、IIO子系統相關數據結構分析三、iio trigger 介紹四、iio event介紹五、iio buffer介紹六、iio device的註冊與註銷介紹七、iio trigger
  • LINUX CommonClock Framework子系統分析之一 系統概述
    本專欄主要介紹linux的ccf子系統,主要用於系統clock的管理等操作。本專欄我們大概分為如下幾章進行學習:一、CCF子系統概述二、CCF子系統數據結構分析及關聯說明三、CCF子系統的clk註冊與註銷接口實現分析四、虛擬的clk設備驅動實現 本章我們主要進行CCF子系統的概述。
  • Linux regmap子系統分析之三 regmap bus實例分析
    在前面一章我們分析了regmap子系統的數據結構,基本上熟悉了數據結構的關聯,也就大概理解了regmap子系統的實現流程,本章我們簡要介紹下regmap子系統中接口的調用過程,然後介紹下regmap bus的實現及其提供的regmap的創建及註銷接口。
  • Linux GUI子系統概述 GUI子系統的構成及工作流程
    Linux GUI子系統概述 GUI子系統的構成及工作流程 Nick 發表於 2020-12-05 10:45:54 作者:Nick 開始前的幾點說明
  • Linux input子系統編程、分析與模板
    內核中的輸入子系統自底向上分為設備驅動層,輸入核心層,事件處理層。由於每種輸入的設備上報的事件都各有不同,所以為了應用層能夠很好識別上報的事件,內核中也為應用層封裝了標準的接口來描述一個事件,這些接口在"/include/upai/linux/input"中。
  • 簡單分析「Windows將被微軟放棄淪為Linux子系統」
    昨天看一個消息:有觀點認為Windows將被微軟放棄而淪為Linux子系統 – Windows – cnBeta.COMhttps://www.cnbeta.com/articles/tech/1034593.htmWindows
  • LINUX IIO子系統分析之三 IIO trigger分析
    上一章我們分析了IIO子系統的數據結構定義,本章我們主要介紹IIO TRIGGER的設計實現,主要內容如下:一、數據結構簡述 二、設計實現說明 三、提供接口說明一、數據結構簡述中斷子系統的內容可參考我之前寫的中斷子系統專欄,我在中斷子系統專欄也實現了一個虛擬的irq chip,實現的原理和此處trigger實現的虛擬irq chip的原理是一樣的)。
  • win10安裝linux子系統(wsl)
    win10安裝linux子系統(wsl)1、打開Microsoft Store方式一:在電腦左下角打開方式二:在電腦左下角的搜索裡2、允許windows運行linux子系統打開控制面板->程序和功能->啟動或關閉windows功能勾上「適用於Linux的Windows子系統」,點擊確定,然後按提示重啟電腦。
  • LINUX 中斷子系統專欄之一 子系統架構簡述
    因此這周就簡要介紹irq子系統框架,然後再開發一個虛擬的irq controller driver 。針對irq 子系統專欄,主要包括如下兩部分內容:一、IRQ子系統框架簡述二、虛擬IRQ CONTROLLER DRIVER實例本篇主要是IRQ子系統框架簡述,本篇文章主要分為如下幾個小章節:一、IRQ相關概念說明二、IRQ子系統相關數據結構及其關聯說明三、IRQ子系統提供的相關接口對於irq
  • Linux regmap子系統分析之二 從數據結構分析系統實現
    上一章我們簡要分析了regmap子系統,本章我們將從regmap子系統的數據結構介紹regmap子系統的實現。 一、數據結構間的關聯及說明 針對regmap子系統,我們首先要知道regmap子系統要解決的痛點是什麼?
  • 打造適用於 Linux 的 Windows 子系統——替代虛擬機的好幫手
    如今微軟在Windows10系統中,推出了適用於 Linux 的 Windows 子系統,說簡單點,就是把Linux發行版當作桌面應用安裝在Windows10中。準備工作控制面板——> 程序——> 程序和功能——> 啟用或關閉 Windows 功能——> 適用於 Linux 的 Windows 子系統——> 確定 (然後重啟)
  • 剛知道,原來win 10內置了一個Linux子系統
    win 10上安裝linux是沒必要這麼麻煩的,win 10自帶了一個linux子系統,只是大家沒有發現而已。下面筆者就為大家介紹一下win 10的Linux子系統。筆者的電腦上已經裝好了這個子系統,打開它的方式非常簡單,就像打開普通的程序一樣,接下來筆者給大家說一下安裝子系統的具體步驟。
  • 「正點原子Linux連載」第五十八章Linux INPUT子系統實驗
    第五十八章Linux INPUT子系統實按鍵、滑鼠、鍵盤、觸控螢幕等都屬於輸入(input)設備,Linux內核為此專門做了一個叫做input子系統的框架來處理輸入事件。輸入設備本質上還是字符設備,只是在此基礎上套上了input框架,用戶只需要負責上報輸入事件,比如按鍵值、坐標等信息,input核心層負責處理這些事件。
  • 文件I/O編程之: Linux中文件及文件描述符概述
    6.2Linux中文件及文件描述符概述在Linux中對目錄和設備的操作都等同於文件的操作,因此,大大簡化了系統對不同設備的處理,提高了效率。Linux中的文件主要分為4種:普通文件、目錄文件、連結文件和設備文件。
  • win10子系統kali-linux安裝圖形化界面總結
    之前是有個虛擬機的,後來發現win10專業版自帶有linux子系統。於是就安裝使用了一下。由於網上一些安裝圖形化界面的教程因為時間太久等原因有些不能用了。所以整理了這份文檔,供後來人避坑。環境系統:win10專業版開啟:開發者模式和Windows功能(適用於Linux的Windows子系統)下載&安裝打開win10自帶的MicrosoftStore(應用商店),搜索linux,就可以找到