diff options
author | br <br@FreeBSD.org> | 2014-02-16 19:21:44 +0000 |
---|---|---|
committer | br <br@FreeBSD.org> | 2014-02-16 19:21:44 +0000 |
commit | dbb2be7f152af457583c23ceaa761264086e1b03 (patch) | |
tree | 03e59d7c0d211f65cd4eff4884537b4bf205b81f /sys/arm | |
parent | c3f6cfec78fd2d28b0fa6b922c07a72985d3316b (diff) | |
download | FreeBSD-src-dbb2be7f152af457583c23ceaa761264086e1b03.zip FreeBSD-src-dbb2be7f152af457583c23ceaa761264086e1b03.tar.gz |
- Decrease buffer size.
- Handle eDMA interrupt on running channel only.
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/freescale/vybrid/vf_sai.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/arm/freescale/vybrid/vf_sai.c b/sys/arm/freescale/vybrid/vf_sai.c index 782c9d3..018b4f6 100644 --- a/sys/arm/freescale/vybrid/vf_sai.c +++ b/sys/arm/freescale/vybrid/vf_sai.c @@ -396,7 +396,8 @@ sai_dma_intr(void *arg, int chn) if (sc->pos >= sc->dma_size) sc->pos -= sc->dma_size; - chn_intr(ch->channel); + if (ch->run) + chn_intr(ch->channel); return (0); } @@ -492,7 +493,7 @@ setup_dma(struct sc_pcminfo *scp) tcd->nbytes = 64; tcd->nmajor = 512; - tcd->smod = 18; /* dma_size range */ + tcd->smod = 17; /* dma_size range */ tcd->dmod = 0; tcd->esg = 0; tcd->soff = 0x4; @@ -523,6 +524,7 @@ saichan_trigger(kobj_t obj, void *data, int go) #if 0 device_printf(scp->dev, "trigger start\n"); #endif + ch->run = 1; break; case PCMTRIG_STOP: @@ -530,6 +532,7 @@ saichan_trigger(kobj_t obj, void *data, int go) #if 0 device_printf(scp->dev, "trigger stop or abort\n"); #endif + ch->run = 0; break; } @@ -720,7 +723,7 @@ sai_attach(device_t dev) scp->dev = dev; /* DMA */ - sc->dma_size = 262144; + sc->dma_size = 131072; /* * Must use dma_size boundary as modulo feature required. |