![](http://datasheet.mmic.net.cn/330000/INTEL82801_datasheet_16416407/INTEL82801_155.png)
82801AA and 82801AB Datasheet
5-105
Functional Description
5.16.2
Bus Arbitration
Several masters may attempt to get on the bus at the same time by driving the SMBDATA line low
to signal a start condition. The ICH must continuously monitor the SMBDATA line. When the ICH
is attempting to drive the bus to a ‘1’ by letting go of the SMBDATA line, and it samples
SMBDATA low, then some other master is driving the bus and the ICH must stop transferring data.
If the ICH losses arbitration, the condition is called a collision. The ICH sets the BUS_ERR bit to 1
in the Host Status Register, and if enabled, generates an interrupt or SMI#. The processor is
responsible for restarting the transaction.
When the ICH is a SMBus master, it drives the clock. When the ICH is sending address or
command as an SMBus master, or data bytes as a master on writes, it drives data relative to the
clock it is also driving. It does not start toggling the clock until the start or stop condition meets
proper setup and hold time. The ICH also guarantees minimum time between SMBus transactions
as a master.
Clock Stretching
Some devices may not be able to handle clock toggling at the rate that the ICH, as an SMBus
master, would like. The devices have the capability of stretching the low time of the clock. When
the ICH attempts to release the clock (allowing the clock to go high), the clock remains low for an
extended period of time.
The ICH monitors the SMBus clock line after it releases the bus to determine whether to enable the
counter for the high time of the clock. While the bus is still low, the high time counter must not be
enabled. Similarly, the low period of the clock can be stretched by an SMBus master, if it is not
ready to send or receive data.
The ICH never stretches the low period of the clock. It will always have the data to transfer on
writes and it should always have a spot for the data on reads.
Bus Time Out (ICH as SMBus Master)
If there is an error in the transaction, such that an SMBus device does not signal an acknowledge,
or holds the clock lower than the allowed time-out time, the transaction times out. The ICH
discards the cycle, and sets the DEV_ERR bit t0 1. The time-out minimum is 25 ms. The time-out
counter inside the ICH starts after the first bit of data is transferred by the ICH and it is waiting for
a response. The 25 ms is a count of 800 RTC clocks. The time-out counter does not count when the
BYTE_DONE_STS bit (SMBus I/O offset 00h, bit 7) is set to 1 and the SECOND_TO_STS bit
(TCO I/O offset 06h, bit 1) is not set to 1.
5.16.3
Interrupts / SMI#
The ICH SMBus controller uses PIRQB# as its interrupt pin. However, the system can alternatively
be set up to generate SMI# instead of an interrupt, by setting the SMBUS_SMI_EN bit.
5.16.4
SMBALERT#
SMBALERT# is multiplexed with GPIO[11]. When enabled and the signal is asserted, the ICH can
generate an interrupt, an SMI#, or a wake event from S1-S4.