APBDMA_WRITE
APBDMA_WRITE(sc, APBDMACHAN_CSR_REG(n), 0);
APBDMA_WRITE(sc, APBDMA_IRQ_MASK_REG, 0);
APBDMA_WRITE(sc, APBDMA_COMMAND_REG, APBDMA_COMMAND_GEN);
APBDMA_WRITE(sc, APBDMACHAN_STA_REG(n), sta); /* clear EOC */
APBDMA_WRITE(sc, APBDMA_IRQ_MASK_SET_REG, __BIT(n));
APBDMA_WRITE(sc, APBDMACHAN_CSR_REG(n), 0);
APBDMA_WRITE(sc, APBDMA_IRQ_MASK_CLR_REG, __BIT(n));
APBDMA_WRITE(sc, APBDMACHAN_AHB_PTR_REG(n), req->dreq_segs[0].ds_addr);
APBDMA_WRITE(sc, APBDMACHAN_APB_PTR_REG(n), req->dreq_dev_phys);
APBDMA_WRITE(sc, APBDMACHAN_AHB_SEQ_REG(n), ahb_seq);
APBDMA_WRITE(sc, APBDMACHAN_APB_SEQ_REG(n), apb_seq);
APBDMA_WRITE(sc, APBDMACHAN_WCOUNT_REG(n), req->dreq_segs[0].ds_len);
APBDMA_WRITE(sc, APBDMACHAN_CSRE_REG(n), csre);
APBDMA_WRITE(sc, APBDMACHAN_CSR_REG(n), csr | APBDMACHAN_CSR_ENB);
APBDMA_WRITE(sc, APBDMACHAN_CSR_REG(n), v);