Linux 電壓和電流調節器框架

關於

此框架旨在提供一個標準的核心介面,用於控制電壓和電流調節器。

其目的是允許系統動態控制調節器功率輸出,以節省電量並延長電池壽命。這適用於電壓調節器(其電壓輸出可控)和電流吸收器(其電流限制可控)。

  1. 2008 Wolfson Microelectronics PLC.

作者: Liam Girdwood <lrg@slimlogic.co.uk>

術語

本文件中使用的一些術語

  • 調節器
    • 向其他裝置供電的電子裝置。大多數調節器可以啟用和停用其輸出,而有些可以控制其輸出電壓和/或電流。

      輸入電壓 -> 調節器 -> 輸出電壓

  • PMIC
    • 電源管理 IC。一種包含多個調節器並通常包含其他子系統的積體電路。

  • 用電裝置
    • 由調節器供電的電子裝置。用電裝置可分為兩類:-

      靜態:用電裝置不改變其供電電壓或電流限制。它只需要啟用或停用其電源。其供電電壓由硬體、引導載入程式、韌體或核心板初始化程式碼設定。

      動態:用電裝置需要改變其供電電壓或電流限制以滿足操作需求。

  • 電源域
    • 其輸入電源由調節器、開關或其他電源域的輸出電源提供的電子電路。

      供電調節器可能位於開關之後。例如:

      Regulator -+-> Switch-1 -+-> Switch-2 --> [Consumer A]
                 |             |
                 |             +-> [Consumer B], [Consumer C]
                 |
                 +-> [Consumer D], [Consumer E]
      

      這是一個調節器和三個電源域

      • 域 1:開關-1,用電裝置 D 和 E。

      • 域 2:開關-2,用電裝置 B 和 C。

      • 域 3:用電裝置 A。

      這表示一種“供電”關係

      Domain-1 --> Domain-2 --> Domain-3.

      一個電源域可能包含由其他調節器供電的調節器。例如:

      Regulator-1 -+-> Regulator-2 -+-> [Consumer A]
                   |
                   +-> [Consumer B]
      

      這給我們提供了兩個調節器和兩個電源域

      • 域 1:調節器-2,用電裝置 B。

      • 域 2:用電裝置 A。

      以及一種“供電”關係

      Domain-1 --> Domain-2

  • 約束
    • 約束用於定義效能和硬體保護的功率級別。約束存在於三個層面:

      調節器層面:這由調節器硬體操作引數定義,並指定在調節器資料手冊中。例如:

      • 電壓輸出範圍為 800mV -> 3500mV。

      • 調節器電流輸出限制在 5V 時為 20mA,但在 10V 時為 10mA。

      電源域層面:這由核心級板初始化程式碼在軟體中定義。它用於將電源域限制在特定的功率範圍。例如:

      • 域-1 電壓為 3300mV

      • 域-2 電壓為 1400mV -> 1600mV

      • 域-3 電流限制為 0mA -> 20mA。

      用電裝置層面:這由用電裝置驅動程式動態設定電壓或電流限制級別來定義。

      例如,用電裝置背光碟機動程式要求將電流從 5mA 增加到 10mA 以提高 LCD 照明。這透過以下層面傳遞:-

      用電裝置:需要增加 LCD 亮度。在亮度表中查詢並請求下一個電流 mA 值(用電裝置驅動程式可用於基於相同參考裝置的不同個性化設定)。

      電源域:新的電流限制是否在此電源域和系統狀態(例如電池供電、USB 供電)的域操作限制內?

      調節器域:新的電流限制是否在輸入/輸出電壓的調節器操作引數內?

      如果調節器請求透過所有約束測試,則應用新的調節器值。

設計

該框架專為基於 SoC 的裝置設計和目標,但也可能與非 SoC 裝置相關,並分為以下四個介面:-

  1. 用電裝置驅動程式介面。

    這使用與核心時鐘介面類似的 API,用電裝置驅動程式可以獲取和釋放調節器(就像它們當前處理時鐘一樣),並獲取/設定電壓、電流限制、模式、啟用和停用。這應允許用電裝置完全控制其供電電壓和電流限制。如果未使用,此功能也會被編譯排除,因此驅動程式可以在沒有基於調節器的電源控制的系統中重複使用。

  2. 調節器驅動程式介面。

    這允許調節器驅動程式註冊其調節器並向核心提供操作。它還具有一個通知器呼叫鏈,用於將調節器事件傳播給客戶端。

  3. 機器介面。

    此介面適用於機器特定程式碼,並允許為每個調節器建立電壓/電流域(帶約束)。它能夠提供調節器約束,以防止因有缺陷的客戶端驅動程式導致的過壓或過流對裝置造成損壞。它還允許建立調節器樹,其中一些調節器由其他調節器供電(類似於時鐘樹)。

  4. 使用者空間 ABI。

    該框架還透過 sysfs 向用戶空間匯出大量有用的電壓/電流/操作模式資料。這可用於幫助監控裝置的功耗和狀態。