summaryrefslogtreecommitdiffstats
path: root/sys/arm/broadcom
diff options
context:
space:
mode:
authorgonzo <gonzo@FreeBSD.org>2013-03-05 20:00:11 +0000
committergonzo <gonzo@FreeBSD.org>2013-03-05 20:00:11 +0000
commit161f82b0bdb9e0bc8b3a3037ded59c981f4a9cf2 (patch)
treeb8cbca156e83f2fb9702837ea4df406099acf3a4 /sys/arm/broadcom
parentb3ca7007e70ec0761652adc32ca4eed924caba43 (diff)
downloadFreeBSD-src-161f82b0bdb9e0bc8b3a3037ded59c981f4a9cf2.zip
FreeBSD-src-161f82b0bdb9e0bc8b3a3037ded59c981f4a9cf2.tar.gz
- Reset DMA channel if error occured
- Initialize info field in bcm_dma_reset Submitted by: Daisuke Aoyama <aoyama@peach.ne.jp>
Diffstat (limited to 'sys/arm/broadcom')
-rw-r--r--sys/arm/broadcom/bcm2835/bcm2835_dma.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_dma.c b/sys/arm/broadcom/bcm2835/bcm2835_dma.c
index 5e1c9dc..429ba7c 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) {
OpenPOWER on IntegriCloud