当前位置:网站首页>一点点读懂regulator(三)
一点点读懂regulator(三)
2022-08-04 22:50:00 【szembed】
本节我们主要介绍Regulator Machine Driver Interface
The regulator machine driver interface用于配置regulator subsystem的board/machine特定初始化代码。
Consider the following machine:
Regulator-1 -+-> Regulator-2 --> [Consumer A @ 1.8 - 2.0V]
|
+-> [Consumer B @ 3.3V]
consumers A和B的驱动器必须映射到正确的regulator上才能控制其电源。通过为每个regulator创建一个结构体 regulator_consumer_supply就可以在machine initialisation code中实现此映射:
struct regulator_consumer_supply {
const char *dev_name; /* consumer dev_name() */
const char *supply; /* consumer supply - e.g. "vcc" */
};
e.g. for the machine above:
static struct regulator_consumer_supply regulator1_consumers[] = {
REGULATOR_SUPPLY("Vcc", "consumer B"),
};
static struct regulator_consumer_supply regulator2_consumers[] = {
REGULATOR_SUPPLY("Vcc", "consumer A"),
};
This maps Regulator-1 to the ‘Vcc’ supply for Consumer B and maps Regulator-2 to the ‘Vcc’ supply for Consumer A.
现在,可以通过为每个regulator电源域定义一个结构体regulator_init_data来注册约束。此结构还将consumers映射到其supply regulators:
static struct regulator_init_data regulator1_data = {
.constraints = {
.name = "Regulator-1",
.min_uV = 3300000,
.max_uV = 3300000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
},
.num_consumer_supplies = ARRAY_SIZE(regulator1_consumers),
.consumer_supplies = regulator1_consumers,
};
The name field should be set to something that is usefully descriptive for the board for configuration of supplies for other regulators and for use in logging and other diagnostic output. Normally the name used for the supply rail in the schematic is a good choice. If no name is provided then the subsystem will choose one.
Regulator-1 supplies power to Regulator-2. This relationship must be registered with the core so that Regulator-1 is also enabled when Consumer A enables its supply (Regulator-2). The supply regulator is set by the supply_regulator field below and co:
static struct regulator_init_data regulator2_data = {
.supply_regulator = "Regulator-1",
.constraints = {
.min_uV = 1800000,
.max_uV = 2000000,
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
},
.num_consumer_supplies = ARRAY_SIZE(regulator2_consumers),
.consumer_supplies = regulator2_consumers,
};
Finally the regulator devices must be registered in the usual manner:
static struct platform_device regulator_devices[] = {
{
.name = "regulator",
.id = DCDC_1,
.dev = {
.platform_data = ®ulator1_data,
},
},
{
.name = "regulator",
.id = DCDC_2,
.dev = {
.platform_data = ®ulator2_data,
},
},
};
/* register regulator 1 device */
platform_device_register(®ulator_devices[0]);
/* register regulator 2 device */
platform_device_register(®ulator_devices[1]);
边栏推荐
猜你喜欢
随机推荐
得不到你的心,就用“分布式锁”锁住你的人
【3D建模制作技巧分享】zbrush贴图映射小技巧
JVM内存配置参数GC日志
Nacos配置中心之客户端长轮询
Leaflets of three bouquet of roses
Pytest学习-Fixture
学生管理系统架构设计
【2020】【Paper Notes】Metasurfaces: Multifunctional and Programmable——
自从新来了个字节20K出来的,就见识到了什么是天花板
js中小数四则运算精度问题原因及解决办法
promise详解
MQTT[一]基础知识介绍
1、网页结构
【游戏建模模型制作全流程】在ZBrush中雕刻恶魔城男性角色模型
【游戏建模模型制作全流程】ZBrush蜥蜴模型雕刻教程
ANT1.7下载以及配置方法
The Record of Reminding myself
To Offer | 03. Repeat Numbers in the array
现在学习次世代3D游戏建模还能找到高薪好工作吗
SQL Server calls WebService