Functional Description
MCF548x Reference Manual, Rev. 3
Freescale Semiconductor 26-45
NOTE
In AC97, the number of data bytes are four times the number of time slot
samples in the FIFO. Because, each 20-bit sample uses an entire 32-bit
longword in the FIFO.
For the Rx FIFO, the value can be between 0 and 7 bytes only. Therefore, the interrupt has hysteresis. For
example, the interrupt goes active when the Rx FIFO is “almost full” (i.e., the amount of empty space is
less than the alarm level). It stays active until enough data is read out of the Rx FIFO so that the amount
of data left in the FIFO is less than the granularity level.
For the example (see Figure 26-41) this means:
The requestor to the Multichannel DMA to emptying the RX FIFO becomes active if the empty
space in the FIFO is less than 8 bytes (504 data bytes are in the FIFO).
The requester became inactive if 4 bytes are left in the FIFO. (508 byte space now)
When the Multichannel DMA is servicing the FIFOs, this process works well. However, if the CPU is
servicing the FIFOs, the interrupt has no hysteresis.
For example, the alarm level is used for both activating and deactivating the CPU interrupt.
When using the Multichannel DMA you must specify a non-zero granularity to get FIFO underrun errors.
This is due to its internal pipelining.
Multichannel DMA does not immediately stop accessing the FIFO when the FIFO interrupt goes away.

26.4.9.2 TX FIFO

The TX FIFO space is 512 bytes. For a Tx FIFO, the alarm value specifies a threshold in terms of DATA
bytes, not in terms of empty space as with the Rx FIFO. Once the amount of data in the Tx FIFO falls
below the alarm level, an interrupt activates. The interrupt indicates the Tx FIFO is” almost empty” and
needs more data. Tx FIFO granularity is specified in terms of empty bytes, not the number of data bytes
as with the Rx FIFO. For more informations see also Figure 26-41. The granularity value range is 0–7.
The Tx FIFO controller hardware multiplies this value by 4, to establish the actual level at which the FIFO
alarm goes away. For the Tx FIFO, the alarm goes away when the number of empty bytes left in the Tx
FIFO is less than or equal to:
0 (Granularity value 0)
4 (Granularity value 1)
8 (Granularity value 2)
12 (Granularity value 3)
16 (Granularity value 4)
20 (Granularity value 5)
24 (Granularity value 6)
28 (Granularity value 7)
The FIFO interrupt stays active until Multichannel DMA writes enough data into the Tx FIFO to reach the
granularity level. Once the granularity level is reached, the interrupt goes away.
For the example (see Figure 26-41) it means:
The requestor to the Multichannel DMA to filling the TX FIFO becomes active if the amount of
data in the FIFO is less then 16 data.
The requester became inactive if less than 20 (5 ×4) bytes space in the FIFO.