diff options
author | cg <cg@FreeBSD.org> | 2001-10-08 05:59:54 +0000 |
---|---|---|
committer | cg <cg@FreeBSD.org> | 2001-10-08 05:59:54 +0000 |
commit | 2c46a9f5abb070f6bc9bad340b45fb77f27d0c28 (patch) | |
tree | 9a91b2904bebdf4f273248ecc0a56f40e01de76c /sys/dev/sound/pci/solo.c | |
parent | 4d81d1c598583f02c78c67d478f9d4d05df66224 (diff) | |
download | FreeBSD-src-2c46a9f5abb070f6bc9bad340b45fb77f27d0c28.zip FreeBSD-src-2c46a9f5abb070f6bc9bad340b45fb77f27d0c28.tar.gz |
use pcm_getbuffersize()
Diffstat (limited to 'sys/dev/sound/pci/solo.c')
-rw-r--r-- | sys/dev/sound/pci/solo.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/sound/pci/solo.c b/sys/dev/sound/pci/solo.c index 13f940f..9578569 100644 --- a/sys/dev/sound/pci/solo.c +++ b/sys/dev/sound/pci/solo.c @@ -35,7 +35,7 @@ SND_DECLARE_FILE("$FreeBSD$"); -#define ESS_BUFFSIZE (16384) +#define SOLO_DEFAULT_BUFSZ 16384 #define ABS(x) (((x) < 0)? -(x) : (x)) /* if defined, playback always uses the 2nd channel and full duplex works */ @@ -90,6 +90,8 @@ struct ess_info { bus_dma_tag_t parent_dmat; int simplex_dir, type, duplex:1, newspeed:1, dmasz[2]; + unsigned int bufsz; + struct ess_chinfo pch, rch; }; @@ -518,7 +520,7 @@ esschan_init(kobj_t obj, void *devinfo, struct snd_dbuf *b, struct pcm_channel * ch->channel = c; ch->buffer = b; ch->dir = dir; - if (sndbuf_alloc(ch->buffer, sc->parent_dmat, ESS_BUFFSIZE) == -1) + if (sndbuf_alloc(ch->buffer, sc->parent_dmat, sc->bufsz) == -1) return NULL; ch->hwch = 1; if ((dir == PCMDIR_PLAY) && (sc->duplex)) @@ -803,7 +805,6 @@ ess_dmatrigger(struct ess_info *sc, int ch, int go) static void ess_release_resources(struct ess_info *sc, device_t dev) { - /* should we bus_teardown_intr here? */ if (sc->irq) { if (sc->ih) bus_teardown_intr(dev, sc->irq, sc->ih); @@ -916,6 +917,8 @@ ess_attach(device_t dev) if (ess_alloc_resources(sc, dev)) goto no; + sc->bufsz = pcm_getbuffersize(dev, 4096, SOLO_DEFAULT_BUFSZ, 65536); + ddma = rman_get_start(sc->vc) | 1; pci_write_config(dev, PCI_LEGACYCONTROL, 0x805f, 2); pci_write_config(dev, PCI_DDMACONTROL, ddma, 2); @@ -949,7 +952,7 @@ ess_attach(device_t dev) /*lowaddr*/BUS_SPACE_MAXADDR_24BIT, /*highaddr*/BUS_SPACE_MAXADDR, /*filter*/NULL, /*filterarg*/NULL, - /*maxsize*/ESS_BUFFSIZE, /*nsegments*/1, + /*maxsize*/sc->bufsz, /*nsegments*/1, /*maxsegz*/0x3ffff, /*flags*/0, &sc->parent_dmat) != 0) { device_printf(dev, "unable to create dma tag\n"); |