fixed missing unmask of DMA task interrupts
This commit is contained in:
15
dma/dma.c
15
dma/dma.c
@@ -79,27 +79,16 @@ static struct dma_channel dma_channel[NCHANNELS] =
|
|||||||
/*
|
/*
|
||||||
* Enable all DMA interrupts
|
* 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 */
|
/* Unmask all task interrupts */
|
||||||
MCF_DMA_DIMR = 0;
|
MCF_DMA_DIMR = 0;
|
||||||
|
|
||||||
/* Clear the interrupt pending register */
|
/* Clear the interrupt pending register */
|
||||||
MCF_DMA_DIPR = 0;
|
MCF_DMA_DIPR = 0;
|
||||||
|
|
||||||
/* Unmask the DMA interrupt in the interrupt controller */
|
dbg("DMA task interrupts unmasked.\r\n");
|
||||||
MCF_INTC_IMRH &= ~MCF_INTC_IMRH_INT_MASK48;
|
|
||||||
|
|
||||||
dbg("DMA task interrupts unmasked, pending interrupts cleared, interrupt controller active\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ extern void dma_clear_channel(int channel);
|
|||||||
extern uint32_t dma_get_initiator(int requestor);
|
extern uint32_t dma_get_initiator(int requestor);
|
||||||
extern int dma_set_initiator(int initiator);
|
extern int dma_set_initiator(int initiator);
|
||||||
extern void dma_free_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 void dma_irq_disable(void);
|
||||||
extern bool dma_interrupt_handler(void *arg1, void *arg2);
|
extern bool dma_interrupt_handler(void *arg1, void *arg2);
|
||||||
|
|
||||||
|
|||||||
@@ -440,7 +440,10 @@ void BaS(void)
|
|||||||
|
|
||||||
xprintf("BaS initialization finished, enable interrupts\r\n");
|
xprintf("BaS initialization finished, enable interrupts\r\n");
|
||||||
init_isr();
|
init_isr();
|
||||||
|
|
||||||
enable_coldfire_interrupts();
|
enable_coldfire_interrupts();
|
||||||
|
dma_irq_enable();
|
||||||
|
|
||||||
init_pci();
|
init_pci();
|
||||||
// video_init();
|
// video_init();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user