電壓和電流調節器 API¶
- 作者:
Liam Girdwood
- 作者:
Mark Brown
簡介¶
此框架旨在提供一個標準的核心介面來控制電壓和電流調節器。
目的是允許系統動態控制調節器的功率輸出,以節省電量並延長電池壽命。 這適用於電壓調節器(其中電壓輸出可控)和電流吸收器(其中電流限制可控)。
請注意,Linux 核心原始碼中提供了其他(且目前更完整的)文件,位於 Documentation/power/regulator 下。
詞彙表¶
調節器 API 使用了許多可能不熟悉的術語
調節器
向其他裝置供電的電子裝置。 大多數調節器可以啟用和停用其輸出,有些還可以控制其輸出電壓或電流。
消費者
消耗由調節器提供的電力的電子裝置。 這些可以是靜態的,僅需要固定的電源,也可以是動態的,需要在執行時對調節器進行主動管理。
電源域
由給定調節器供電的電子電路,包括調節器和所有消費者裝置。 調節器的配置在電路中的所有元件之間共享。
電源管理積體電路 (PMIC)
包含多個調節器且通常還包含其他子系統的 IC。 在嵌入式系統中,主 PMIC 通常等效於桌面系統中的 PSU 和南橋的組合。
消費者驅動程式介面¶
這提供了類似於核心時鐘框架的 API。 消費者驅動程式使用 get 和 put 操作來獲取和釋放調節器。 提供了 啟用 和 停用 調節器以及獲取和設定調節器執行時引數的函式。
請求調節器時,消費者使用電源的符號名稱,例如 “Vcc”,這些名稱透過機器介面對映到實際的調節器裝置。
當未使用調節器框架時,會提供此 API 的存根版本,以最大程度地減少使用 ifdefs 的需要。
啟用和停用¶
調節器 API 提供調節器的引用計數啟用和停用。 消費者裝置使用 regulator_enable() 和 regulator_disable() 函式來啟用和停用調節器。 對這兩個函式的呼叫必須是平衡的。
請注意,由於多個消費者可能正在使用調節器,並且機器約束可能不允許停用調節器,因此不能保證呼叫 regulator_disable() 實際上會導致停用調節器提供的電源。 消費者驅動程式應假定調節器可能始終處於啟用狀態。
配置¶
某些消費者裝置可能需要能夠動態配置其電源。 例如,MMC 驅動程式可能需要為其卡選擇正確的操作電壓。 這可以在啟用或停用調節器時完成。
regulator_set_voltage() 和 regulator_set_current_limit() 函式提供了此功能的主要介面。 兩者都採用電壓和電流範圍,支援不需要特定值的驅動程式(例如,CPU 頻率縮放通常允許 CPU 在較低頻率下使用更寬的電源電壓範圍,但不要求降低電源電壓)。 如果需要精確值,則最小值和最大值應相同。
回撥¶
還可以為諸如調節失敗之類的事件註冊回撥。
調節器驅動程式介面¶
調節器晶片的驅動程式將調節器註冊到調節器核心,從而為核心提供操作結構。 通知程式介面允許將錯誤情況報告給核心。
註冊應由平臺完成的顯式設定觸發,為調節器提供 struct regulator_init_data,其中包含約束和電源資訊。
機器介面¶
此介面提供了一種定義調節器如何在給定系統上連線到消費者,以及系統的有效操作引數是什麼的方法。
電源¶
調節器電源使用 struct regulator_consumer_supply 指定。 這是在驅動程式註冊時作為機器約束的一部分完成的。
約束¶
除了定義連線之外,機器介面還提供約束,定義了允許客戶端執行的操作以及可以設定的引數。 這是必需的,因為通常調節器裝置將提供比在給定系統上安全使用的更大的靈活性,例如支援高於消費者額定值的電源電壓。
這是透過提供 struct regulation_constraints 在驅動程式註冊時完成的。
約束還可以指定調節器的初始配置,這對於與靜態消費者一起使用特別有用。
API 參考¶
由於核心文件框架的限制以及原始碼的現有佈局,因此在此處記錄了整個調節器 API。
-
struct pre_voltage_change_data¶
與 PRE_VOLTAGE_CHANGE 事件一起傳送的資料
定義:
struct pre_voltage_change_data {
unsigned long old_uV;
unsigned long min_uV;
unsigned long max_uV;
};
成員
old_uV更改前的當前電壓。
min_uV我們將更改到的最小電壓。
max_uV我們將更改到的最大電壓。
-
struct regulator_bulk_data¶
用於批次調節器操作的資料。
定義:
struct regulator_bulk_data {
const char *supply;
struct regulator *consumer;
int init_load_uA;
};
成員
supply電源的名稱。 在使用批次調節器 API 之前由使用者初始化。
consumer電源的調節器消費者。 這將由批次 API 管理。
init_load_uA獲取調節器後,將使用此負載呼叫
regulator_set_load()。 在使用批次調節器 API 之前由使用者初始化。
說明
調節器 API 提供了一系列 regulator_bulk_() API 呼叫,以方便需要多個電源的消費者。 此結構用於管理這些呼叫的資料。
-
struct regulator_state¶
低功耗系統狀態期間的調節器狀態
定義:
struct regulator_state {
int uV;
int min_uV;
int max_uV;
unsigned int mode;
int enabled;
bool changeable;
};
成員
uV掛起期間的預設工作電壓,可以在 <min_uV, max_uV> 之間進行調整。
min_uV可以設定最小掛起電壓。
max_uV可以設定最大掛起電壓。
mode掛起期間的工作模式。
enabled掛起期間的操作。 - DO_NOTHING_IN_SUSPEND - DISABLE_IN_SUSPEND - ENABLE_IN_SUSPEND
changeable此狀態是否可以在啟用/停用之間切換,
說明
這描述了在系統範圍的低功耗狀態期間調節器的狀態。 必須為配置應用設定啟用或停用之一。
-
struct regulation_constraints¶
調節器工作約束。
定義:
struct regulation_constraints {
const char *name;
int min_uV;
int max_uV;
int uV_offset;
int min_uA;
int max_uA;
int ilim_uA;
int pw_budget_mW;
int system_load;
u32 *max_spread;
int max_uV_step;
unsigned int valid_modes_mask;
unsigned int valid_ops_mask;
int input_uV;
struct regulator_state state_disk;
struct regulator_state state_mem;
struct regulator_state state_standby;
struct notification_limit over_curr_limits;
struct notification_limit over_voltage_limits;
struct notification_limit under_voltage_limits;
struct notification_limit temp_limits;
suspend_state_t initial_state;
unsigned int initial_mode;
unsigned int ramp_delay;
unsigned int settling_time;
unsigned int settling_time_up;
unsigned int settling_time_down;
unsigned int enable_time;
unsigned int uv_less_critical_window_ms;
unsigned int active_discharge;
unsigned always_on:1;
unsigned boot_on:1;
unsigned apply_uV:1;
unsigned ramp_disable:1;
unsigned soft_start:1;
unsigned pull_down:1;
unsigned system_critical:1;
unsigned over_current_protection:1;
unsigned over_current_detection:1;
unsigned over_voltage_detection:1;
unsigned under_voltage_detection:1;
unsigned over_temp_detection:1;
};
成員
name約束的描述性名稱,用於顯示目的。
min_uV消費者可以設定的最小電壓。
max_uV消費者可以設定的最大電壓。
uV_offset應用於來自消費者的電壓的偏移量,以補償電壓降。
min_uA消費者可以設定的最小電流。
max_uA消費者可以設定的最大電流。
ilim_uA最大輸入電流。
pw_budget_mW調節器的功率預算,單位為 mW。
system_load任何消費者請求都未捕獲的負載。
max_spread耦合調節器之間的最大可能差值
max_uV_step電壓的最大可能步進變化
valid_modes_mask可以由消費者配置的模式的掩碼。
valid_ops_mask可以由消費者執行的操作。
input_uV由另一個調節器供電時調節器的輸入電壓。
state_disk系統以磁碟模式掛起時調節器的狀態。
state_mem系統以記憶體模式掛起時調節器的狀態。
state_standby系統以待機模式掛起時調節器的狀態。
over_curr_limits對過流採取行動的限制。
over_voltage_limits對過壓採取行動的限制。
under_voltage_limits對欠壓採取行動的限制。
temp_limits對過溫採取行動的限制。
initial_state預設情況下設定的掛起狀態。
initial_mode啟動時設定的模式。
ramp_delay電壓變化後穩定下來的時間(單位:uV/us)
settling_time電壓變化為非線性時,電壓變化後穩定下來的時間(單位:微秒)。
settling_time_up電壓升高後,電壓變化為非線性時,電壓變化後穩定下來的時間(單位:微秒)。
settling_time_down電壓降低後,電壓變化為非線性時,電壓變化後穩定下來的時間(單位:微秒)。
enable_time導軌的開啟時間(單位:微秒)
uv_less_critical_window_ms指定在發生嚴重欠壓 (UV) 事件後的一段時間視窗(以毫秒為單位),在此期間系統可以安全地執行不太關鍵的操作(例如,日誌記錄)。 在此時間視窗之後,應執行更關鍵的操作(例如,防止硬體損壞)。
active_discharge啟用/停用主動放電。 列舉 regulator_active_discharge 值用於初始化。
always_on如果調節器永遠不應停用,則設定此項。
boot_on如果系統最初啟動時啟用調節器,則設定此項。 如果調節器未由硬體或引導載入程式啟用,則將在應用約束時啟用它。
apply_uV初始化時應用電壓約束。
ramp_disable初始化或設定電壓時停用斜坡延遲。
soft_start啟用軟啟動,使電壓緩慢上升。
pull_down停用調節器時啟用下拉電阻。
system_critical如果調節器對系統穩定性或功能至關重要,則設定此項。
over_current_protection在過流事件時自動停用。
over_current_detection配置過流限制。
over_voltage_detection配置過壓限制。
under_voltage_detection配置欠壓限制。
over_temp_detection配置過溫限制。
說明
此結構描述了調節器和板/機器特定的約束。
-
struct regulator_consumer_supply¶
電源 -> 裝置對映
定義:
struct regulator_consumer_supply {
const char *dev_name;
const char *supply;
};
成員
dev_namedev_name()對於消費者的結果。supply電源的名稱。
說明
這會將電源名稱對映到裝置。 使用 dev_name 允許支援使 struct device 稍後可用的匯流排,例如 I2C。
-
struct regulator_init_data¶
調節器平臺初始化資料。
定義:
struct regulator_init_data {
const char *supply_regulator;
struct regulation_constraints constraints;
int num_consumer_supplies;
struct regulator_consumer_supply *consumer_supplies;
void *driver_data;
};
成員
supply_regulator父調節器。 使用調節器名稱(如在 sysfs 的 name 欄位中顯示的)指定,該名稱可以使用約束欄位 ‘name’ 顯式設定。
constraints約束。 必須指定這些約束才能使調節器可用。
num_consumer_supplies消費者裝置電源的數量。
consumer_supplies消費者裝置電源配置。
driver_data傳遞給 regulator_init 的資料。
說明
初始化約束、我們的電源和消費者電源。
-
struct regulator_ops¶
調節器操作。
定義:
struct regulator_ops {
int (*list_voltage) (struct regulator_dev *, unsigned selector);
int (*set_voltage) (struct regulator_dev *, int min_uV, int max_uV, unsigned *selector);
int (*map_voltage)(struct regulator_dev *, int min_uV, int max_uV);
int (*set_voltage_sel) (struct regulator_dev *, unsigned selector);
int (*get_voltage) (struct regulator_dev *);
int (*get_voltage_sel) (struct regulator_dev *);
int (*set_current_limit) (struct regulator_dev *, int min_uA, int max_uA);
int (*get_current_limit) (struct regulator_dev *);
int (*set_input_current_limit) (struct regulator_dev *, int lim_uA);
int (*set_over_current_protection)(struct regulator_dev *, int lim_uA, int severity, bool enable);
int (*set_over_voltage_protection)(struct regulator_dev *, int lim_uV, int severity, bool enable);
int (*set_under_voltage_protection)(struct regulator_dev *, int lim_uV, int severity, bool enable);
int (*set_thermal_protection)(struct regulator_dev *, int lim, int severity, bool enable);
int (*set_active_discharge)(struct regulator_dev *, bool enable);
int (*enable) (struct regulator_dev *);
int (*disable) (struct regulator_dev *);
int (*is_enabled) (struct regulator_dev *);
int (*set_mode) (struct regulator_dev *, unsigned int mode);
unsigned int (*get_mode) (struct regulator_dev *);
int (*get_error_flags)(struct regulator_dev *, unsigned int *flags);
int (*enable_time) (struct regulator_dev *);
int (*set_ramp_delay) (struct regulator_dev *, int ramp_delay);
int (*set_voltage_time) (struct regulator_dev *, int old_uV, int new_uV);
int (*set_voltage_time_sel) (struct regulator_dev *,unsigned int old_selector, unsigned int new_selector);
int (*set_soft_start) (struct regulator_dev *);
int (*get_status)(struct regulator_dev *);
unsigned int (*get_optimum_mode) (struct regulator_dev *, int input_uV, int output_uV, int load_uA);
int (*set_load)(struct regulator_dev *, int load_uA);
int (*set_bypass)(struct regulator_dev *dev, bool enable);
int (*get_bypass)(struct regulator_dev *dev, bool *enable);
int (*set_suspend_voltage) (struct regulator_dev *, int uV);
int (*set_suspend_enable) (struct regulator_dev *);
int (*set_suspend_disable) (struct regulator_dev *);
int (*set_suspend_mode) (struct regulator_dev *, unsigned int mode);
int (*resume)(struct regulator_dev *rdev);
int (*set_pull_down) (struct regulator_dev *);
};
成員
list_voltage返回支援的電壓之一(以微伏為單位); 如果選擇器指示在此係統上無法使用的電壓,則返回零; 或者返回負 errno。 選擇器的範圍從零到小於 regulator_desc.n_voltages 的值。 可以按任何順序報告電壓。
set_voltage在指定的範圍內設定調節器的電壓。 驅動程式應選擇最接近 min_uV 的電壓。
map_voltage將電壓轉換為選擇器
set_voltage_sel使用指定的選擇器設定調節器的電壓。
get_voltage返回調節器的當前配置電壓; 如果在啟動時無法讀取調節器且尚未設定,則返回 -ENOTRECOVERABLE。
get_voltage_sel返回調節器的當前配置電壓選擇器; 如果在啟動時無法讀取調節器且尚未設定,則返回 -ENOTRECOVERABLE。
set_current_limit為電流限制的調節器配置限制。 驅動程式應選擇最接近 max_uA 的電流。
get_current_limit獲取電流限制的調節器的配置限制。
set_input_current_limit配置輸入限制。
set_over_current_protection支援啟用和設定用於檢測過流情況的限制。 可以為三個嚴重程度級別配置檢測。
REGULATOR_SEVERITY_PROT 應自動關閉調節器。
- REGULATOR_SEVERITY_ERR 應指示過流情況是由
不可恢復的錯誤引起的,但 HW 不執行自動關閉。
- REGULATOR_SEVERITY_WARN 應指示硬體仍然被
認為沒有損壞,但需要板特定的恢復操作的情況。 如果 lim_uA 為 0,則不應更改限制,而應根據要求啟用/停用檢測。
set_over_voltage_protection支援啟用和設定用於檢測過壓情況的限制。 可以為與過流保護相同的嚴重程度配置檢測。 單位為 uV。
set_under_voltage_protection支援啟用和設定用於檢測欠壓情況的限制。 可以為與過流保護相同的嚴重程度配置檢測。 單位為 uV。
set_thermal_protection支援啟用和設定用於檢測過溫情況的限制。可以為與過流保護相同的嚴重程度配置檢測。 單位為開爾文度。
set_active_discharge設定調節器的主動放電啟用/停用。
enable將調節器配置為啟用狀態。
disable配置穩壓器為停用狀態。
is_enabled如果穩壓器已啟用,則返回 1,否則返回 0。也可能返回負的 errno 值。
set_mode設定穩壓器的配置執行模式。
get_mode獲取穩壓器的配置執行模式。
get_error_flags獲取穩壓器當前的錯誤。
enable_time啟用穩壓器後,穩壓器電壓輸出穩定所需的時間,單位為微秒。
set_ramp_delay設定穩壓器的斜坡延遲。驅動程式應選擇等於或小於(最接近)ramp_delay 的斜坡延遲。
set_voltage_time將穩壓器電壓輸出設定為新值後,穩壓器電壓輸出穩定所需的時間,單位為微秒。該函式接收起始電壓和目標電壓作為輸入,應返回最壞情況。
set_voltage_time_sel將穩壓器電壓輸出設定為新值後,穩壓器電壓輸出穩定所需的時間,單位為微秒。該函式接收起始和目標電壓選擇器作為輸入,應返回最壞情況。
set_soft_start為穩壓器啟用軟啟動。
get_status返回穩壓器的實際(非配置)狀態,作為 REGULATOR_STATUS 值(或負的 errno 值)
get_optimum_mode獲取穩壓器在指定的引數下執行時的最佳執行模式。
set_load設定穩壓器的負載。
set_bypass將穩壓器設定為旁路模式。
get_bypass獲取穩壓器的旁路模式狀態。
set_suspend_voltage設定系統掛起時穩壓器的電壓。
set_suspend_enable標記系統掛起時穩壓器已啟用。
set_suspend_disable標記系統掛起時穩壓器已停用。
set_suspend_mode設定系統掛起時穩壓器的執行模式。
resume恢復掛起穩壓器的執行。
set_pull_down配置穩壓器在停用時下拉。
說明
此結構描述了穩壓器晶片驅動程式可以實現的穩壓器操作。
-
struct regulator_desc¶
靜態穩壓器描述符
定義:
struct regulator_desc {
const char *name;
const char *supply_name;
const char *of_match;
bool of_match_full_name;
const char *regulators_node;
int (*of_parse_cb)(struct device_node *,const struct regulator_desc *, struct regulator_config *);
int (*init_cb)(struct regulator_dev *, struct regulator_config *);
int id;
unsigned int continuous_voltage_range:1;
unsigned n_voltages;
unsigned int n_current_limits;
const struct regulator_ops *ops;
int irq;
enum regulator_type type;
struct module *owner;
unsigned int min_uV;
unsigned int uV_step;
unsigned int linear_min_sel;
int fixed_uV;
unsigned int ramp_delay;
int min_dropout_uV;
const struct linear_range *linear_ranges;
const unsigned int *linear_range_selectors_bitfield;
int n_linear_ranges;
const unsigned int *volt_table;
const unsigned int *curr_table;
unsigned int vsel_range_reg;
unsigned int vsel_range_mask;
bool range_applied_by_vsel;
unsigned int vsel_reg;
unsigned int vsel_mask;
unsigned int vsel_step;
unsigned int csel_reg;
unsigned int csel_mask;
unsigned int apply_reg;
unsigned int apply_bit;
unsigned int enable_reg;
unsigned int enable_mask;
unsigned int enable_val;
unsigned int disable_val;
bool enable_is_inverted;
unsigned int bypass_reg;
unsigned int bypass_mask;
unsigned int bypass_val_on;
unsigned int bypass_val_off;
unsigned int active_discharge_on;
unsigned int active_discharge_off;
unsigned int active_discharge_mask;
unsigned int active_discharge_reg;
unsigned int soft_start_reg;
unsigned int soft_start_mask;
unsigned int soft_start_val_on;
unsigned int pull_down_reg;
unsigned int pull_down_mask;
unsigned int pull_down_val_on;
unsigned int ramp_reg;
unsigned int ramp_mask;
const unsigned int *ramp_delay_table;
unsigned int n_ramp_values;
unsigned int enable_time;
unsigned int off_on_delay;
unsigned int poll_enabled_time;
unsigned int (*of_map_mode)(unsigned int mode);
};
成員
name穩壓器的標識名稱。
supply_name標識穩壓器電源
of_match用於在 DT 中標識穩壓器的名稱。
of_match_full_name一個標誌,指示 of_match 字串(如果存在)應與節點 full_name 匹配。
regulators_node在 DT 中包含穩壓器定義的節點的名稱。
of_parse_cb僅當 of_match 存在時才呼叫的可選回撥。 將在 init_data 解析期間,為從 DT 解析的每個穩壓器呼叫。 作為引數傳遞給回撥的 regulator_config 將是傳遞給 regulator_register 的配置的副本,僅對此特定呼叫有效。 回撥可以自由更改配置,但不能將其儲存以供以後使用。 回撥應在成功時返回 0,或在失敗時返回負的 ERRNO 值。
init_cbinit_data 解析後呼叫的可選回撥。 允許穩壓器執行執行時初始化(如果需要),例如同步穩壓器和已解析的約束。 回撥應在成功時返回 0,或在失敗時返回負的 ERRNO 值。
id穩壓器的數值識別符號。
continuous_voltage_range指示穩壓器是否可以在約束範圍內設定任何電壓。
n_voltagesops.list_voltage() 可用的選擇器數量。
n_current_limits電流限制可用的選擇器數量
ops穩壓器操作表。
irq穩壓器的中斷號。
type指示穩壓器是電壓穩壓器還是電流穩壓器。
owner提供穩壓器的模組,用於引用計數。
min_uV最低選擇器提供的電壓(如果是線性對映)
uV_step每個選擇器的電壓增量(如果是線性對映)
linear_min_sel用於啟動線性對映的最小選擇器
fixed_uV軌道的固定電壓。
ramp_delay電壓變化後穩定下來的時間(單位:uV/us)
min_dropout_uV此穩壓器可以處理的最小壓降電壓
linear_ranges可能的電壓範圍的常量表。
linear_range_selectors_bitfield作為位欄位值的電壓範圍選擇器的常量表。如果使用可選範圍,則每個範圍必須在此處具有相應的選擇器。
n_linear_ranges**linear_ranges**(以及如果使用 linear_range_selectors_bitfield)表中的條目數。
volt_table電壓對映表(如果是基於表的對映)
curr_table電流限制對映表(如果是基於表的對映)
vsel_range_reg使用可選範圍和
regulator_map_*_voltage_*_pickable函式時,用於範圍選擇器的暫存器。vsel_range_mask用於範圍選擇器的暫存器位欄位的掩碼
range_applied_by_vsel一個標誌,指示對 vsel_range_reg 的更改僅在寫入 vsel_reg 後才有效
vsel_reg使用
regulator_map_*_voltage_*時,用於選擇器的暫存器vsel_mask用於選擇器的暫存器位欄位的掩碼
vsel_step指定設定電壓時選擇器步進的解析度。如果為 0,則不進行步進(直接設定請求的選擇器),如果 > 0,則穩壓器 API 將每次增加/減少指定步進值來逐漸斜升/斜降電壓。
csel_reg用於使用 regmap set_current_limit 的電流限制選擇器的暫存器
csel_mask用於電流限制選擇器的暫存器位欄位的掩碼
apply_reg使用 regulator_set_voltage_sel_regmap 時,用於啟動輸出電壓更改的暫存器
apply_bit使用 regulator_set_voltage_sel_regmap 時,用於啟動輸出電壓更改的暫存器位欄位
enable_reg使用 regmap 啟用/停用操作時用於控制的暫存器
enable_mask使用 regmap 啟用/停用操作時用於控制的掩碼
enable_val使用 regmap 啟用/停用操作時用於控制的啟用值
disable_val使用 regmap 啟用/停用操作時用於控制的停用值
enable_is_inverted一個標誌,指示在使用 regulator_enable_regmap 和朋友 API 時,設定 enable_mask 位以停用。
bypass_reg使用 regmap set_bypass 時用於控制的暫存器
bypass_mask使用 regmap set_bypass 時用於控制的掩碼
bypass_val_on使用 regmap set_bypass 時用於控制的啟用值
bypass_val_off使用 regmap set_bypass 時用於控制的停用值
active_discharge_on使用 regmap set_active_discharge 時用於控制的停用值
active_discharge_off使用 regmap set_active_discharge 時用於控制的啟用值
active_discharge_mask使用 regmap set_active_discharge 時用於控制的掩碼
active_discharge_reg使用 regmap set_active_discharge 時用於控制的暫存器
soft_start_reg使用 regmap set_soft_start 時用於控制的暫存器
soft_start_mask使用 regmap set_soft_start 時用於控制的掩碼
soft_start_val_on使用 regmap set_soft_start 時用於控制的啟用值
pull_down_reg使用 regmap set_pull_down 時用於控制的暫存器
pull_down_mask使用 regmap set_pull_down 時用於控制的掩碼
pull_down_val_on使用 regmap set_pull_down 時用於控制的啟用值
ramp_reg用於控制穩壓器斜坡速率的暫存器。
ramp_mask斜坡速率控制暫存器的位掩碼。
ramp_delay_table用於對映穩壓器斜坡速率值的表。 值應以 V/S (uV/uS) 為單位給出。 請參閱 regulator_set_ramp_delay_regmap()。
n_ramp_values**ramp_delay_table** 中元素的數量。
enable_time穩壓器初始啟用所需的時間(以 uS 為單位)。
off_on_delay重新啟用穩壓器之前的保護時間(以 uS 為單位)
poll_enabled_time在檢查穩壓器是否實際啟用時要使用的輪詢間隔(以 uS 為單位)。 最大為 enable_time。
of_map_mode將 DeviceTree 中定義的硬體模式對映到標準模式
說明
使用核心註冊的每個穩壓器都使用此型別的結構和一個 struct regulator_config 進行描述。 此結構包含穩壓器描述的非可變部分。
-
struct regulator_config¶
動態穩壓器描述符
定義:
struct regulator_config {
struct device *dev;
const struct regulator_init_data *init_data;
void *driver_data;
struct device_node *of_node;
struct regmap *regmap;
struct gpio_desc *ena_gpiod;
};
成員
dev穩壓器的
struct deviceinit_data平臺提供的初始化資料,由驅動程式傳遞
driver_data私有穩壓器資料
of_node要解析以獲取裝置樹繫結的 OpenFirmware 節點(可以為 NULL)。
regmap如果 dev_get_regmap() 不夠用,則用於核心 regmap 幫助程式的 regmap。
ena_gpiod控制穩壓器啟用的 GPIO。
說明
使用核心註冊的每個穩壓器都使用此型別的結構和一個 struct regulator_desc 進行描述。 此結構包含穩壓器描述的執行時變數部分。
-
struct regulator_err_state¶
穩壓器錯誤/通知狀態
定義:
struct regulator_err_state {
struct regulator_dev *rdev;
unsigned long notifs;
unsigned long errors;
int possible_errs;
};
成員
rdev指示狀態的穩壓器。
notifs在穩壓器上發生的事件。
errors穩壓器上處於活動狀態的錯誤。
possible_errs可以發出訊號的錯誤(由給定的 IRQ)。
-
struct regulator_irq_data¶
穩壓器錯誤/通知狀態資料
定義:
struct regulator_irq_data {
struct regulator_err_state *states;
int num_states;
void *data;
long opaque;
};
成員
states每個關聯穩壓器的狀態結構。
num_states關聯穩壓器的數量。
data在 regulator_irq_desc 處給出的驅動程式資料指標。
opaqueIC 驅動程式的 Value 儲存。 核心不更新此值。 IC 可能希望在 map_event 處儲存狀態暫存器值,並在 “renable” 回撥中比較內容,以檢視是否已將新問題新增到狀態。 如果是這種情況,則可能需要返回 REGULATOR_ERROR_CLEARED 而不是 REGULATOR_ERROR_ON,以允許再次觸發 IRQ,併為新問題生成通知。
說明
此結構傳遞給 “map_event” 和 “renable” 回撥,用於向核心報告穩壓器狀態。
-
struct regulator_irq_desc¶
基於 IRQ 的事件的通知傳送者。
定義:
struct regulator_irq_desc {
const char *name;
int fatal_cnt;
int reread_ms;
int irq_off_ms;
bool skip_off;
bool high_prio;
void *data;
int (*die)(struct regulator_irq_data *rid);
int (*map_event)(int irq, struct regulator_irq_data *rid, unsigned long *dev_mask);
int (*renable)(struct regulator_irq_data *rid);
};
成員
nameIRQ 的可見名稱
fatal_cnt如果此 IRQ 用於指示 HW 損壞情況,則最好關閉穩壓器或在錯誤處理重複失敗時重新啟動 SOC。 如果給出了 fatal_cnt,則如果 IRQ 處理失敗 fatal_cnt 次,則中止 IRQ 處理,並呼叫 die() 回撥(如果已填充)。 如果未填充 die(),則嘗試關閉系統電源,以防止任何進一步的損壞。
reread_ms如果 IC 讀取失敗,則在工作程式嘗試重新讀取狀態之前等待的時間。 如果未指定時間,則立即重新讀取。
irq_off_ms在重新評估裝置的狀態之前,IRQ 保持停用的時間,這些裝置在錯誤期間保持 IRQ 停用。 如果未給出,則 IRQ 保持啟用狀態,並且不呼叫 renable。
skip_off如果設定為 true,則 IRQ 處理程式將嘗試檢查在採取其他操作之前是否啟用了任何關聯的穩壓器。 如果未啟用任何穩壓器,並且將其設定為 true,則假定為偽 IRQ,並返回 IRQ_NONE。
high_prio指示應使用高優先順序 WQ 的布林值。
data驅動程式私有資料指標,將作為 regulator_irq_data 中的 renable、map_event 和 die 回撥傳遞。
die保護回撥。 如果 IC 狀態讀取或恢復操作失敗 fatal_cnt 次,則呼叫此回撥或關閉系統電源。 此回撥應實現最終保護嘗試,例如停用穩壓器。 如果保護成功,則 die() 可能會返回 0。 如果返回任何其他值,則核心假定最終保護失敗,並嘗試執行斷電作為最後的手段。
map_event驅動程式回撥,用於將 IRQ 狀態對映到具有事件/錯誤的穩壓器裝置。 注意:回撥必須初始化它所指示的所有 rdev 的錯誤和通知,因為核心不清除對映資料。 可以返回 REGULATOR_FAILED_RETRY 以指示從 IC 讀取狀態失敗。 如果重複 fatal_cnt 次,則核心將呼叫 die() 回撥或關閉系統電源作為最後的手段以保護 HW。
renable重新啟用 IRQ 之前檢查狀態的可選回撥(如果 HW 支援)。 如果已實現,則應清除錯誤標誌,以便更新
regulator_get_error_flags()獲取的錯誤。 如果未實現回撥,則假定錯誤已清除,並且重新啟用 IRQ。 可以返回 REGULATOR_FAILED_RETRY 以指示從 IC 讀取狀態失敗。 如果對 “fatal_cnt” 重複此操作,則核心將呼叫 die() 回撥,或者如果未填充 die(),則嘗試關閉系統電源作為最後的手段以保護 HW。 返回零表示已解決 HW 中的問題,並且將重新啟用 IRQ。 返回 REGULATOR_ERROR_ON 表示錯誤情況仍然有效,並保持 IRQ 停用。 請注意,返回 REGULATOR_ERROR_ON 不會重新觸發評估哪些事件處於活動狀態或重新發送通知。 如果需要這樣做,您可能需要返回零並允許 IRQ 重新觸發,從而導致重新評估和重新發送事件。
說明
此結構用於註冊穩壓器 IRQ 通知幫助程式。
引數
struct device *dev穩壓器“使用者”的裝置
const char *id電源名稱或穩壓器 ID。
說明
強烈建議使用透過 set_consumer_device_supply() 配置的電源名稱。 建議使用的電源名稱應與資料表中電源和/或相關裝置引腳使用的名稱相匹配。
返回
- 指向與穩壓器對應的
struct regulator的指標 生產者,或
ERR_PTR()編碼的負錯誤號。
引數
struct device *dev穩壓器“使用者”的裝置
const char *id電源名稱或穩壓器 ID。
說明
在保持此引用的同時,其他使用者將無法獲取此穩壓器,並且穩壓器的使用計數將初始化以反映穩壓器的當前狀態。
這適用於無法容忍穩壓器共享使用的使用者,例如需要強制關閉穩壓器才能使其控制的硬體正確執行的使用者。
強烈建議使用透過 set_consumer_device_supply() 配置的電源名稱。 建議使用的電源名稱應與資料表中電源和/或相關裝置引腳使用的名稱相匹配。
返回
- 指向與穩壓器對應的
struct regulator的指標 生產者,或
ERR_PTR()編碼的負錯誤號。
引數
struct device *dev穩壓器“使用者”的裝置
const char *id電源名稱或穩壓器 ID。
說明
這適用於某些裝置在正常使用中可能未連線某些電源的使用者,例如某些 MMC 裝置。 它可以允許穩壓器核心為使用普通 regulator_get() 呼叫請求的其他電源提供存根電源,而不會中斷可以處理不存在的電源的驅動程式的操作。
強烈建議使用透過 set_consumer_device_supply() 配置的電源名稱。 建議使用的電源名稱應與資料表中電源和/或相關裝置引腳使用的名稱相匹配。
返回
- 指向與穩壓器對應的
struct regulator的指標 生產者,或
ERR_PTR()編碼的負錯誤號。
引數
struct regulator *regulator穩壓器源
注意
驅動程式必須確保對此穩壓器源進行的所有 regulator_enable 呼叫都透過呼叫 regulator_disable 來平衡,然後再呼叫此函式。
-
int regulator_register_supply_alias(struct device *dev, const char *id, struct device *alias_dev, const char *alias_id)¶
為電源查詢提供裝置別名
引數
struct device *dev將作為穩壓器“使用者”給出的裝置
const char *id電源名稱或穩壓器 ID
struct device *alias_dev應該用於查詢電源的裝置
const char *alias_id應該用於查詢電源的電源名稱或穩壓器ID
說明
對 dev 上 id 的所有查詢都將改為在 alias_dev 上對 alias_id 進行。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct device *dev將作為穩壓器“使用者”給出的裝置
const char *id電源名稱或穩壓器 ID
說明
如果 dev 上存在 id 的查詢別名,則移除它。
-
int regulator_bulk_register_supply_alias(struct device *dev, const char *const *id, struct device *alias_dev, const char *const *alias_id, int num_id)¶
註冊多個別名
引數
struct device *dev將作為穩壓器“使用者”給出的裝置
const char *const *id電源名稱或穩壓器 ID 的列表
struct device *alias_dev應該用於查詢電源的裝置
const char *const *alias_id應該用於查詢電源的電源名稱或穩壓器 ID 的列表
int num_id要註冊的別名數量
說明
此輔助函式允許驅動程式在一個操作中註冊多個電源別名。如果任何別名無法註冊,則在返回呼叫者之前,將移除任何已註冊的別名。
返回
成功時返回 0,失敗時返回負錯誤號。
-
void regulator_bulk_unregister_supply_alias(struct device *dev, const char *const *id, int num_id)¶
登出多個別名
引數
struct device *dev將作為穩壓器“使用者”給出的裝置
const char *const *id電源名稱或穩壓器 ID 的列表
int num_id要登出的別名數量
說明
此輔助函式允許驅動程式在一個操作中登出多個電源別名。
引數
struct regulator *regulator穩壓器源
說明
請求以預定義的電壓或電流值啟用穩壓器輸出。對 regulator_enable() 的呼叫必須與對 regulator_disable() 的呼叫相平衡。
注意
輸出值可以由其他驅動程式、引導載入程式設定,也可以硬連線到穩壓器中。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
說明
停用穩壓器輸出電壓或電流。對 regulator_enable() 的呼叫必須與對 regulator_disable() 的呼叫相平衡。
注意
僅當沒有其他使用者裝置啟用穩壓器,並且穩壓器裝置支援停用且機器約束允許此操作時,才會停用穩壓器輸出。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
說明
強制停用穩壓器輸出電壓或電流。
注意
即使其他使用者裝置已啟用穩壓器,也會停用穩壓器輸出。這應該用於如果未停用穩壓器則可能發生裝置損壞的情況(例如,過溫)。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
int ms停用穩壓器之前的毫秒數
說明
延遲一段時間後,對穩壓器執行 regulator_disable()。這適用於需要一些時間才能靜止的裝置。
注意
僅當沒有其他使用者裝置啟用穩壓器,並且穩壓器裝置支援停用且機器約束允許此操作時,才會停用穩壓器輸出。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
說明
請注意,支援此穩壓器控制代碼的裝置可以有多個使用者,因此即使從未為此特定源呼叫 regulator_enable(),它也可能已啟用。
返回
- 如果支援源/客戶端的穩壓器驅動程式
已請求啟用該裝置,則為正值,否則為零,否則為負錯誤號。
-
int regulator_count_voltages(struct regulator *regulator)¶
計數
regulator_list_voltage()選擇器
引數
struct regulator *regulator穩壓器源
返回
穩壓器的選擇器數量,或負錯誤號。
說明
選擇器從零開始編號,通常對應於硬體暫存器中的位域。
引數
struct regulator *regulator穩壓器源
unsigned selector標識要列出的電壓
上下文
可以休眠
返回
- 可以傳遞給 regulator_set_voltage() 的 選擇器 的電壓,
如果 選擇器 無法在此係統上使用,則為 0,否則為失敗時的負錯誤號。
引數
struct regulator *regulator穩壓器源
返回
- 指向 穩壓器 的
struct regmap的指標,或 ERR_PTR() 編碼為 -
EOPNOTSUPP,如果 穩壓器 不使用 regmap。
-
int regulator_get_hardware_vsel_register(struct regulator *regulator, unsigned *vsel_reg, unsigned *vsel_mask)¶
獲取硬體電壓選擇器暫存器
引數
struct regulator *regulator穩壓器源
unsigned *vsel_reg電壓選擇器暫存器,輸出引數
unsigned *vsel_mask電壓選擇器位域的掩碼,輸出引數
說明
返回用於設定穩壓器電壓的硬體暫存器偏移量和位掩碼。這在配置電壓縮放硬體或韌體時可能很有用,例如,韌體可以在核心不知情的情況下發出 I2C 請求。
成功後,將填充輸出引數 vsel_reg 和 vsel_mask,並返回 0,否則返回負錯誤號。
返回
- 成功時返回 0,或者如果穩壓器不支援電壓選擇器,則返回 -
EOPNOTSUPP。 電壓選擇器。
引數
struct regulator *regulator穩壓器源
unsigned selector標識要列出的電壓
說明
將選擇器轉換為可以直接寫入穩壓器暫存器的特定於硬體的電壓選擇器。可以透過呼叫 regulator_get_hardware_vsel_register 確定電壓暫存器的地址。
返回
- 成功時返回 0,如果選擇器超出支援的範圍,則返回 -
EINVAL,或者如果穩壓器不支援電壓選擇器,則返回 -EOPNOTSUPP。 範圍。
引數
struct regulator *regulator穩壓器源
bool enable啟用時為 true,停用時為 false
說明
請求以預定義的電壓或電流值啟用/停用穩壓器輸出。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
返回
- 線性穩壓器的 VSEL 值之間的電壓步長,
如果穩壓器不是線性穩壓器,則為 0。
引數
struct regulator *regulator要檢查的穩壓器。
int min_uV所需的最小電壓(以 uV 為單位)。
int max_uV所需的最大電壓(以 uV 為單位)。
返回
- 如果支援該電壓範圍,則為 1;如果不支援,則為 0;或者如果 穩壓器 的電壓無法更改並且電壓回讀失敗,則為負錯誤
數字。
引數
struct regulator *regulator穩壓器源
int min_uV所需的最小電壓(以 uV 為單位)
int max_uV可接受的最大電壓(以 uV 為單位)
說明
將穩壓器設定為所需的輸出電壓。這可以在任何穩壓器狀態下設定。IOW,穩壓器可以停用或啟用。
如果穩壓器已啟用,則電壓將立即更改為新值;否則,如果穩壓器已停用,則啟用時穩壓器將以新電壓輸出。
注意
如果穩壓器在多個裝置之間共享,則將使用滿足系統約束的最低請求電壓。必須先為此穩壓器設定穩壓器系統約束,然後才能呼叫此函式,否則此呼叫將失敗。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
int old_uV起始電壓(以微伏為單位)
int new_uV目標電壓(以微伏為單位)
說明
提供起始電壓和結束電壓後,此函式嘗試計算上升或下降到此新電壓所需的微秒數。
返回
斜坡時間(以微秒為單位),如果計算失敗,則返回負錯誤號。
-
int regulator_set_voltage_time_sel(struct regulator_dev *rdev, unsigned int old_selector, unsigned int new_selector)¶
獲取上升/下降時間
引數
struct regulator_dev *rdev穩壓器源裝置
unsigned int old_selector起始電壓的選擇器
unsigned int new_selector目標電壓的選擇器
說明
此函式接收起始電壓和目標電壓選擇器,並返回上升或下降到此新電壓所需的微秒時間
在regulation_constraints中提供ramp_delay的驅動程式可以使用此函式作為它們的set_voltage_time_sel()操作。
返回
斜坡時間(以微秒為單位),如果計算失敗,則返回負錯誤號。
引數
struct regulator *regulator穩壓器源
說明
重新應用上次配置的電壓。 當消費者正在協作的某些外部控制源導致配置的電壓發生變化時,可以使用此功能。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
返回
當前穩壓器電壓,單位為uV,如果失敗,則返回負錯誤號。
注意
如果穩壓器被停用,它將返回電壓值。 不應使用此函式來確定穩壓器狀態。
引數
struct regulator *regulator穩壓器源
int min_uA支援的最小電流,單位為uA
int max_uA支援的最大電流,單位為uA
說明
將電流阱設定為所需的輸出電流。 可以在任何穩壓器狀態下設定此值。 換句話說,可以停用或啟用穩壓器。
如果穩壓器已啟用,則電流將立即更改為新值,否則,如果穩壓器已停用,則啟用時穩壓器將以新電流輸出。
注意
在呼叫此函式之前,必須為此穩壓器設定穩壓器系統約束,否則此呼叫將失敗。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
返回
- 指定電流阱提供的電流,單位為uA
如果失敗,則返回負錯誤號。
注意
如果穩壓器被停用,它將返回電流值。 不應使用此函式來確定穩壓器狀態。
引數
struct regulator *regulator穩壓器源
返回
穩壓器的未宣告功率預算,單位為mW。
引數
struct regulator *regulator穩壓器源
unsigned int pw_req請求的功率
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
unsigned int pw要釋放的功率。
返回
穩壓器的功率預算,單位為mW。
引數
struct regulator *regulator穩壓器源
unsigned int mode工作模式 - REGULATOR_MODE常量之一
說明
設定穩壓器工作模式以提高穩壓器效率或改善穩壓效能。
注意
在呼叫此函式之前,必須為此穩壓器設定穩壓器系統約束,否則此呼叫將失敗。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
說明
獲取當前的穩壓器工作模式。
返回
- 當前工作模式,如
REGULATOR_MODE_*值 如果失敗,則返回負錯誤號。
引數
struct regulator *regulator穩壓器源
unsigned int *flags用於儲存錯誤標誌的指標
說明
獲取當前的穩壓器錯誤資訊。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator穩壓器源
int uA_load負載電流
說明
通知穩壓器核心新的裝置負載。 然後,DRMS(如果約束條件允許)可以使用它來為新的穩壓器負載設定最有效的穩壓器工作模式。
當消費者裝置更改其執行狀態和電源狀態時,他們會將其所需的最大功率(可以從裝置資料手冊的功耗表中獲取)通知其電源穩壓器。 可能影響功耗的執行狀態變化示例包括:-
o 裝置已開啟/關閉。 o 裝置 I/O 即將開始或剛剛完成。 o 裝置在工作之間處於空閒狀態。
此資訊也透過 sysfs 匯出到使用者空間。
DRMS 將對穩壓器上的總請求負載求和,並在平臺約束允許的情況下更改為最有效的操作模式。
如果穩壓器是常開穩壓器,那麼如果完全停用了某個消費者,仍然會移除該消費者的負載。
注意
當穩壓器消費者請求停用穩壓器時,該消費者請求的任何負載都不再計入總請求負載。 如果重新啟用穩壓器,則先前請求的負載將再次開始計數。
返回
成功時返回 0,失敗時返回負錯誤號。
引數
struct regulator *regulator要配置的穩壓器
bool enable啟用或停用旁路模式
說明
如果穩壓器的所有其他消費者也啟用了旁路模式,並且機器約束允許這樣做,則允許穩壓器進入旁路模式。 旁路模式意味著穩壓器只是將輸入直接傳遞到輸出,而沒有進行穩壓。
返回
- 成功時為 0,或者如果無法更改旁路,或者
失敗時為負錯誤號。
-
int regulator_register_notifier(struct regulator *regulator, struct notifier_block *nb)¶
註冊穩壓器事件通知程式
引數
struct regulator *regulator穩壓器源
struct notifier_block *nb通知程式塊
說明
註冊通知程式塊以接收穩壓器事件。
返回
成功時返回 0,失敗時返回負錯誤號。
-
int regulator_unregister_notifier(struct regulator *regulator, struct notifier_block *nb)¶
取消註冊穩壓器事件通知程式
引數
struct regulator *regulator穩壓器源
struct notifier_block *nb通知程式塊
說明
取消註冊穩壓器事件通知程式塊。
返回
成功時返回 0,失敗時返回負錯誤號。
-
int regulator_bulk_get(struct device *dev, int num_consumers, struct regulator_bulk_data *consumers)¶
獲取多個穩壓器消費者
引數
struct device *dev要提供的裝置
int num_consumers要註冊的消費者數量
struct regulator_bulk_data *consumers消費者的配置; 客戶端儲存在此處。
說明
此幫助函式允許驅動程式一次性獲得多個穩壓器消費者。 如果無法獲取任何穩壓器,則在返回給呼叫者之前,將釋放所有已分配的穩壓器。
返回
成功時返回 0,失敗時返回負錯誤號。
-
int regulator_bulk_enable(int num_consumers, struct regulator_bulk_data *consumers)¶
啟用多個穩壓器消費者
引數
int num_consumers消費者數量
struct regulator_bulk_data *consumers消費者資料; 客戶端儲存在此處。
說明
此便捷 API 允許消費者在單個 API 呼叫中啟用多個穩壓器客戶端。 如果無法啟用任何消費者,則在返回之前,將再次停用所有已啟用的消費者。
返回
成功時返回 0,失敗時返回負錯誤號。
-
int regulator_bulk_disable(int num_consumers, struct regulator_bulk_data *consumers)¶
停用多個穩壓器消費者
引數
int num_consumers消費者數量
struct regulator_bulk_data *consumers消費者資料; 客戶端儲存在此處。
說明
此便捷 API 允許消費者在單個 API 呼叫中停用多個穩壓器客戶端。 如果無法停用任何消費者,則在返回之前,將再次啟用所有已停用的消費者。
返回
成功時返回 0,失敗時返回負錯誤號。
-
int regulator_bulk_force_disable(int num_consumers, struct regulator_bulk_data *consumers)¶
強制停用多個穩壓器消費者
引數
int num_consumers消費者數量
struct regulator_bulk_data *consumers消費者資料; 客戶端儲存在此處。
說明
此便捷 API 允許消費者在單個 API 呼叫中強制停用多個穩壓器客戶端。
注意
這應該用於如果未停用穩壓器,則很可能發生裝置損壞的情況(例如,溫度過高)。 儘管某些消費者的regulator_force_disable函式呼叫可能會返回錯誤號,但該函式會為所有消費者呼叫。
返回
成功時返回 0,失敗時返回負錯誤號。
-
void regulator_bulk_free(int num_consumers, struct regulator_bulk_data *consumers)¶
釋放多個穩壓器消費者
引數
int num_consumers消費者數量
struct regulator_bulk_data *consumers消費者資料; 客戶端儲存在此處。
說明
此便捷 API 允許消費者在單個 API 呼叫中釋放多個穩壓器客戶端。
-
int regulator_notifier_call_chain(struct regulator_dev *rdev, unsigned long event, void *data)¶
呼叫穩壓器事件通知程式
引數
struct regulator_dev *rdev穩壓器源
unsigned long event通知程式塊
void *data回撥特定資料。
說明
由穩壓器驅動程式呼叫,以通知客戶端發生了穩壓器事件。
返回
NOTIFY_DONE.
-
int regulator_mode_to_status(unsigned int mode)¶
將穩壓器模式轉換為狀態
引數
unsigned int mode要轉換的模式
說明
將穩壓器模式轉換為狀態。
返回
與給定模式對應的REGULATOR_STATUS_*值。
-
struct regulator_dev *regulator_register(struct device *dev, const struct regulator_desc *regulator_desc, const struct regulator_config *cfg)¶
註冊穩壓器
引數
struct device *dev驅動穩壓器的裝置
const struct regulator_desc *regulator_desc要註冊的穩壓器
const struct regulator_config *cfg穩壓器的執行時配置
說明
由穩壓器驅動程式呼叫以註冊穩壓器。
返回
- 成功時指向有效的
struct regulator_dev的指標,或者 失敗時指向
ERR_PTR()編碼的負錯誤號。
-
void regulator_unregister(struct regulator_dev *rdev)¶
登出穩壓器
引數
struct regulator_dev *rdev要登出的穩壓器
說明
由穩壓器驅動程式呼叫以登出穩壓器。
-
void regulator_has_full_constraints(void)¶
系統具有完全指定的約束
引數
void無引數
說明
呼叫此函式將導致穩壓器API停用所有使用計數為零且在 late_initcall 中沒有 always_on 約束的穩壓器。
目的是在未來的核心版本中,這將成為預設行為,因此鼓勵使用者現在使用此功能。
-
void *rdev_get_drvdata(struct regulator_dev *rdev)¶
獲取 rdev 穩壓器驅動程式資料
引數
struct regulator_dev *rdev穩壓器
說明
獲取 rdev 穩壓器驅動程式的私有資料。此呼叫可以在穩壓器驅動程式的上下文中使用。
返回
指向穩壓器驅動程式私有資料的指標。
引數
struct regulator *regulator穩壓器
說明
獲取穩壓器驅動程式的私有資料。當需要呼叫非API穩壓器特定函式時,此呼叫可以在使用者驅動程式上下文中使用。
返回
指向穩壓器驅動程式私有資料的指標。
引數
struct regulator *regulator穩壓器
void *datadata
-
int rdev_get_id(struct regulator_dev *rdev)¶
獲取穩壓器 ID
引數
struct regulator_dev *rdev穩壓器
返回
rdev 的穩壓器ID。