![](http://datasheet.mmic.net.cn/110000/GT-96100A_datasheet_3491740/GT-96100A_207.png)
GT-96100A Advanced Communication Controller
Revision 1.0
207
8.7.4
Inbound/Outbound Queue Port Register Function
The circular queues are accessed by external PCI agents through the Inbound and Outbound Queue Port virtual
registers in the I2O/PCI address space, decoded by BAR0.
NOTE: The Inbound and Outbound Queue Port virtual registers are not read/write physical registers within the
GT-96100A. These virtual registers are reading and writing pointers into the circular queues (located in
SDRAM) that are controlled by the GT-96100A. Refer to
Figure 31.8.7.4.1
Inbound Queue Port Reads and Writes
When Inbound Queue Port (IQP) is written from PCI, the written data is placed on the Inbound Post Queue. The
IQP is posting the message to the local CPU. An interrupt is generated to the MIPS CPU when the Inbound Post
Queue is written to alert the CPU that a message needs processing. When this register is read from the PCI side,
it is returning a free message from the tail of Inbound Free Queue.
8.7.4.2
The Outbound Queue Port
The Outbound Queue Port (OQP) returns data from the tail of the Outbound Post Queue when read from the PCI
side. The OQP is returning the next message requiring service by the external PCI agent. When this register is
written from PCI, the data for the write is placed on the Outbound Free Queue. This, in turn, returns a free mes-
sage for reuse by the local MIPS CPU.
8.7.5
Inbound Post Queue
The Inbound Post Queue holds posted messages from external PCI agents to the MIPS CPU. The MIPS CPU
fetches the next message process from the queue tail. External agents post new messages to the queue head. The
tail pointer is maintained in software by the MIPS CPU. The head pointer is maintained automatically by the GT-
96100A upon posting of a new inbound message.
PCI writes to the IQP are passed to local memory location at QBAR + Inbound Post Head Pointer. After this
write completes, the GT-96100A increments the Inbound Post Head Pointer by 4 bytes (1 word); it now points to
the next available slot for a new inbound message. An interrupt is also sent to the MIPS CPU to indicate the pres-
ence of a new message pointer.
From the time the PCI write ends till the data is actually written to DRAM, any new write to Inbound port will
result in RETRY. If queue is full, a new PCI write to the queue will result in RETRY.
Inbound messages are fetched by the MIPS CPU by reading the contents of the address pointed to by the Inbound
Post Tail Pointer. It is the CPUs responsibility to increment the tail pointer to point to the next unread message.
8.7.6
Inbound Free Queue
The Inbound Free Queue holds available inbound free messages for external PCI agents to use. The MIPS CPU
places free messages at the queue head; external agents fetch free messages from the queue tail. The head pointer
is maintained in software by the MIPS CPU. The tail pointer is maintained automatically by the GT-96100A
upon a PCI agent fetching a new inbound free message (except when there is an error, see below.)