From 6185b67008dc9361c27c60703fe300c0948ab199 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Sun, 8 Dec 2013 17:49:50 -0800 Subject: [PATCH] Add GPDMA LLI function to enable interrupt after LLI operation is complete. --- firmware/common/gpdma.c | 4 ++++ firmware/common/gpdma.h | 4 ++++ firmware/common/sgpio_dma.c | 3 +-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/firmware/common/gpdma.c b/firmware/common/gpdma.c index 14fc6406..dbccbd7f 100644 --- a/firmware/common/gpdma.c +++ b/firmware/common/gpdma.c @@ -44,3 +44,7 @@ void gpdma_channel_interrupt_tc_clear(const uint_fast8_t channel) { void gpdma_channel_interrupt_error_clear(const uint_fast8_t channel) { GPDMA_INTERRCLR = GPDMA_INTERRCLR_INTERRCLR(1 << channel); } + +void gpdma_lli_enable_interrupt(gpdma_lli_t* const lli) { + lli->ccontrol |= GPDMA_CCONTROL_I(1); +} diff --git a/firmware/common/gpdma.h b/firmware/common/gpdma.h index 53310456..e9cc66d4 100644 --- a/firmware/common/gpdma.h +++ b/firmware/common/gpdma.h @@ -24,6 +24,8 @@ #include +#include + void gpdma_controller_enable(); void gpdma_channel_enable(const uint_fast8_t channel); @@ -32,4 +34,6 @@ void gpdma_channel_disable(const uint_fast8_t channel); void gpdma_channel_interrupt_tc_clear(const uint_fast8_t channel); void gpdma_channel_interrupt_error_clear(const uint_fast8_t channel); +void gpdma_lli_enable_interrupt(gpdma_lli_t* const lli); + #endif/*__GPDMA_H__*/ diff --git a/firmware/common/sgpio_dma.c b/firmware/common/sgpio_dma.c index a2ab003c..ec7c02ed 100644 --- a/firmware/common/sgpio_dma.c +++ b/firmware/common/sgpio_dma.c @@ -46,7 +46,6 @@ void sgpio_dma_configure_lli( const uint_fast8_t source_master = direction_transmit ? 1 : 0; const uint_fast8_t destination_master = direction_transmit ? 0 : 1; const uint_fast8_t lli_fetch_master = direction_transmit ? 0 : 1; - const uint_fast8_t interrupt_after_this_lli = i & 1; lli[i].csrcaddr = direction_transmit ? memory_address : peripheral_address; lli[i].cdestaddr = direction_transmit ? peripheral_address : memory_address; @@ -64,7 +63,7 @@ void sgpio_dma_configure_lli( GPDMA_CCONTROL_PROT1(0) | GPDMA_CCONTROL_PROT2(0) | GPDMA_CCONTROL_PROT3(0) | - GPDMA_CCONTROL_I(interrupt_after_this_lli) + GPDMA_CCONTROL_I(0) ; } }