diff options
Diffstat (limited to 'sys/dev/sound/pci/fm801.c')
-rw-r--r-- | sys/dev/sound/pci/fm801.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/sound/pci/fm801.c b/sys/dev/sound/pci/fm801.c index 485ca4d..639200a 100644 --- a/sys/dev/sound/pci/fm801.c +++ b/sys/dev/sound/pci/fm801.c @@ -96,7 +96,7 @@ SND_DECLARE_FILE("$FreeBSD$"); #define FM_INTSTATUS_VOL 0x4000 #define FM_INTSTATUS_MPU 0x8000 -#define FM801_BUFFSIZE 1024*4 /* Other values do not work!!! */ +#define FM801_DEFAULT_BUFSZ 4096 /* Other values do not work!!! */ /* debug purposes */ #define DPRINT if(0) printf @@ -158,6 +158,8 @@ struct fm801_info { rec_shift, rec_size; + unsigned int bufsz; + struct fm801_chinfo pch, rch; }; @@ -328,7 +330,7 @@ fm801ch_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, fm801->parent_dmat, FM801_BUFFSIZE) == -1) return NULL; + if (sndbuf_alloc(ch->buffer, fm801->parent_dmat, fm801->bufsz) == -1) return NULL; return (void *)ch; } @@ -604,6 +606,8 @@ fm801_pci_attach(device_t dev) goto oops; } + fm801->bufsz = pcm_getbuffersize(dev, 4096, FM801_DEFAULT_BUFSZ, 65536); + fm801_init(fm801); codec = AC97_CREATE(dev, fm801, fm801_ac97); @@ -623,7 +627,7 @@ fm801_pci_attach(device_t dev) /*lowaddr*/BUS_SPACE_MAXADDR_32BIT, /*highaddr*/BUS_SPACE_MAXADDR, /*filter*/NULL, /*filterarg*/NULL, - /*maxsize*/FM801_BUFFSIZE, /*nsegments*/1, /*maxsegz*/0x3ffff, + /*maxsize*/fm801->bufsz, /*nsegments*/1, /*maxsegz*/0x3ffff, /*flags*/0, &fm801->parent_dmat) != 0) { device_printf(dev, "unable to create dma tag\n"); goto oops; |