设备驱动程序和 PCI 电源管理
通常,设备驱动程序的责任如下:
总线驱动程序:
总线驱动程序负责枚举、配置和控制设备。 对于 PCI-PM,PCI 驱动程序负责读取 PCI-PM 寄存器以确定硬件的功能。 当 POWER IRP 请求电源状态更改时,PCI 驱动程序会写入 PCI 电源管理寄存器,以将硬件设置为不同的 Dx 状态。
当设备启用唤醒时,PCI 驱动程序会写入 PCI-PM 寄存器,使设备能够触发 PME (ACPI 也将执行操作,请参阅下一部分) 。 最后,当 ACPI 确定 PCI 总线正在唤醒系统时,PCI 驱动程序会扫描 PCI 配置空间,查找哪个设备正在断言 PME,在该设备中禁用 PME,并通知驱动程序该设备。
设备驱动程序:
设备的特定驱动程序负责保存和还原设备上下文,以及以设备策略所有者的身份请求电源状态更改。 当设备驱动程序收到要求更改较低设备电源状态的 POWER IRP 时,设备驱动程序负责保存以后打开设备所需的任何专有设备上下文。 在某些情况下,可能没有任何可保存内容。
PCI-PM 寄存器严格是 PCI 驱动程序的域 – IHV 的设备驱动程序不需要访问这些寄存器中的任何一个。 这样做会导致系统无法可靠地工作。 设备驱动程序的责任是仅执行专有操作。
集成 ACPI 和 PCI PM
某些设备(尤其是便携式中的主板视频设备)可能需要 PCI 电源管理和 ACPI 源语言汇编程序 (ASL) 才能完全为设备供电。 PCI 电源管理寄存器将控制设备的内部状态,例如内部时钟和电源平面。 ASL 将控制外部状态(如外部时钟和电源平面),或者对于视频控制器,ASL 将控制视频背光。 请注意,ASL 和 PCI-PM 只能在主板设备上组合使用。
OnNow 体系结构是一种分层体系结构,可以自然地处理设备驱动程序、PCI 驱动程序和 ACPI 驱动程序 (和 ASL) 集成。 以下方案显示了调用驱动程序以处理这些设备的顺序。