All PCI and IO accesses following are byte-width. There are several IO ports used, which will be defined here: NMI_Status 0x0061 NMI_Enable 0x0070 RtcDataPort 0x0071 Isa_Misc 0x0C6F PM_Index 0x0CD6 PM_Data 0x0CD7 One PM register, accessed via the PM_Index and PM_Data ports above, is used: TESTENABLE 0x53 SMI_Disable (1 << 3) This is the board-enable procedure: 1. Check LPC/ISA Bridge register 40 (00:14.03[40]) bit 7 (IntegratedImcPresent) 1.a. If the IntegratedImcPresent bit is not set, skip to step 12 2. Disable SMIs: 2.a. Write TESTENABLE to PM_Index 2.b. Read PM_Data 2.c. Set the SMI_Disable bit 2.d. Write the new value to PM_Data 3. Clear bit 3 in SMBus/ACPI register 43 (00:14.00[43]) 4. Check SMBus/ACPI register 20 (00:14.00[20]) bit 1 4.a. If it is set, skip to step 11 5. Set bit 1 in SMBus/ACPI register 20 (00:14.00[20]) 6. Do some IO: 6.a. Write 0x7D to NMI_Enable 6.b. Read NMI_Status 6.c. Read NMI_Status 6.d. Read RtcDataPort 6.d.1. If the value returned has bit 3 clear, skip to step 11 7. Check LPC/ISA Bridge register 40 (00:14.03[40]) bit 7 (IntegratedImcPresent) 7.a. If the IntegratedImcPresent bit is not set, skip to step 11 8. Do some IO: 8.a. Write 0x82 to 0x003E 8.b. Write 0x00 to 0x003F 8.c. Write 0x83 to 0x003E 8.d. Write 0xB4 to 0x003F 8.e. Write 0x84 to 0x003E 8.f. Write 0x00 to 0x003F 8.g. Write 0x80 to 0x003E 8.h. Write 0x96 to 0x003F 9. Loop: Set the loop variable to 4000 (0xFA0) 9.a. Busy-poll bit 4 (RefClk) of NmiStatus until it is set 9.b. Decrement the loop variable and exit the loop if it is 0 9.c. Busy-poll bit 4 (RefClk) of NmiStatus until it is clear 9.d. Decrement the loop variable and exit the loop if it is 0 10. Loop: 10.a. Loop: Set the loop variable to 66 (0x42) 10.a.1. Busy-poll bit 4 (RefClk) of NmiStatus until it is set 10.a.2. Decrement the loop variable and exit the loop if it is 0 10.a.3. Busy-poll bit 4 (RefClk) of NmiStatus until it is clear 10.a.4. Decrement the loop variable and exit the loop if it is 0 10.b. Write 0x82 to 0x003E 10.c. Read 0x003F and exit the loop if it is 0xFA 11. Set bit 3 in SMBus/ACPI register 43 (00:14.00[43]) 12. Set bit 0 in SMBus/ACPI register 79 (00:14.00[79]) 13. Set bit 6 in Isa_Misc