Writing Device Drivers

Performing First-Party DMA Transfers

The driver should perform the following steps for first-party DMA.

  1. Allocate a DMA channel.

  2. Use ddi_dmae_1stparty(9F) to configure the channel.

  3. Ensure that the DMA object is locked in memory. See the physio(9F) or ddi_umem_lock(9F) man page.

  4. Allocate DMA resources for the object.

  5. Program the DMA engine on the device.

  6. Start the engine.

  7. When the transfer is complete, continue the bus-master operation.

  8. Perform any required object synchronizations.

  9. Release the DMA resources.

  10. Deallocate the DMA channel.