麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務器 > Linux服務器 > 正文

詳解linux電源管理驅動編寫

2024-09-05 23:04:43
字體:
來源:轉載
供稿:網友

對于嵌入式設備來說,合適的電源管理,不僅可以延長電池的壽命,而且可以省電,延長設備運行時間,在提高用戶體驗方面有很大的好處。所以,各個soc廠家在這方面花了很多的功夫。下面,我們可以看看linux是如何處理電源管理驅動的。

1、代碼目錄

drivers/regulator 

2、查看目錄下的Kconfig文件

menuconfig REGULATOR   bool "Voltage and Current Regulator Support"   help    Generic Voltage and Current Regulator support.     This framework is designed to provide a generic interface to voltage    and current regulators within the Linux kernel. It's intended to    provide voltage and current control to client or consumer drivers and    also provide status information to user space applications through a    sysfs interface.     The intention is to allow systems to dynamically control regulator    output in order to save power and prolong battery life. This applies    to both voltage regulators (where voltage output is controllable) and    current sinks (where current output is controllable).     This framework safely compiles out if not selected so that client    drivers can still be used in systems with no software controllable    regulators.     If unsure, say no. 

3、閱讀文件,得知REGULATOR是最核心的模塊macro,那我們可以找一個設備的macro看看 

config REGULATOR_STM32_VREFBUF   tristate "STMicroelectronics STM32 VREFBUF"   depends on ARCH_STM32 || COMPILE_TEST   help    This driver supports STMicroelectronics STM32 VREFBUF (voltage    reference buffer) which can be used as voltage reference for    internal ADCs, DACs and also for external components through    dedicated Vref+ pin.     This driver can also be built as a module. If so, the module    will be called stm32-vrefbuf. 

4、沒有找到s3c,可以看一下stm32芯片的依賴屬性,接著看Makefile

obj-$(CONFIG_REGULATOR) += 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) += userspace-consumer.o  obj-$(CONFIG_REGULATOR_STM32_VREFBUF) += stm32-vrefbuf.o 

5、看的出來stm32只依賴于stm32-verfbuf.c文件,繼續查看

static const struct of_device_id stm32_vrefbuf_of_match[] = {   { .compatible = "st,stm32-vrefbuf", },   {}, }; MODULE_DEVICE_TABLE(of, stm32_vrefbuf_of_match);  static struct platform_driver stm32_vrefbuf_driver = {   .probe = stm32_vrefbuf_probe,   .remove = stm32_vrefbuf_remove,   .driver = {     .name = "stm32-vrefbuf",     .of_match_table = of_match_ptr(stm32_vrefbuf_of_match),   }, }; module_platform_driver(stm32_vrefbuf_driver); 

6、確認驅動為platform驅動,尋找regulator特有的數據結構

static const struct regulator_ops stm32_vrefbuf_volt_ops = {   .enable   = stm32_vrefbuf_enable,   .disable  = stm32_vrefbuf_disable,   .is_enabled = stm32_vrefbuf_is_enabled,   .get_voltage_sel = stm32_vrefbuf_get_voltage_sel,   .set_voltage_sel = stm32_vrefbuf_set_voltage_sel,   .list_voltage  = regulator_list_voltage_table, };  static const struct regulator_desc stm32_vrefbuf_regu = {   .name = "vref",   .supply_name = "vdda",   .volt_table = stm32_vrefbuf_voltages,   .n_voltages = ARRAY_SIZE(stm32_vrefbuf_voltages),   .ops = &stm32_vrefbuf_volt_ops,   .type = REGULATOR_VOLTAGE,   .owner = THIS_MODULE, }; 

7、由代碼得知,regulator_ops和regulator_desc才是特有的regulator數據結構,當然也少不了注冊函數

rdev = regulator_register(&stm32_vrefbuf_regu, &config); if (IS_ERR(rdev)) {   ret = PTR_ERR(rdev);   dev_err(&pdev->dev, "register failed with error %d/n", ret);   goto err_clk_dis; } platform_set_drvdata(pdev, rdev); 

8、進一步確認of_device_id是不是真實存在,可以在arch/arm/boot/dts/stm32h743.dtsi找到對應內容

vrefbuf: regulator@58003C00 {   compatible = "st,stm32-vrefbuf";   reg = <0x58003C00 0x8>;   clocks = <&rcc VREF_CK>;   regulator-min-microvolt = <1500000>;   regulator-max-microvolt = <2500000>;   status = "disabled"; }; 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人毛片免费看 | 精品国产一区二区三区四 | 国产成人在线观看免费网站 | 免费观看三级毛片 | 日韩精品一区二 | 特级毛片全部免费播放器 | 精品一区二区亚洲 | 日本在线免费观看视频 | 欧美国产成人在线 | 国产亚洲精品久久久久5区 综合激情网 | 在线观看精品视频 | 色婷婷a v| 欧美特级黄色 | 国产在线精品一区二区三区 | 国产精品爆操 | 亚洲成人欧美在线 | 亚洲免费永久 | 激情综合视频 | 天天黄色片 | 黄色成人小视频 | 久久久久久久久久久久久国产精品 | 天天鲁在线视频免费观看 | 成人在线视频免费 | 神马久久精品综合 | av电影网在线观看 | 国产呻吟 | 国产va在线观看 | 免费久久久久久 | av不卡毛片 | 久久久久久久久久久久99 | 欧美一级片一区 | 看黄在线 | 国产日韩免费观看 | 欧美性生活视频免费 | 免费a级片在线观看 | 免费永久看羞羞片网站入口 | 羞羞色网站 | 亚洲va在线| 欧美精品毛片 | 国产一级做a爱片在线看免 2019天天干夜夜操 | 国产黄色免费网站 |