summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authorbr <br@FreeBSD.org>2014-02-16 19:21:44 +0000
committerbr <br@FreeBSD.org>2014-02-16 19:21:44 +0000
commitdbb2be7f152af457583c23ceaa761264086e1b03 (patch)
tree03e59d7c0d211f65cd4eff4884537b4bf205b81f /sys/arm
parentc3f6cfec78fd2d28b0fa6b922c07a72985d3316b (diff)
downloadFreeBSD-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.c9
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.
OpenPOWER on IntegriCloud