当前位置:网站首页>一点点读懂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]);
边栏推荐
猜你喜欢
随机推荐
湖仓一体电商项目(五):内网穿透工具-网云穿
【TCP/IP 五 ICMP】
【3D建模制作技巧分享】ZBrush如何设置笔刷快捷键
Latex fast insert author ORCID
养殖虚拟仿真软件提供高沉浸式的虚拟场景互动操作体验学习
【内存操作函数内功修炼】memcpy + memmove + memcmp + memset(四)
【C - 基本概念】
【论文笔记KDD2021】MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems
[Paper Notes KDD2021] MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems
【模拟面试-10年工作】项目多一定是优势吗?
历史上的今天:PHP公开发布;iPhone 4 问世;万维网之父诞生
论文解读(PPNP)《Predict then Propagate: Graph Neural Networks meet Personalized PageRank》
Service Mesh落地路径
使用代理对象执行实现类目标方法异常
中国的顶级黑客在国际上是一个什么样的水平?
赶紧进来!!!教你C语言实现扫雷小游戏(文章最后有源码!!!)
逆序对的数量
移动web开发03
力扣24-两两交换链表中的节点——链表
Linear DP (bottom)