![](http://datasheet.mmic.net.cn/110000/GT-96100A_datasheet_3491740/GT-96100A_208.png)
GT-96100A Advanced Communication Controller
208
Revision 1.0
PCI reads from the Inbound Queue Port return data to the local memory location at QBAR + Inbound Free Tail
Pointer according to the following conditions:
If the Inbound Free Queue is not empty (as indicated by Head Pointer not equal to Tail Pointer), then the
data pointed to by QBAR + Inbound Free Tail Pointer is returned.
If the queue is empty (Head Pointer equals Tail Pointer), the value 0xFFFF.FFFF is returned. This indi-
cates there are no Inbound Message slots available (an error condition.)
The MIPS processor places free message buffers in the Inbound Free Queue by writing the pointer to the location
pointed to by the head pointer. It is the processor’s responsibility to then increment the head pointer.
8.7.7
Outbound Post Queue
The Outbound Post Queue holds outbound posted messages from the MIPS CPU to external PCI agents. The
MIPS CPU places outbound messages at the queue head; external agents fetch the posted messages from the
queue tail. The Outbound Post Tail Pointer is automatically incremented by the GT-96100A. The head pointer
must be incremented by the local MIPS CPU.
PCI reads from the Outbound Queue Port return the data pointed to by QBAR + Outbound Post Tail Pointer (the
next posted message in the Outbound Queue.) The following conditions apply:
If the Outbound Post Queue is not empty (the head and tail pointers are not equal), the data is returned
as usual and the GT-96100A increments the Outbound Post Tail Pointer
If the Outbound Post Queue is empty (the head and tail pointers are equal), the value 0xFFFF.FFFF is
returned
As long as the Outbound Post Head and Tail pointers are not equal, a PCI interrupt is requested. This is done to
indicate the need to have the external PCI agent read the Outbound Post Queue. When the head and tail pointers
are equal, no PCI interrupt is generated since no service is required on the part of the external PCI agent (or PCI
system host in the case of a PC server.) In either case, the interrupt can be masked in the OIMR register.
The MIPS CPU places outbound messages in the Outbound Post Queue by writing to the local memory location
pointed to by the Outbound Post Head Pointer. After writing this pointer, it is the CPU’s responsibility to incre-
ment the head pointer.
8.7.8
Outbound Free Queue
The Outbound Free Queue holds available outbound message buffers for the local MIPS processor to use. Exter-
nal PCI agents place free message at the queue head; the MIPS CPU fetches free message pointers from the
queue tail. The tail pointer in maintained in software by the MIPS CPU. The head pointer is maintained automat-
ically by the GT-96100A upon a PCI agent posting a new (“returned”) outbound free message.
PCI writes to the Outbound Queue Port result in the data being written to the local memory location at QBAR +
Outbound Free Head Pointer. After the write completes, the GT-96100A increments the head pointer.
From the time the PCI write ends till the data is actually written to DRAM, any new write to Outbound port will
result in RETRY. If the head pointer and tail pointer become equal (an indication that the queue is full), an inter-
rupt is sent to the MIPS CPU. If queue is full, a new PCI write to the queue will result in RETRY.