From fe7075dfa5bc5f487e25e22e1137b9abd7a9f9a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Mon, 12 Jan 2015 10:49:01 +0000 Subject: [PATCH] fixed missing unmask of DMA task interrupts --- dma/dma.c | 15 ++------------- include/dma.h | 2 +- sys/BaS.c | 3 +++ 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/dma/dma.c b/dma/dma.c index 58ac209..714f8a4 100644 --- a/dma/dma.c +++ b/dma/dma.c @@ -79,27 +79,16 @@ static struct dma_channel dma_channel[NCHANNELS] = /* * Enable all DMA interrupts * - * Parameters: - * pri Interrupt Priority - * lvl Interrupt Level */ -void dma_irq_enable(uint8_t lvl, uint8_t pri) +void dma_irq_enable(void) { - /* Setup the DMA ICR (#48) */ - MCF_INTC_ICR48 = MCF_INTC_ICR_IP(pri) | - MCF_INTC_ICR_IL(lvl); - dbg("DMA irq assigned level %d, priority %d\r\n", lvl, pri); - /* Unmask all task interrupts */ MCF_DMA_DIMR = 0; /* Clear the interrupt pending register */ MCF_DMA_DIPR = 0; - /* Unmask the DMA interrupt in the interrupt controller */ - MCF_INTC_IMRH &= ~MCF_INTC_IMRH_INT_MASK48; - - dbg("DMA task interrupts unmasked, pending interrupts cleared, interrupt controller active\r\n"); + dbg("DMA task interrupts unmasked.\r\n"); } /* diff --git a/include/dma.h b/include/dma.h index 1b39be6..2776b28 100644 --- a/include/dma.h +++ b/include/dma.h @@ -35,7 +35,7 @@ extern void dma_clear_channel(int channel); extern uint32_t dma_get_initiator(int requestor); extern int dma_set_initiator(int initiator); extern void dma_free_initiator(int initiator); -extern void dma_irq_enable(uint8_t lvl, uint8_t pri); +extern void dma_irq_enable(void); extern void dma_irq_disable(void); extern bool dma_interrupt_handler(void *arg1, void *arg2); diff --git a/sys/BaS.c b/sys/BaS.c index b6d2fee..eaed504 100644 --- a/sys/BaS.c +++ b/sys/BaS.c @@ -440,7 +440,10 @@ void BaS(void) xprintf("BaS initialization finished, enable interrupts\r\n"); init_isr(); + enable_coldfire_interrupts(); + dma_irq_enable(); + init_pci(); // video_init();