refactored, reformatted, added missing clobber registers to __asm__
statements
This commit is contained in:
71
dma/dma.c
71
dma/dma.c
@@ -41,7 +41,7 @@
|
||||
|
||||
// #define DBG_DMA
|
||||
#ifdef DBG_DMA
|
||||
#define dbg(format, arg...) do { xprintf("DEBUG: " format, ##arg); } while (0)
|
||||
#define dbg(format, arg...) do { xprintf("DEBUG: %s(): " format, __FUNCTION__, ##arg); } while (0)
|
||||
#else
|
||||
#define dbg(format, arg...) do { ; } while (0)
|
||||
#endif /* DBG_DMA */
|
||||
@@ -89,7 +89,7 @@ void dma_irq_enable(uint8_t lvl, uint8_t pri)
|
||||
MCF_INTC_ICR48 = 0
|
||||
| MCF_INTC_ICR_IP(pri)
|
||||
| MCF_INTC_ICR_IL(lvl);
|
||||
dbg("%s:DMA irq assigned level %d, priority %d\r\n", __FUNCTION__, lvl, pri);
|
||||
dbg("DMA irq assigned level %d, priority %d\r\n", lvl, pri);
|
||||
|
||||
/* Unmask all task interrupts */
|
||||
MCF_DMA_DIMR = 0;
|
||||
@@ -100,8 +100,7 @@ void dma_irq_enable(uint8_t lvl, uint8_t pri)
|
||||
/* Unmask the DMA interrupt in the interrupt controller */
|
||||
MCF_INTC_IMRH &= ~MCF_INTC_IMRH_INT_MASK48;
|
||||
|
||||
dbg("%s: DMA task interrupts unmasked, pending interrupts cleared, interrupt controller active\r\n",
|
||||
__FUNCTION__);
|
||||
dbg("DMA task interrupts unmasked, pending interrupts cleared, interrupt controller active\r\n");
|
||||
}
|
||||
|
||||
/********************************************************************/
|
||||
@@ -119,7 +118,7 @@ void dma_irq_disable(void)
|
||||
/* Mask the DMA interrupt in the interrupt controller */
|
||||
MCF_INTC_IMRH |= MCF_INTC_IMRH_INT_MASK48;
|
||||
|
||||
dbg("%s: DMA interrupts masked and disabled\r\n", __FUNCTION__);
|
||||
dbg("DMA interrupts masked and disabled\r\n");
|
||||
}
|
||||
|
||||
int dma_set_initiator(int initiator)
|
||||
@@ -177,7 +176,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot found\r\n", __FUNCTION__);
|
||||
dbg("no free slot found\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -196,7 +195,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -210,7 +209,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -224,7 +223,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -238,7 +237,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -252,7 +251,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -266,7 +265,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -280,7 +279,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -294,7 +293,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -308,7 +307,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -322,7 +321,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -336,7 +335,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -359,7 +358,7 @@ int dma_set_initiator(int initiator)
|
||||
used_reqs[28] = DMA_PSC2_RX; }
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -373,7 +372,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -387,7 +386,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -401,7 +400,7 @@ int dma_set_initiator(int initiator)
|
||||
}
|
||||
else /* No empty slots */
|
||||
{
|
||||
dbg("%s: no free slot\r\n", __FUNCTION__);
|
||||
dbg("no free slot\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -409,7 +408,7 @@ int dma_set_initiator(int initiator)
|
||||
|
||||
default:
|
||||
{
|
||||
dbg("%s: don't know what to do\r\n", __FUNCTION__);
|
||||
dbg("don't know what to do\r\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -436,7 +435,7 @@ uint32_t dma_get_initiator(int requestor)
|
||||
if (used_reqs[i] == requestor)
|
||||
return i;
|
||||
}
|
||||
dbg("%s: no initiator found for requestor %d\r\n", __FUNCTION__, requestor);
|
||||
dbg("no initiator found for requestor %d\r\n", requestor);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -459,7 +458,7 @@ void dma_free_initiator(int requestor)
|
||||
break;
|
||||
}
|
||||
}
|
||||
dbg("%s: DMA requestor %d freed\r\n", __FUNCTION__, requestor);
|
||||
dbg("DMA requestor %d freed\r\n", requestor);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -476,7 +475,7 @@ int dma_set_channel(int requestor, void (*handler)(void))
|
||||
int i;
|
||||
|
||||
/* Check to see if this requestor is already assigned to a channel */
|
||||
dbg("%s: check if requestor %d is already assigned to a channel\r\n", __FUNCTION__, requestor);
|
||||
dbg("check if requestor %d is already assigned to a channel\r\n", requestor);
|
||||
if ((i = dma_get_channel(requestor)) != -1)
|
||||
return i;
|
||||
|
||||
@@ -486,11 +485,11 @@ int dma_set_channel(int requestor, void (*handler)(void))
|
||||
{
|
||||
dma_channel[i].req = requestor;
|
||||
dma_channel[i].handler = handler;
|
||||
dbg("%s: assigned channel %d to requestor %d\r\n", __FUNCTION__, i, requestor);
|
||||
dbg("assigned channel %d to requestor %d\r\n", i, requestor);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
dbg("%s: no free DMA channel found for requestor %d\r\n", __FUNCTION__, requestor);
|
||||
dbg("no free DMA channel found for requestor %d\r\n", requestor);
|
||||
|
||||
/* All channels taken */
|
||||
return -1;
|
||||
@@ -502,7 +501,7 @@ void dma_clear_channel(int channel)
|
||||
{
|
||||
dma_channel[channel].req = -1;
|
||||
dma_channel[channel].handler = NULL;
|
||||
dbg("%s: cleared DMA channel %d\r\n", __FUNCTION__, channel);
|
||||
dbg("cleared DMA channel %d\r\n", channel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -525,7 +524,7 @@ int dma_get_channel(int requestor)
|
||||
if (dma_channel[i].req == requestor)
|
||||
return i;
|
||||
}
|
||||
dbg("%s: no channel occupied by requestor %d\r\n", __FUNCTION__, requestor);
|
||||
dbg("no channel occupied by requestor %d\r\n", requestor);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -558,8 +557,6 @@ int dma_interrupt_handler(void *arg1, void *arg2)
|
||||
{
|
||||
int i, interrupts;
|
||||
|
||||
(void) set_ipl(7);
|
||||
|
||||
/*
|
||||
* Determine which interrupt(s) triggered by AND'ing the
|
||||
* pending interrupts with those that aren't masked.
|
||||
@@ -569,7 +566,7 @@ int dma_interrupt_handler(void *arg1, void *arg2)
|
||||
/* Make sure we are here for a reason */
|
||||
if (interrupts == 0)
|
||||
{
|
||||
dbg("%s: not DMA interrupt! Spurious?\r\n", __FUNCTION__);
|
||||
dbg("not DMA interrupt! Spurious?\r\n", );
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -583,7 +580,7 @@ int dma_interrupt_handler(void *arg1, void *arg2)
|
||||
/* If there is a handler, call it */
|
||||
if (dma_channel[i].handler != NULL)
|
||||
{
|
||||
dbg("%s: call handler for DMA channel %d (%p)\r\n", __FUNCTION__, i, dma_channel[i].handler);
|
||||
dbg("call handler for DMA channel %d (%p)\r\n", i, dma_channel[i].handler);
|
||||
dma_channel[i].handler();
|
||||
}
|
||||
}
|
||||
@@ -608,7 +605,7 @@ void *dma_memcpy(void *dst, void *src, size_t n)
|
||||
ret = MCD_startDma(1, src, 4, dst, 4, n, 4, DMA_ALWAYS, 0, MCD_SINGLE_DMA, 0);
|
||||
if (ret == MCD_OK)
|
||||
{
|
||||
dbg("%s: DMA on channel 1 successfully started\r\n", __FUNCTION__);
|
||||
dbg("DMA on channel 1 successfully started\r\n");
|
||||
}
|
||||
|
||||
do
|
||||
@@ -652,7 +649,7 @@ void *dma_memcpy(void *dst, void *src, size_t n)
|
||||
end = MCF_SLT0_SCNT;
|
||||
time = (start - end) / (SYSCLK / 1000) / 1000;
|
||||
#endif /* DBG_DMA */
|
||||
dbg("%s: took %d ms (%f Mbytes/second)\r\n", __FUNCTION__, time, n / (float) time / 1000.0);
|
||||
dbg("took %d ms (%f Mbytes/second)\r\n", time, n / (float) time / 1000.0);
|
||||
|
||||
return dst;
|
||||
}
|
||||
@@ -661,11 +658,11 @@ int dma_init(void)
|
||||
{
|
||||
int res;
|
||||
|
||||
dbg("%s: MCD DMA API initialization: ", __FUNCTION__);
|
||||
dbg("MCD DMA API initialization: ");
|
||||
res = MCD_initDma((dmaRegs *) &_MBAR[0x8000], SYS_SRAM, MCD_RELOC_TASKS | MCD_COMM_PREFETCH_EN);
|
||||
if (res != MCD_OK)
|
||||
{
|
||||
dbg("%s: DMA API initialization failed (0x%x)\r\n", __FUNCTION__, res);
|
||||
dbg("DMA API initialization failed (0x%x)\r\n", res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user