【V2X】高通pcie wifi休眠唤醒流程

发布时间:2026/7/22 2:44:31

【V2X】高通pcie wifi休眠唤醒流程 基于sa525m-cnss.dtsi与cnss2/qcacld代码结论场景是否完全下电是否重枚举 PCIe是否重载 wlan 驱动系统休眠/唤醒WiFi 已开mission mode否WoW 链路休眠否只 resume link restore config否只走 suspend/resumeIdle shutdown / WiFi 关闭 / 卸载是vreg wlan_en 拉低否设备仍挂在 bus 上不 rmmod下次 powerup 再拉 FW冷启动 / cnss 首次 probe上电后枚举是msm_pcie_enumerate一次首次加载平台硬件上下文DTsa525m-cnss.dts→sa525m-cnss.dtsi芯片supported-ids 0x1103→QCA6490PCIe电源vdd-wlan-ctrl1/io/rfa*wlan-en-gpiowlan_en_active/sleeppinctrlPCIeqcom,wlan-rc-num、qcom,boot-option 0x1由 CNSS 驱动枚举而非内核自动扫 EPpcie-disable-l1ss限制 L1SS休眠主要靠MHI suspend PCIe link suspend/DRV系统休眠/唤醒主路径重点WiFi Chipmsm_pcieMHIqcacld (HDD/PMO/HIF)cnss2 pci.cKernel PMWiFi Chipmsm_pcieMHIqcacld (HDD/PMO/HIF)cnss2 pci.cKernel PM低功耗驻留, 非完全下电cnss_pci_suspend()driver_ops-suspend (WoW)WOW enable / bus suspendCNSS_MHI_SUSPENDsave config, D3hotMSM_PCIE_DRV_SUSPEND 或 SUSPENDcnss_pci_resume()MSM_PCIE_RESUMErestore config, enable, D0CNSS_MHI_RESUMEdriver_ops-resumeSuspendcnss_pci_suspendHostcnss_pci_suspend_driver→ PLD →wlan_hdd_bus_suspendDP suspend → PMO WoW → HIF bus suspendBuscnss_pci_suspend_busMHI suspendpci_save_state/pci_disable_device/PCI_D3hotcnss_set_pci_link(DOWN)→msm_pcie_pm_controlFW 支持 DRVMSM_PCIE_DRV_SUSPEND否则MSM_PCIE_SUSPEND更深链路休眠此处不调用cnss_power_off_device()因此不关vdd-wlan-*不拉低wlan-en不切wlan_en_sleepWiFi 以WoW 低功耗驻留可唤醒 HostResumecnss_pci_resumecnss_pci_resume_busMSM_PCIE_RESUME→ restore config → enable → MHI resumecnss_pci_resume_driver退出 WoW、恢复业务不会再走msm_pcie_enumerate也不会insmod/重新 probe wlan。什么时候才是“完全下电”cnss_power_off_device()void cnss_power_off_device(struct cnss_plat_data *plat_priv) { // ... cnss_select_pinctrl_state(plat_priv, false); // wlan_en sleep cnss_clk_off(...); cnss_vreg_off_type(...); // 关电源 plat_priv-powered_on false; }典型触发Idle shutdown/ 驱动 unload / cold boot cal 结束 →cnss_qca6290_shutdownMHI power off →cnss_suspend_pci_link→cnss_power_off_device首次 PCIe probe 之后的cnss_pci_suspend_pwroff若未开CONFIG_CNSS2_CONDITIONAL_POWEROFF或芯片不在豁免列表再次上电走cnss_qca6290_powerupcnss_power_on_devicevreg wlan_encnss_resume_pci_link恢复已有 EP不是重新 enumerateMHI start FW 下载 QMI此时 PCIpci_dev仍在不重新加载 cnss/wlan.ko只是重新 powerup/handshake。和“重枚举 PCIe”的边界动作含义msm_pcie_enumerate()上电 RC、扫 EP、触发cnss_pci_probe——开机/首次msm_pcie_pm_control(RESUME/SUSPEND/DRV)对已存在的 EP 做链路休眠/恢复 ——日常 suspend/resumecnss_resume_pci_linkrestore config enable ——idle restart / powerup只有link down recovery / SSR 等异常路径才可能再次 enumerate正常休眠唤醒不会。对照系统休眠 (AP suspend) └─ cnss_pci_suspend ├─ qcacld: WoW HIF suspend ← 驱动不卸载 └─ MHI suspend PCIe link down ← 芯片未关电 Idle shutdown / WiFi off └─ cnss_qca6290_shutdown ├─ MHI power off ├─ PCIe link suspend └─ cnss_power_off_device ← 真正下电 (wlan_en vreg)总结在 SA525M QCA6490 这条链路上正常系统休眠不是完全下电而是 WoW PCIe/MHI 链路休眠唤醒只恢复链路和驱动状态不会重新枚举 PCIe也不会重新加载 wlan 驱动。完全下电只发生在 idle shutdown / 卸载 / probe 后的 power-off 路径之后再开 WiFi 是 power-on link resume 重新加载 FW仍不是 PCIe 重枚举。

相关新闻