首页 > 系统相关 >02-[Linux][regulator]Linux内核中regulator的架构解析

02-[Linux][regulator]Linux内核中regulator的架构解析

时间:2023-08-04 15:57:11浏览次数:90  
标签:02 struct regulator voltage 电压 Linux consumer

转载自:https://zhuanlan.zhihu.com/p/565532795

1、介绍

Regulator指的是稳定器,有电压稳定器和电流稳定器两种,能够自动维持恒定电压或者电流。其中,电压稳定器voltage regulator在电路中比较常见。从设备驱动的角度来看,regulator的控制比较简单,主要有enable/disable/输出电压或者电流大小的控制。Linux利用regulator framework对regulator进行管理和控制。

Linux regulator framework的主要目的:提供标准的内核接口,控制系统的voltage/current regulators,并提供相应的开关、大小设置的机制。在系统运行的过程中,根据具体的需要动态改动regulators的输出,从而达到省电的目的。在系统中如果配错regulator是比较危险的,可能会对硬件器件造成损坏。因此,需要再regulator framework中对电流或者电压的大小进行限定,并且不能被regulators的consumer或者provider更改。

2、框架

2.1 machine

machine使用struct regulator_init_data,静态的描述regulator在板级的硬件连接情况,这些限制通过驱动或者dts配置,涉及到系统供电安全,因此必须小心。这些配置主要包括:
1)用于描述regulator在板级的级联关系:前级regulator(即该regulator的输出是另一个regulator的输入,简称supply regulator)和后级regulator(即该regulator的输入是其它regulator的输出,简称consumer regulator)。
2)利用struct regulator_constraints描述regulator的物理限制,比如:

  • 输出电压的最大值和最小值(voltage regulator)
  • 输出电流的最大值和最小值(current regulator)
  • 允许的操作(修改电压值,修改电流值,enable,disable等)
  • 输入电压是多少(当输入是另一个regulator时)
  • 是否不允许关闭(always_on)
  • 是否启动时就要打开(boot_on)

2.2 regulator driver

regulator driver指的是regulator设备的驱动,主要包含如下结构:
1)使用struct regulator_desc,描述regulator的静态信息,包括:名字、supply regulator的名字、中断号、操作函数集(struct regulator_ops)、使用regmap时相应的寄存器即bitmap等。
2)使用struct regulator_config,描述regulator的动态信息(所谓的动态信息,体现在struct regulator_config变量都是局部变量,因此不会永久保存),包括struct regulator_init_data指针、设备指针、enable gpio等。
3)提供regulator的注册接口(regulator_register/devm_regulator_register),该接口接受描述该regulator的两个变量的指针:struct regulator_desc和struct regulator_config,并分配一个新的数据结构(struct regulator_dev,从设备的角度描述regulator),并把静态指针(struct regulator_desc)和动态指针(struct regulator_config)提供的信息保存在其中。
4)regulator driver以struct regulator_dev(代表设备)指针为对象,对regulator进行后续的操作。

2.3 regulator consumer

regulator consumer抽象出regulator设备(struct regulator),并提供regulator操作相关的接口。包括:regulator_get/regulator_put/regulator_enable/regulator_disable/regulator_set_voltage/regulator_get_voltage等。

2.4 regulator core

regulator core负责上述regulator driver、consumer、machine逻辑的具体实现,对底层的硬件进行封装,并提供接口给内核中其他的consumer(使用当前regulator设备的驱动)提供操作接口,并以sysfs的形式,向用户空间提供接口。

3、数据结构

4、流程

这里主要梳理了两个流程:初始化流程,调压的流程

4.1 初始化流程

4.2 调压流程

调整电压前要先获取regulator handle,然后利用regulator_set_voltage进行调压

标签:02,struct,regulator,voltage,电压,Linux,consumer
From: https://www.cnblogs.com/hkcs596/p/17597364.html

相关文章

  • 2023年8月4日做题情况
    我确实很菜,但还是不锁帖了直面惨淡的人生.jpg今天是线段树专题练习,均在洛谷上午场08:10:48准备先打个板子熟悉一下09:10:17打板子期间出现了许多细节问题,1h才调完,还是不够熟练09:40:11完成P4588[TJOI2018]数学计算尽管是一道绿题,但是还是看了题解(关于题面->线段树......
  • 请问您在处理故障排除方面是否有经验?如果在Linux服务器上遇到问题,您会采取哪些步骤来
    一、服务器无法启动当你无法通过远程终端或物理控制台访问服务器时,可能是由于服务器无法启动造成的。这种情况下,你可以尝试以下几种方法:检查电源连接和供电情况,确保服务器有足够的电力供应。检查服务器硬件组件,如内存条和硬盘,确保它们没有松动或损坏。查看服务器启动日志,以......
  • Linux4
    查找命令(which、find)1.which命令注:我们前面学的Linux命令。其实它的本体就是一个个的二进制可执行程序和Windows中的.exe文件,是一个意思。我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪儿语法:which要查找的命令  2.find命令——按文件名查找文件可......
  • 7 Linux 内核移植
    一、编译ST的Linux系统1.压缩源码  首先先下载ST官方源码,之前章节已经下载过了,直接输入以下命令:cdlinux/atk-mpl/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.31-r0/  然后压缩 linux-5.4.31.tar.xz ......
  • Minitab 2021 - 统计分析管理软件
    Minitab2021是一款功能强大的统计分析管理软件,广泛应用于质量管理、数据分析、实验设计和质量改进等领域。点击获取Minitab2021 数据导入和管理:Minitab2021提供了灵活的数据导入和管理功能,可以导入各种常见格式的数据文件,如文本文件、Excel表格、数据库等。用户可以......
  • 喜讯!箱讯AnyCase荣获“2023年度苏州市服务型制造示范平台”
    近日,苏州市工业和信息化局公示了“2023年度苏州市服务型制造示范企业(平台)”名单。箱讯科技(上海)有限公司子公司苏州箱讯供应链管理有限公司荣耀上榜。添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)此次评......
  • AndroidStudio2021.3logcat工具无法显示日志解决办法
    AndroidStudio2021.3logcat工具无法显示日志解决办法 https://blog.csdn.net/weixin_43623271/article/details/127876964  1.File->setting2.搜索logcat,->ExperimentalunChkEnablenewLogcattoolwindow以后提示时Dismissit ......
  • 在行:真想见,不如付点钱 Late2021
    2020更新:666的聊天已下线,1666的还在......
  • 【专题】2023中国消费者洞察报告PDF合集分享(附原数据表)
    全文链接:https://tecdat.cn/?p=33375原文出处:拓端数据部落公众号在疫情后的时代,中国的消费市场正在逐步复苏。政策和社会共同努力,全面提振消费者的信心。与此同时,供给侧正在采用新的内容营销模式,品牌、电商直播和信息平台注重科普专业知识,将品质和创新作为核心竞争力。居民消费......
  • Linux:网络指令(route)
    学习自:route命令-Linux命令大全|linux教程Linux命令·route详解linux路由route命令-知乎1、说明route命令用于显示、设置Linux网络路由表,route命令设置的主要是静态路由。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实......