Pre-Production
WM8850
The concepts of Priority Queuing and In-Queue-Update are illustrated with the example in Figure 22.
Figure 22 Priority Queuing and In-Queue Updates
a) STREAM_ERR flag asserts from DAC1 Node (NID = 06h), and an Unsolicited Response
(Tag ID = 06h) is queued awaiting a null response slot. STREAM_ERR rescinds at the end
of the HDA frame.
b) GPIO1 input changes to a 1 so the GPIO1 flag (from AFG NID = 01h) asserts and queues
an Unsolicited Response (Tag ID = 01h). This Unsolicited Response goes to the front of
the queue as its Priority value is lower (indicating higher priority) than the Priority setting of
the Unsolicited Response presently at the front of the queue.
c) GPIO2 input changes to a 1 so the GPIO2 flag asserts. The GPIO2_UPD flag is from the
AFG (NID = 01h), and as there is already an Unsolicited Response from this node in the
queue, the queued Unsolicited Response is updated to show both events (as highlighted
with the yellow box). This is known as an ‘In-Queue-Update’.
d) A slot becomes available for sending an Unsolicited Response, so the AFG Unsolicited
Response is transmitted as it is at the front of the queue.
e) STREAM_ERR asserts from DAC1 Node (NID = 06h). As there is already an Unsolicited
Response in the queue from this node, the Unsolicited Response is simply updated (as
shown in the purple box). However, the queued Unsolicited Response already shows that
there has been a STREAM_ERR flag so the In-Queue-Update does not actually change the
Unsolicited Response value.
f)
A slot becomes available for sending an Unsolicited Response, so the Unsolicited
Response (Tag ID = 06h) is transmitted.
PP, April 2011, Rev 3.2
77
w