前言 本文从regulator driver的角度,描述怎样基于regulator framework编写regulator驱动。...这里的regulator结构是相当复杂的,其中彩色框代表最终的regulator抽象,它的前一级表示regulator的载体(可以是PMIC、CPU、等等)。...this */ 29: }; supply_regulator,该regulator的前级regulator,一般在regulator driver中直接指定; constraints,该regulator...4.3 struct regulator_dev struct regulator_dev是regulator设备的抽象,当driver以struct regulator_desc、struct regulator_config...两个类型的参数,调用regulator_register将regulator注册到kernel之后,regulator就会分配一个struct regulator_dev变量,后续所有的regulator
(即该regulator的输出是另一个regulator的输入,简称supply regulator)和后级regulator(即该regulator的输入是其它regulator的输出,简称consumer...3)提供regulator的注册接口(regulator_register/devm_regulator_register),该接口接受描述该regulator的两个变量的指针:struct regulator_desc...regulator_disable(struct regulator *regulator); 3: int regulator_force_disable(struct regulator *...(struct regulator *regulator); 13: int regulator_set_voltage(struct regulator *regulator, int min_uV...(struct regulator *regulator); 18: int regulator_set_current_limit(struct regulator *regulator, 19
什么是regulator? regulator翻译为"调节器",分为voltage regulator(电压调节器)和current(电流调节器)。...regulator driver通过regulator_register函数注册regulator operation到regulator core。...常见的API regulator consumer interface 获取regulator/释放regulator regulator = regulator_get(dev, "Vcc"); regulator_put...(regulator); Enable and disable int regulator_enable(regulator); int regulator_disable(regulator); int...regulator_force_disable(regulator); 设置regulator的电压,获得regulator的电压状态 int regulator_set_voltage(regulator
/sys/class/regulator下有所有的regular,如 每个节点有如下的属性 cpu0-cpu 使用者名字 device max_microvolts...suspend_disk_state suspend_mem_state suspend_standby_state type 电源类型(电压或电流) uevent 查看/d/regulator.../regulator_summary有所有电源的信息,如 use 同上面的num_users(use_count) (_regulator_enable+1 _regulator_disable...-1)该参数可表明当前ldo的开光状态 open当前打开次数(open_count)(_regulator_get+1 _regulator_put-1)
示例分析 在内核kernel/drivers/regulator/dummy.c文件中构造了一个虚拟的regulator,参考此文件编写一个虚拟的regulator driver。...在注册的时候需要设置regulator的静态配置regulator_desc和动态配置regulator_config。...在/sys/class/regulator下会生成一个regulator.27的目录,因为手机中已经有了26个regulator。...regulator_register分析 struct regulator_dev *regulator_register(const struct regulator_desc *regulator_desc...设置regulator的约束信息,比如设置电压,电流等,最终会通过regulator中的regulator_ops函数设置。 6. 添加regulator的设备属性。 6.
1、代码目录 drivers/regulator 2、查看目录下的Kconfig文件 menuconfig REGULATOR bool "Voltage and Current Regulator...If unsure, say no. 3、阅读文件,得知REGULATOR是最核心的模块macro,那我们可以找一个设备的macro看看 config REGULATOR_STM32_VREFBUF...) += core.o dummy.o fixed-helper.o helpers.o devres.o obj-$(CONFIG_OF) += of_regulator.o obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE...) += fixed.o obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER) += virtual.o obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER..., .owner = THIS_MODULE, }; 7、由代码得知,regulator_ops和regulator_desc才是特有的regulator数据结构,当然也少不了注册函数 rdev
regulator的结构体 request_flag: 指定regulator的电路参数 返回值: 成功:0 失败:‑1 regulator 电路使能接口 函数原型 int hal_regulator_set_able...("[regulator] set regulator_en[%d]:%x, flage:%d\n", id, REGULATOR_GET(SOC_REGULATOR, id), flag); hal_regulator_get...(REGULATOR_GET(SOC_REGULATOR, id), ®ulator); printf("[regulator] set_able regulator_en\n"); hal_regulator_set_able...("[regulator] get regulator:%x\n", REGULATOR_GET(SOC_REGULATOR, id)); hal_regulator_get(REGULATOR_GET...] set regulator:%x\n", REGULATOR_GET(SOC_REGULATOR, id)); hal_regulator_get(REGULATOR_GET(SOC_REGULATOR
属性配置 regulator 为系统regulator_dev 设备,每个regulator_dev 代表一路电源,设备通过对regulator_dev 的引用建立regulator,用来实现对电源的电压设置等功能....3 dcdc1 regulator.4 dcdc2 regulator.5 dcdc3 regulator.6 dcdc4 regulator.7 aldo1 regulator.8 aldo2 regulator....9 aldo3 regulator.10 aldo4 regulator.11 bldo1 regulator.12 bldo2 regulator.13 bldo3 regulator.14 bldo4...regulator.15 cldo1 regulator.16 cldo2 regulator.17 cldo3 regulator.18 cldo4 regulator.19 rtcldo regulator...章节Regulator 找到对应的regulator 节点,这里以dcdc1 为例,其节点名称为regulator.3,则在/sys/class/regulator 目录下就有个 regulator.3
If step up pre regulator optionis not used, connect to ground. 2 VST Supply voltage standby regulator...The switch mode post regulator shall synchronize to the rising edge....If theoption step up pre regulator is used, leave open. 26 VCI Input for optional external post regulator...If theoption step up pre regulator is used, leave open. 26 VCI Input for optional external post regulator...If step uppre regulator option is not used, connect to ground.
vcc-pb not found, using dummy regulator [ 0.351019] uart uart0: get regulator failed [ 0.351045....sdmmc: No vdmmc regulator found [ 1.852034] sunxi-mmc 4020000.sdmmc: No vd33sw regulator found...: No vq33sw regulator found [ 1.871588] sunxi-mmc 4020000.sdmmc: No vq18sw regulator found [....sdmmc: No vdmmc regulator found [ 1.986729] sunxi-mmc 4021000.sdmmc: No vd33sw regulator found...: No vq33sw regulator found [ 2.006288] sunxi-mmc 4021000.sdmmc: No vq18sw regulator found [
"; regulator-name = "3P3V"; regulator-min-microvolt = ;...regulator-max-microvolt = ; regulator-always-on; }; } &i2c1 { pinctrl-names..."; regulator-name = "3P3V"; regulator-min-microvolt = ; regulator-max-microvolt...= ; regulator-always-on; }; 针对32位整形的属性,比如上面的regulator-min-microvolt,可以利用下面这个API来获取属性值,第一个参数是节点...,第二个参数是属性名字,第三个是输出型参数(把读出来的值放进去) of_property_read_u32(node, "regulator-min-microvolt", µvolt); 类似的读取数值的
[ 2.864473] sunxi-bt soc@03000000:bt: io_regulator_name ((null)) [...sdc0: No vd33sw regulator found [ 4.175775] sunxi-mmc sdc0: No vd18sw regulator...sdc1: No vd33sw regulator found [ 4.314231] sunxi-mmc sdc1: No vd18sw regulator...sdc0: No vd33sw regulator found [ 2.163651] sunxi-mmc sdc0: No vd18sw regulator...sdc1: No vd33sw regulator found [ 2.301978] sunxi-mmc sdc1: No vd18sw regulator
addresses indexed by BAR pcim_iomap_regions() : do request_region() and iomap() on multiple BARs REGULATOR...devm_regulator_get() devm_regulator_put() devm_regulator_bulk_get() devm_regulator_register(
Controller Driver(v3.17 2018-12-17 10:17) [ 4.218303] sunxi-mmc sdc1: Can't get vmmc regulator...string [ 4.224602] sunxi-mmc sdc1: Can't get vqmmc regulator string [ 4.230994...] sunxi-mmc sdc1: Can't get vdmmc regulator string [ 4.237373] sunxi-mmc sdc1: Failed...4.324976] sunxi_get_str_of_property()1542 - failed to get the string of propname led_regulator...missing or invalid [ 4.347562] sunxi-daudio daudio2: regulator missing or invalid [
该修改主要是针对regulator使用pwm进行调压,会在dts中配置pwm调压的极性,为了保证与uboot阶段的电压一致,现在需要把dts中配置的极性的值置位1。...reg_vdd_cpu: vdd-cpu { compatible = "sunxi-pwm-regulator"; - pwms = ; // 第一个参数是使用的...pwm通道,第二个参数是频率,第三个参数是极性 + pwms = ; // 第一个参数是使用的pwm通道,第二个参数是频率,第三个参数是极性 regulator-name...= "vdd_cpu"; regulator-min-microvolt = ; regulator-max-microvolt = ; regulator-ramp-delay...= ; regulator-always-on; regulator-boot-on; status = "okay"; }; 在修改完成后,编译打包,确认版型后烧录测试
regulator found [ 2.947761] sunxi-mmc sdc0: No vd33sw regulator found [ 2.953419] sunxi-mmc sdc0...: No vd18sw regulator found [ 2.959116] sunxi-mmc sdc0: No vq33sw regulator found [ 2.964773] sunxi-mmc...regulator found [ 3.158048] sunxi-mmc sdc1: No vd33sw regulator found [ 3.163702] sunxi-mmc sdc1...: No vd18sw regulator found [ 3.169370] sunxi-mmc sdc1: No vq33sw regulator found [ 3.175025] sunxi-mmc...[ 3.514402] [sound 1158][DAUDIO snd_sunxi_regulator_init] regulator missing or invalid [ 3.515641
节点中的vdd-supply,vio-supply属性指示了表明iqs263芯片供电的引脚的节点pm8953_l5,代码如下 kernel\arch\arm64\boot\dts\qcom\msm8953-regulator.dtsi...[objc] view plain copy &rpm_bus { rpm-regulator-ldoa5 { status = “okay”; pm8953..._l5: regulator-l5 { regulator-min-microvolt = ; regulator-max-microvolt
这里我们用到regulator,但是很多开发板或者设备没有regulator,这时我们就得在电路图中获得每个模块的供电情况。...注:像君正的newton开发板是具有regulator的,在板级中我们能看到regulator的简单配置,还有一些基本的配置,regulator参数的调试也是属于功耗调试的,如果木有的话,就算了。
"; regulator-name = "vcc-3v3"; regulator-min-microvolt = ; regulator-max-microvolt = <3300000...for WiFi and BT */ compatible = "<em>regulator</em>-fixed"; regulator-name = "vcc33-wifi"; regulator-min-microvolt...= ; regulator-max-microvolt = ; regulator-always-on; vin-supply = ;...= "regulator-fixed"; regulator-name = "vcc-wifi-io"; regulator-min-microvolt = ; regulator-max-microvolt...] axp20x-regulator: probe of axp20x-regulator.1 failed with error -5 [ 0.294520] axp20x-rsb sunxi-rsb
6、Regulator 驱动 Regulator是Linux系统中电源管理的基础设施之一,用于稳压电源的管理,是各种驱动子系统中设置电压的标准接口。...而Regulator则可以管理系统中的供电单元,即稳压器(Low Dropout Regulator,LDO,即低压差线性稳压器),并提供获取和设置这些供电单元电压的接口。...一般在ARM电路板上,各个稳压器和设备会形成一个Regulator树形结构,如图所示。...Linux的Regulator子系统提供如下API以用于注册/注销一个稳压器: structregulator_dev * regulator_register(conststructregulator_desc...*regulator_desc, conststructregulator_config *config); voidregulator_unregister(structregulator_dev
领取专属 10元无门槛券
手把手带您无忧上云