-void dmac_setSourcesLLI(Dmac *dmac, DmacDesc *lli, uint32_t src, uint32_t dst, uint32_t desc);
-void dmac_configureDmacLLI(Dmac *dmac, DmacDesc *lli, size_t transfer_size, uint32_t cfg, uint32_t ctrla, uint32_t ctrlb);
-bool dmac_isLLIDone(Dmac *dmac);
-bool dmac_waitLLIDone(Dmac *dmac);
-
-void dmac_setSources(Dmac *dmac, uint32_t src, uint32_t dst);
-void dmac_configureDmac(Dmac *dmac, size_t transfer_size, uint32_t cfg, uint32_t ctrla, uint32_t ctrlb);
-int dmac_start(Dmac *dmac);
-bool dmac_isDone(Dmac *dmac);
-bool dmac_waitDone(Dmac *dmac);
-int dmac_error(Dmac *dmac);
-
-void dmac_init(Dmac *dmac, int channel);
+void dmac_setLLITransfer(int ch, DmacDesc *lli, uint32_t cfg);
+void dmac_setSources(int ch, uint32_t src, uint32_t dst);
+void dmac_configureDmac(int ch, size_t transfer_size, uint32_t cfg, uint32_t ctrla, uint32_t ctrlb);
+int dmac_start(int ch);
+void dmac_stop(int ch);
+int dmac_error(int ch);
+bool dmac_enableCh(int ch, dmac_handler_t handler);
+void dmac_init(void);