summaryrefslogtreecommitdiff
path: root/src/stm
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-11-20 01:42:22 -0800
committerKeith Packard <keithp@keithp.com>2016-11-20 01:42:22 -0800
commitfd05d495b463685d81e75115a93fdda2764c7113 (patch)
tree3bf8f2391c7c865f261baffcaca0738fe8013421 /src/stm
parent34e68a77dcd458f9cf9d839a55e4e84a6d95a48d (diff)
altos/stm-vga: Fix DMA reset to load scanline each time
If we load the scanline register while DMA is running, it doesn't actually get reloaded until after the first transfer from the next line, leaving a weird jog in the middle of the screen. Also flip to SPI1, as Bdale is using that on the 1802 board. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/stm')
-rw-r--r--src/stm/ao_dma_stm.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/stm/ao_dma_stm.c b/src/stm/ao_dma_stm.c
index 0c86b49a..a24c6d3a 100644
--- a/src/stm/ao_dma_stm.c
+++ b/src/stm/ao_dma_stm.c
@@ -48,7 +48,11 @@ ao_dma_isr(uint8_t index) {
void stm_dma1_channel1_isr(void) { ao_dma_isr(STM_DMA_INDEX(1)); }
void stm_dma1_channel2_isr(void) { ao_dma_isr(STM_DMA_INDEX(2)); }
+#ifdef STM_DMA1_3_STOLEN
+#define LEAVE_DMA_ON
+#else
void stm_dma1_channel3_isr(void) { ao_dma_isr(STM_DMA_INDEX(3)); }
+#endif
void stm_dma1_channel4_isr(void) { ao_dma_isr(STM_DMA_INDEX(4)); }
#ifdef STM_DMA1_5_STOLEN
#define LEAVE_DMA_ON
@@ -179,6 +183,13 @@ ao_dma_init(void)
continue;
}
#endif
+#if STM_DMA1_3_STOLEN
+ if (index == STM_DMA_INDEX(3)) {
+ ao_dma_allocated[index] = 1;
+ ao_dma_mutex[index] = 0xff;
+ continue;
+ }
+#endif
stm_nvic_set_enable(STM_ISR_DMA1_CHANNEL1_POS + index);
stm_nvic_set_priority(STM_ISR_DMA1_CHANNEL1_POS + index, 4);
ao_dma_allocated[index] = 0;