fixed missing unmask of DMA task interrupts

This commit is contained in:
Markus Fröschle
2015-01-12 10:49:01 +00:00
parent c09f0d735e
commit de2d671a15
3 changed files with 6 additions and 14 deletions

View File

@@ -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");
}
/*

View File

@@ -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);

View File

@@ -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();