X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Fcortex-m3%2Fdrv%2Fdmac_sam3.h;h=041fac837f62459907b6660f1c68863e1e4280e0;hb=2d7a00fd39d1926c60ecfe615e100714797a5a79;hp=eb87989c016de100fff67d8e05e215e7c9970f6b;hpb=b42a8bd9e19d221e7ede7455c2f6979595307d89;p=bertos.git diff --git a/bertos/cpu/cortex-m3/drv/dmac_sam3.h b/bertos/cpu/cortex-m3/drv/dmac_sam3.h index eb87989c..041fac83 100644 --- a/bertos/cpu/cortex-m3/drv/dmac_sam3.h +++ b/bertos/cpu/cortex-m3/drv/dmac_sam3.h @@ -41,6 +41,9 @@ #include #include +#include + +typedef void (*dmac_handler_t)(uint32_t status); /** * DMA Transfer Descriptor as well as Linked List Item @@ -57,25 +60,20 @@ typedef struct DmacDesc typedef struct Dmac { DmacDesc lli; - uint8_t ch; uint8_t errors; size_t transfer_size; + dmac_handler_t handler; } Dmac; #define DMAC_ERR_CH_ALREDY_ON BV(0) -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); #endif /* DRV_DMAC_SAM3_H */