Specifications

©
2008 Advanced Micro Devices Inc.
SMBus Programming
AMD SB600 BIOS Developer’s Guide (Public Version) Proprietary
Page 25
The power-up default value in register 0Eh is A0h, therefore the default frequency is
(66MHz)/(160 * 4), or approximately 103 KHz.
The minimum SMBus frequency can be set with the value FFh in the register at index 0Eh, which
yields:
(66MHz)/(255*4) = 64.7 KHz.
5.3 SMBus Host Controller Programming
Step Descriptions Register in
SMBus I/O
Space
Comments
1 Wait until SMBus is idle. Reg00h[Bit0] 0 – Idle
1 – Busy
2 Clear SMBus status. Reg00h[Bit4:1] Write all 1’s to clear
3 Set SMBus command. Reg03h The command will go to SMBus device.
4 Set SMBus device address with
read/write protocol
Reg04h Bit7:1 – address
Bit0 – 1 for read, 0 for write
5 Select SMBus protocol Reg02h[Bit4:2]
6 Do a read from Reg02 to reset the
counter if it’s going to be a block
read/write operation
Reg02h
7 Set low byte when write command Reg05h Byte command – It is the written data
Word command – It is the low byte data
Block command – It is block count
Others – Don’t care
8 Set high byte when write command Reg06h Word command – It is the high byte data
Others – Don’t care
9 Write the data when block write Reg07h Block write – write data one by one to it
Others – Don’t care
10 Start SMBus command execution Reg02h[Bit6] Write 1 to start the command
11 Wait for host not busy Reg00h[Bit0]
12 Check status to see if there is any
error
Reg00h[Bit4:2] With 1 in the bit, there is error
13 Read data Reg05h Byte command – It is the read data
Word command – It is the low byte data
Block command – It is block count
Others – Don’t care
14 Read data Reg06h Word command – It is the high byte data
Others – Don’t care
15 Read the data when block write Reg07h Block read – read data one by one.
Others – Don’t care
The following flow chart illustrates the steps in programming the SMBus host controller.