PCI Configuration 下载本文

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: