diff options
author | gonzo <gonzo@FreeBSD.org> | 2013-03-05 20:00:11 +0000 |
---|---|---|
committer | gonzo <gonzo@FreeBSD.org> | 2013-03-05 20:00:11 +0000 |
commit | 161f82b0bdb9e0bc8b3a3037ded59c981f4a9cf2 (patch) | |
tree | b8cbca156e83f2fb9702837ea4df406099acf3a4 | |
parent | b3ca7007e70ec0761652adc32ca4eed924caba43 (diff) | |
download | FreeBSD-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>
-rw-r--r-- | sys/arm/broadcom/bcm2835/bcm2835_dma.c | 2 |
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) { |