qcom中的policy_engine.c的作用
时间: 2024-04-22 16:22:13 浏览: 159
policy_engine.c 是 Qualcomm 移动平台上的一个驱动文件,主要作用是管理设备的电源管理策略。具体来说,它负责实时监测系统的电源状态和性能需求,然后调整 CPU 频率、功率、温度等参数,使系统在保证性能的同时,最大程度地延长电池寿命和减少能耗。policy_engine.c 还与其他系统组件进行交互,例如调度器、功率管理单元等,共同实现系统的智能功率管理。这个文件对于移动设备的电池寿命和性能优化非常重要。
相关问题
qcom中qpnp_pdphy.c
qpnp_pdphy.c是QCOM公司的一个电源管理驱动文件,用于控制Qualcomm电源传递协议(QPnP)的PD PHY(物理层)芯片。该驱动文件提供了PD PHY芯片的初始化、状态查询、电源管理等功能。
该驱动文件的主要函数包括:
- qpnp_pdphy_probe:用于初始化PD PHY芯片,并将其注册到系统中。
- qpnp_pdphy_remove:用于取消注册PD PHY芯片,并释放相关资源。
- qpnp_pdphy_enable:用于使能PD PHY芯片,开启PD PHY芯片的状态查询和电源管理功能。
- qpnp_pdphy_disable:用于禁用PD PHY芯片,关闭PD PHY芯片的状态查询和电源管理功能。
- qpnp_pdphy_get_current_limit:用于查询当前PD PHY芯片的输出电流上限。
- qpnp_pdphy_set_current_limit:用于设置PD PHY芯片的输出电流上限。
- qpnp_pdphy_get_voltage_limit:用于查询当前PD PHY芯片的输出电压上限。
- qpnp_pdphy_set_voltage_limit:用于设置PD PHY芯片的输出电压上限。
- qpnp_pdphy_get_status:用于查询PD PHY芯片的状态,包括是否连接到PD控制器、是否支持PD协议、是否支持QC协议等。
在QPnP PD PHY芯片与PD控制器之间进行通信时,该驱动文件会使用I2C总线协议。因此,该驱动文件还包括了与I2C总线相关的函数,如qpnp_pdphy_i2c_read和qpnp_pdphy_i2c_write等。
bootargs = "qcom_dma_heaps.enable_bitstream_contig_heap=y kpti=0 ssbd=force-off lpm_levels.sleep_disabled=1 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237 service_locator.enable=1 swiotlb=4096 firmware_class.path=/vendor/firmware_mnt/image loop.max_part=7 kvm-arm.mode=nvhe hibernate=nocompress noswap_randomize pcie_ports=compat console=ttyMSM0,115200n8 earlycon=qcom_geni,0xa90000 qcom_geni_serial.con_enabled=1 slub_debug=FZPU bootconfig buildvariant=userdebug rootwait ro init=/init resume=/dev/sda13";
这是一个比较完整的 `bootargs` 参数,包含了许多不同的配置项,具体解释如下:
1. `qcom_dma_heaps.enable_bitstream_contig_heap=y`:启用 bitstream 连续堆,即将 bitstream 分配到物理连续的内存区域,以提高 DMA 性能。
2. `kpti=0`:禁用内核页表隔离(KPTI),这是一种针对 Meltdown 和 Spectre 安全漏洞的内核保护机制。
3. `ssbd=force-off`:关闭 Speculative Store Bypass Disable(SSBD)保护机制。
4. `lpm_levels.sleep_disabled=1`:禁用低功耗模式,即防止系统进入睡眠状态。
5. `video=vfb:640x400,bpp=32,memsize=3072000`:配置虚拟帧缓冲(Virtual Frame Buffer),分辨率为 640x400,像素深度为 32 位,内存大小为 3072000 字节。
6. `msm_rtb.filter=0x237`:配置 MSM Ready To Boot(RTB)过滤器,0x237 是一个十六进制值,表示仅允许特定类型的 RTB 消息通过。
7. `service_locator.enable=1`:启用服务定位器,这是一个用于在系统中查找和注册服务的机制。
8. `swiotlb=4096`:配置 I/O 内存缓冲区的大小为 4096 字节。
9. `firmware_class.path=/vendor/firmware_mnt/image`:设置固件加载路径为 `/vendor/firmware_mnt/image`。
10. `loop.max_part=7`:设置 loop 设备支持的最大分区数为 7。
11. `kvm-arm.mode=nvhe`:配置 KVM(Kernel Virtual Machine)模式为 Non-Virtual Host Extension(NVHE)模式。
12. `hibernate=nocompress`:在系统挂起到磁盘时,禁用压缩方式。
13. `noswap_randomize`:禁用交换空间地址的随机化。
14. `pcie_ports=compat`:配置 PCIe 端口的兼容性。
15. `console=ttyMSM0,115200n8`:设置控制台输出为 ttyMSM0 设备,波特率为 115200,数据位为 8 位,无校验位。
16. `earlycon=qcom_geni,0xa90000`:设置 earlycon(Early Console)输出为 qcom_geni 设备,地址为 0xa90000。
17. `qcom_geni_serial.con_enabled=1`:启用 qcom_geni 设备的控制台输出功能。
18. `slub_debug=FZPU`:启用 SLUB 内存分配器的调试功能,使用 FZPU 参数来指定调试级别。
19. `bootconfig`:启用 Bootconfig 功能,该功能可以在启动时加载一个配置文件,用于配置内核参数和启动脚本。
20. `buildvariant=userdebug`:设置编译类型为 userdebug,这是 Android 系统中的一种编译类型。
21. `rootwait`:等待根文件系统挂载完成后再启动系统。
22. `ro`:以只读模式挂载根文件系统。
23. `init=/init`:指定 init 程序的路径为 /init。
24. `resume=/dev/sda13`:配置系统从 /dev/sda13 设备中恢复挂起状态。
阅读全文