Hello all,

The specific board this is for is the Supermicro H8DGT.  Attached is
only the specification, which is not guaranteed to be correct.  Use with
care.

Also, after using this, you may want to turn off and unplug the computer
for a few minutes to restore the correct operational state.

The AMD SB700/710/750 Register Reference Guide (#43009) was used as a
reference.

Thanks,

Josh
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
_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to