10.07.2015 Views

Intel 80310 I/O Processor Chipset AAU Coding Techniques

Intel 80310 I/O Processor Chipset AAU Coding Techniques

Intel 80310 I/O Processor Chipset AAU Coding Techniques

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Intel</strong> ® <strong>80310</strong> I/O <strong>Processor</strong> <strong>Chipset</strong> <strong>AAU</strong> <strong>Coding</strong> <strong>Techniques</strong>Low-Level Design DocumentWhen an <strong>AAU</strong> interrupt is asserted, the interrupt handler function aau_irq_handler() iscalled. Clearing an interrupt requires clearing it at the source. In this case the source is theAccelerator Status Register. When the Accelerator Status Resister has been cleared in the interrupthandler, the interrupt assert bit shall be cleared by the hardware as a consequence. As long as the<strong>AAU</strong> interrupt is asserted due to new <strong>AAU</strong> interrupts, the interrupt handler continues to remove thedescriptors from the channel process queue and put the descriptors in the channel holding queueuntil the ADAR value equals to the address of the descriptor or the queue is empty. When theADAR equals the descriptor address and the ASR indicates that the channel is active then thatdescriptor is not removed. Once the interrupt handler no longer sees an <strong>AAU</strong> interrupt beingasserted it schedules a bottom half handler in the immediate task queue to process the holdingqueue and notify the application of the progress of the <strong>AAU</strong> operation.The application calls the function aau_free() when it no longer needs the <strong>AAU</strong> and wants torelease it. Depending on the reference count, the IRQ requested for the <strong>AAU</strong> may be freed. Whenthere are any errors for the <strong>AAU</strong> unit, the <strong>AAU</strong> registers are cleared, all resources are returned, andthe reference count shall be reset to 0.Figure 2 shows the state trace diagram for a normal operation of the <strong>AAU</strong>. The diagramdemonstrates all the necessary function calls that are performed during a normal, simple <strong>AAU</strong>execution path. The section explaining the APIs in detail follows.Figure 2.<strong>AAU</strong> State Trace DiagramUser <strong>AAU</strong> INTC Systemaau_get_buffer()aau_init()aau_queue_buffer()aau_start()<strong>AAU</strong> Completeaau_irq_handler()Sleep on wait queue or Proceed oncallbackaau_process()aau_buffer_return()Callback or Wake if Sleepingaau_free()aau_task()16 White Paper

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!