
82801AA and 82801AB Datasheet
5-97
Functional Description
5.16
SMBus Controller Functional Description (D31:F3)
The ICH provides an SMBus host controller including an SMBus Master interface. The host
controller provides a mechanism for the processor to initiate communications with SMBus
peripherals (slaves). The ICH also can operate in a mode in which it can communicate with I
2
C
compatible devices.
The ICH SMBus logic exists in Device 31:Function 3 PCI configuration space, and consists of a
transmit data path and host controller. The transmit data path provides the data flow logic needed to
implement the seven different SMBus command protocols and is controlled by the host controller.
The ICH SMBus controller logic is clocked by RTC clock.
The programming model of the host controller is combined into two portions: a PCI configuration
portion, and a system I/O mapped portion. All static configuration (e.g., the I/O base address) is via
the PCI configuration space. Real-time programming of the Host interface is accomplished in
system I/O space.
5.16.1
Host Controller
The SMBus Host Controller is used to send commands to other SMBus slave devices. Software
sets up the host controller with an address, command, and, for writes, data, and then instructs the
controller to start. When the controller has finished transmitting data on writes, or receiving data on
reads, it generates an SMI# or interrupt, if enabled.
The host controller supports 7 command protocols of the SMBus interface (see System
Management Bus Specifications, Rev 1.0): Quick Command, Send Byte, Receive Byte, Write
Byte/Word, Read Byte/Word, Process Call, and Block Read/Write.
The SMBus Host Controller requires that the various data and command fields be setup for the type
of command to be sent. When software sets the START bit, the SMBus Host Controller performs
the requested transaction, and interrupts the processor (or generate an SMI#) when the transaction
is completed. Once a START command has been issued, the values of the “active registers” (Host
Control, Host Command, Transmit Slave Address, Data 0, Data 1) should not be changed or read
until the interrupt status bit (INTR) has been set (indicating the completion of the command). Any
register values needed for computation purposes should be saved prior to issuing of a new
command, as the SMBus Host Controller will update all registers while completing the new
command.
5.16.1.1
Command Protocols
In all of the following commands, the Host Status Register (offset 00h) is used to determine the
progress of the command. While the command is in operation, the HOST_BUSY bit is set. If the
command completes successfully and the INTREN bit is set to 1 in the Host Control Register, the
INTR bit is set in the Host Status Register. If the device does not respond with an acknowledge,
and the transaction times out, the DEV_ERR bit is set to 1. If software sets the KILL bit to 1 in the
Host Control Register while the command is running, the transaction stops and the FAILED bit is
set.