PMC Register:
位 15:11
说明
PME支持(PME_Support)字段,表示功能可以在该状态下,驱动 PME#到低态(电源管理事件PM Event)的PM状态,位为0表示 在这个PM状态下不支持PME#产生. 位 对应的PM状态 11 12
13 14 15
D0 D1 D2 D3 hot
D3 cold(功能需要辅助电源来供应PME逻辑电力)
10 9 8:6 5 4 3
D2支持位 D2支持位 辅助电流(Aux_Current)字段.
装置特定的初始化(Device-Specific Initialization,简称DSI)位. 保留
PME频率(PME Clock)位,此位为1表示功能需要有PCI频率存
在,才能产生PME#,不需要频率或不产生PME#的功能会以硬件接线
将本位元设定为0.
2:0
版本字段(Version). 位 遵循的规格版本 210 001 10
1.0 1.1
PM控制/状态(PMCSR)缓存器
? 假如功能实作PME能力的话,则此缓存器含有一个用来反应先前致能之PME是否发生的PME
状态(PME Status)位.
? 假如功能实作PME能力的话, 则此缓存器含有一个PME致能(PME Enable)位,它允许软件去?
致能或关闭功能驱动PME#讯号到低态的能力.
假如实作了非必要的数据缓存器的话,则此缓存器含有两个字段: ? 允许软件选择可以透过数据缓存器来读取的信息. ? 并提供数据缓存器数值必须相乘的比例因子.
软件使用此缓存器的电源状态(Power State)字段,来决定功能目前的PM状态,以及把功能转移到新PM状态. 读/写(R/W) 说明 读/写,想要将 PME状态(PME Status)位,假如功能支持PME
1清除为0的话, 的话,此位会反应功能是否遇到PME(即使在 把1写入其中 此缓存器里的PME_En位将功能在发生PME
事件时,驱动PME#到低态的能力关闭),假如设定为1,则功能遇到
PME,而软件可以用写入1到其中的方式将它清除. 数据比例(Data Scale)字段. 数据选择(Data Select)字段. PME致能(PME_En)位.
1=致能功能在发生PME事件时,驱动PME#到低
态的能力. 0=关闭. 保留. 电源状态(Power State)字段,软件用此字段来居
决定功能目前的PM状态(以读取此字段的方式)
或是将它放入到一个新的PM状态(以写入此字段的方式),假如软件选择功能不支持的PM状态,则写入必须正常地完成,但是写入的数据会被丢弃,且状态不变. 10 PM状态
00b 01b
D0 D1
? 位 15
14:13 12:9 8
只读 读/写 读/写
7:2 1:0
只读
读/写
10b 11b
?
D2 D3hot
相关信息与实例
当客户要求支持S5 PME Wake up功能但PCI装置不支持时,BIOS可利用下列程序来做到:
STR_SAVE_PCI_DEVICE LABEL BYTE
dw MKF_PCI_SLOT1_DEV_FUNC ;(25-11)shl 3 dw MKF_PCI_SLOT2_DEV_FUNC ;(26-11)shl 3 dw MKF_PCI_SLOT3_DEV_FUNC ;(27-11)shl 3 dw MKF_PCI_SLOT4_DEV_FUNC ;(28-11)shl 3 dw MKF_PCI_SLOT5_DEV_FUNC ;(29-11)shl 3
NO_OF_STR_PCI_TABLE equ ($ - offset cgroup:STR_SAVE_PCI_DEVICE)/2
mov si,offset cgroup:STR_SAVE_PCI_DEVICE mov cx,NO_OF_STR_PCI_TABLE loop_for_pme_d3: push cx
mov dx, word ptr cs:[si]
mov ah,00h ; 00h call read_pci cmp al,0ffh
jz next_for_pme_d3 mov ah,PCI_REG_STATUS call read_pci
test al, CAPABILITIES_BIT jz next_for_pme_d3
mov ah,PCI_CAP_PTR read_cap_id:
call read_pci cmp al, 00
jz next_for_pme_d3 mov ah,al
; 06h ; 10h
; 34h
call read_pci
cmp al, PME_CAP_ID ; 01h jz found_for_pme_id inc ah
jmp read_cap_id found_for_pme_id:
add ah,PMECS_REG+1 ; 05h call read_pci
and al,0feh ; Clear & Disable PME call write_pci dec ah
call read_pci and bl,0fch call write_pci inc ah
call read_pci or al,01h call write_pci next_for_pme_d3:
; set power on state
; Enable PME
inc si inc si pop cx
loop loop_for_pme_d3 mov cx,3333 call pm_fixed_delay popa
for_pme_disable: