projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Disable telefire 'pad' listener when testing radio
[fw/altos]
/
src
/
cc1111
/
ao_dma.c
diff --git
a/src/cc1111/ao_dma.c
b/src/cc1111/ao_dma.c
index 6052964a5fb7e323445195488033da1216bb4b7c..8779ddf414dfd188fe5777bb23070e3fc32b2c4e 100644
(file)
--- a/
src/cc1111/ao_dma.c
+++ b/
src/cc1111/ao_dma.c
@@
-46,6
+46,10
@@
ao_dma_alloc(__xdata uint8_t *done)
DMAIRQ = 0;
DMAIF = 0;
IEN1 |= IEN1_DMAIE;
DMAIRQ = 0;
DMAIF = 0;
IEN1 |= IEN1_DMAIE;
+ DMA0CFGH = ((uint16_t) (&ao_dma_config[0])) >> 8;
+ DMA0CFGL = ((uint16_t) (&ao_dma_config[0]));
+ DMA1CFGH = ((uint16_t) (&ao_dma_config[1])) >> 8;
+ DMA1CFGL = ((uint16_t) (&ao_dma_config[1]));
}
return id;
}
return id;
@@
-69,25
+73,20
@@
ao_dma_set_transfer(uint8_t id,
ao_dma_config[id].len_low = count;
ao_dma_config[id].cfg0 = cfg0;
ao_dma_config[id].cfg1 = cfg1 | DMA_CFG1_IRQMASK;
ao_dma_config[id].len_low = count;
ao_dma_config[id].cfg0 = cfg0;
ao_dma_config[id].cfg1 = cfg1 | DMA_CFG1_IRQMASK;
- if (id == 0) {
- DMA0CFGH = ((uint16_t) (&ao_dma_config[0])) >> 8;
- DMA0CFGL = ((uint16_t) (&ao_dma_config[0]));
- } else {
- DMA1CFGH = ((uint16_t) (&ao_dma_config[1])) >> 8;
- DMA1CFGL = ((uint16_t) (&ao_dma_config[1]));
- }
}
}
-#define nop() _
asm nop
_endasm;
+#define nop() _
_asm nop _
_endasm;
void
ao_dma_start(uint8_t id)
{
uint8_t mask = (1 << id);
DMAIRQ &= ~mask;
void
ao_dma_start(uint8_t id)
{
uint8_t mask = (1 << id);
DMAIRQ &= ~mask;
- DMAARM = 0x80 | mask;
- nop(); nop(); nop(); nop();
- nop(); nop(); nop(); nop();
+ if (DMAARM & mask) {
+ DMAARM = 0x80 | mask;
+ nop(); nop(); nop(); nop();
+ nop(); nop(); nop(); nop();
+ }
*(ao_dma_done[id]) = 0;
DMAARM = mask;
nop(); nop(); nop(); nop();
*(ao_dma_done[id]) = 0;
DMAARM = mask;
nop(); nop(); nop(); nop();