This lets the user know which DMA has finished.
Signed-off-by: Keith Packard <keithp@keithp.com>
*
* Mark time in ring, shut down DMA engine
*/
-static void ao_adc_done(void)
+static void ao_adc_done(int index)
{
ao_adc_ring[ao_adc_head].tick = ao_time();
ao_adc_head = ao_adc_ring_next(ao_adc_head);
#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]);
}
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;
}