DIR_SHIFT
(dma->dma_ctrl & ~DIR_MASK) | ((dir << DIR_SHIFT) & DIR_MASK);
dma->dma_ctrl |= (1 << DIR_SHIFT);