PCI Configuration ÁªÏµ¿Í·þ

·¢²¼Ê±¼ä : ÐÇÆÚÁù ÎÄÕÂ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#ѶºÅµ½µÍ̬µÄÄÜÁ¦.

¼ÙÈçʵ×÷Á˷DZØÒªµÄÊý¾Ý»º´æÆ÷µÄ»°,Ôò´Ë»º´æÆ÷º¬ÓÐÁ½¸ö×Ö¶Î: ? ÔÊÐíÈí¼þÑ¡Ôñ¿ÉÒÔ͸¹ýÊý¾Ý»º´æÆ÷À´¶ÁÈ¡µÄÐÅÏ¢. ? ²¢ÌṩÊý¾Ý»º´æÆ÷ÊýÖµ±ØÐëÏà³ËµÄ±ÈÀýÒò×Ó.

Èí¼þʹÓô˻º´æÆ÷µÄµçԴ״̬(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: