82371AB (PIIX4)
E
166
4/9/97 2:23 PM PIIX4aDS
INTEL CONFIDENTIAL
(until publication date)
PRELIMINARY
PCI DMA Expansion Protocol
The PCI expansion agent must support the PCI expansion Channel Passing Protocol defined in Figure 4 for both
the REQ# and GNT# pins.
PCICLK
Start
CH0
CH1
CH2
CH3
CH4
CH5
CH6
CH7
Bit0
Bit1
Bit2
Start
REQ#
GNT#
dma_s_ch
Figure 4. DMA Serial Channel Passing Protocol
The requesting device must encode the channel request information as shown above, where CH0–CH7 are one
clock active high states representing DMA channel requests 0–7.
PIIX4 encodes the granted channel on the GNT# line as shown above, where the bits have the same meaning
as shown in the Figure 4.
For example, the sequence
[start, bit 0, bit 1, bit 2]=[0,1,0,0] grants DMA channel
1 to
the requesting device,
and the sequence [start, bit 0, bit 1, bit 2]=[0,0,1,1] grants DMA channel 6 to the
requesting device.
All PCI DMA expansion agents must use the channel passing protocol described above. They must also work as
follows:
1.
If a PCI DMA expansion agent has more than one request active, it must resend the request serial protocol
after one of the requests has been granted the bus and it has completed its transfer. The expansion device
should drive its REQ# inactive for two clocks and then transmit the serial channel passing protocol again,
even if there are no new requests from the PCI expansion agent to PIIX4. For example: If a PCI expansion
agent had active requests for DMA channel 1 and channel 5, it would pass this information to PIIX4 through
the expansion channel passing protocol. If after receiving GNT# (assume for CH5) and having the device
finish its transfer (device stops driving request to PCI expansion agent) it would then need to re-transmit the
expansion channel passing protocol to inform PIIX4 that DMA channel 1 was still requesting the bus, even if
that was the only request the expansion device had pending.
If
a PCI DMA expansion agent has a request go inactive before PIIX4 asserts GNT#, it must resend the
expansion channel passing protocol to update PIIX4 with this new request information. For example: If a PCI
expansion agent has DMA channel 1 and 2 requests pending it will send them serially to PIIX4 using the
expansion channel passing protocol. If, however, DMA channel 1 goes inactive into the expansion agent
before the expansion agent receives a GNT# from PIIX4, the expansion agent MUST pull its REQ# line high
for one clock and resend the expansion channel passing information with only DMA channel 2 active. Note
that PIIX4 does not do anything special to catch this case because a DREQ going inactive before a DACK#
is received is not allowed in the ISA DMA protocol and, therefore, does not need to work properly in this
protocol either.
This requirement is needed to be able to support Plug-n-Play ISA devices that toggle DREQ#
lines to determine if those lines are free in the system.
If a PCI expansion agent has sent its serial request information and receives a new DMA request before
receiving GNT# the agent must resend the serial request with the new request active. For example: If a PCI
expansion agent has already passed requests for DMA channel 1 and 2 and sees DREQ 3 active before a
GNT is received, the device must pull its REQ# line high for one clock and resend the expansion channel
passing information with all three channels active.
2.
3.