#define NUM_DMA 7
struct ao_dma_config {
- void (*isr)(void);
+ void (*isr)(int index);
};
uint8_t ao_dma_done[NUM_DMA];
/* Ack them */
stm_dma.ifcr = isr;
if (ao_dma_config[index].isr)
- (*ao_dma_config[index].isr)();
+ (*ao_dma_config[index].isr)(index);
else {
ao_dma_done[index] = 1;
ao_wakeup(&ao_dma_done[index]);
if (ao_dma_allocated[index]) {
if (ao_dma_mutex[index])
ao_panic(AO_PANIC_DMA);
- ao_dma_mutex[index] = 1;
+ ao_dma_mutex[index] = 0xff;
} else
ao_mutex_get(&ao_dma_mutex[index]);
ao_arch_critical(
}
void
-ao_dma_set_isr(uint8_t index, void (*isr)(void))
+ao_dma_set_isr(uint8_t index, void (*isr)(int))
{
ao_dma_config[index].isr = isr;
}
ao_mutex_put(&ao_dma_mutex[index]);
}
-void
-ao_dma_abort(uint8_t index)
-{
- stm_dma.channel[index].ccr &= ~(1 << STM_DMA_CCR_EN);
-}
-
void
ao_dma_alloc(uint8_t index)
{