目录
3.2 Regulator driver interface
1、关于
此框架旨在提供一个标准内核接口来控制电压和电流调节器。
其目的是允许系统动态控制调节器功率输出,以节省电力和延长电池寿命。这适用于voltage regulators(电压输出可控)和current sinks(电流限制可控)。
2、命名法
使用的一些术语:
2.1 Regulator
为其他设备供电的电子设备。大多数调节器可以使能和禁用其输出,而有些调节器可以控制其输出电压和/或电流。
Input Voltage -> Regulator -> Output Voltage
2.2 PMIC
电源管理IC。包含许多调节器并通常包含其他子系统的IC。
2.3 Consumer
由调节器供电的电子设备。消费者可分为两类:
Static: consumer不会更改其电源电压或电流限制。它只需要启用或禁用power supply。其电源电压由hardware, bootloader, firmware or kernel board initialisation code来设置。
Dynamic: consumer需要更改其电源电压或电流限制,以满足操作要求。
2.4 Power Domain
由调节器、开关的输出功率或另一个电源域提供输入功率的电子电路。
电源调节器可能在开关后面。即:
Regulator -+-> Switch-1 -+-> Switch-2 --> [Consumer A]
| |
| +-> [Consumer B], [Consumer C]
|
+-> [Consumer D], [Consumer E]
这是一个稳压器和三个电源域:
-
-
- Domain 1: Switch-1, Consumers D & E.
- Domain 2: Switch-2, Consumers B & C.
- Domain 3: Consumer A.
-
这代表了一种“供应”关系:
Domain-1 –> Domain-2 –> Domain-3.
电源域可能具有由其他调节器供电的调节器。例如:
Regulator-1 -+-> Regulator-2 -+-> [Consumer A]
|
+-> [Consumer B]
这为我们提供了两个调节器和两个电源域:
-
-
- Domain 1: Regulator-2, Consumer B.
- Domain 2: Consumer A.
-
以及“供应”关系:
Domain-1 –> Domain-2
2.5 Constraints
约束用于定义性能和硬件保护的功率级别。约束存在于三个级别:
Regulator Level:这由稳压器硬件操作参数定义,并在稳压器数据表中规定。
-
-
- voltage output is in the range 800mV -> 3500mV.
- regulator current output limit is 20mA @ 5V but is 10mA @ 10V.
-
Power Domain Level:这在软件中由内核级主板初始化代码定义。它用于将功率域约束到特定的功率范围。
-
-
- Domain-1 voltage is 3300mV
- Domain-2 voltage is 1400mV -> 1600mV
- Domain-3 current limit is 0mA -> 20mA.
-
Consumer Level:这由consumer driver动态设置电压或电流限制级别定义。
例如,消费类背光驱动器要求电流从5mA增加到10mA,以增加LCD照明。这将通过以下级别:-
Consumer: 需要提高LCD亮度。查找并请求亮度表中的下一个当前mA值(the consumer driver could be used on several different personalities based upon the same reference device).
Power Domain: 是此域和系统状态(例如电池电量、USB电源)的域操作限制内的新电流限制 (e.g. battery power, USB power)
Regulator Domains: 是输入/输出电压稳压器工作参数内的新电流限制。如果调节器请求通过了所有约束测试,则应用新的调节器值。
3、Design
该框架设计并针对基于SoC的设备,但也可能与非SoC设备相关,并分为以下四类接口:-
3.1 Consumer driver interface
这使用了一个与内核时钟接口类似的API,因为consumer drivers可以get和put a regulator(就像他们可以使用时钟atm一样),并获取/设置电压、电流限制、模式、启用和禁用。这应允许consumers完全控制其电源电压和电流限制。如果不使用,这也会编译出来,以便驱动程序可以在没有基于调节器的电源控制的系统中重复使用。
3.2 Regulator driver interface
这允许regulator drivers注册其调节器并向内核提供操作。它还具有一个notifier call chain,用于将监管器事件传播到客户端。
3.3 Machine interface
此接口适用于机器特定代码,允许为每个调节器创建电压/电流域(带约束)。它可以提供调节器约束,防止设备因错误的客户端驱动程序引起的过压或过电流而损坏。它还允许创建一个调节器树,其中一些调节器由其他调节器提供(类似于时钟树)。
3.4 Userspace ABI
用户空间ABI。
该框架还通过sysfs将大量有用的电压/电流/操作模式数据导出到用户空间。这可用于帮助监控设备功耗和状态。
请参阅kernel文档/ABI/testing/sysfs-class-regulator