From e9401a9e0e67a2158b779254e3962fa417a2547c Mon Sep 17 00:00:00 2001 From: Oleksandr Tymoshenko Date: Tue, 5 Mar 2013 20:00:11 +0000 Subject: [PATCH] - Reset DMA channel if error occured - Initialize info field in bcm_dma_reset Submitted by: Daisuke Aoyama --- sys/arm/broadcom/bcm2835/bcm2835_dma.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/arm/broadcom/bcm2835/bcm2835_dma.c b/sys/arm/broadcom/bcm2835/bcm2835_dma.c index 5e1c9dc1e2fc..429ba7c2c9c4 100644 --- a/sys/arm/broadcom/bcm2835/bcm2835_dma.c +++ b/sys/arm/broadcom/bcm2835/bcm2835_dma.c @@ -199,6 +199,7 @@ bcm_dma_reset(device_t dev, int ch) /* Reset control block */ cb = sc->sc_dma_ch[ch].cb; bzero(cb, sizeof(cb)); + cb->info = INFO_WAIT_RESP; } static int @@ -615,6 +616,7 @@ bcm_dma_intr(void *arg) debug & DEBUG_ERROR_MASK, ch->ch); bus_write_4(sc->sc_mem, BCM_DMA_DEBUG(ch->ch), debug & DEBUG_ERROR_MASK); + bcm_dma_reset(sc->sc_dev, ch->ch); } if (cs & CS_INT) {