dma hal implementation