#define NUM_DMA 7
struct ao_dma_config {
- void (*isr)(int index);
+ void (*isr)(int arg);
+ int arg;
};
uint8_t ao_dma_done[NUM_DMA];
/* Ack them */
stm_dma.ifcr = isr;
if (ao_dma_config[index].isr)
- (*ao_dma_config[index].isr)(index);
+ (*ao_dma_config[index].isr)(ao_dma_config[index].arg);
else {
ao_dma_done[index] = 1;
ao_wakeup(&ao_dma_done[index]);
}
void
-ao_dma_set_isr(uint8_t index, void (*isr)(int))
+ao_dma_set_isr(uint8_t index, void (*isr)(int), int arg)
{
+ ao_dma_config[index].arg = arg;
ao_dma_config[index].isr = isr;
}