diff options
author | cg <cg@FreeBSD.org> | 1999-12-30 04:04:43 +0000 |
---|---|---|
committer | cg <cg@FreeBSD.org> | 1999-12-30 04:04:43 +0000 |
commit | eeb98c1804a27879147df08d1ebdfc3043811649 (patch) | |
tree | 05068ab04c04bcbf0ca918b57fbf5f82acd6761e | |
parent | 65f9d00aadcb6b9ffe8f85f4da8925487db929de (diff) | |
download | FreeBSD-src-eeb98c1804a27879147df08d1ebdfc3043811649.zip FreeBSD-src-eeb98c1804a27879147df08d1ebdfc3043811649.tar.gz |
make ess cards use a 64k buffer again, by implementing esschan_init()
-rw-r--r-- | sys/dev/sound/isa/sb.c | 19 | ||||
-rw-r--r-- | sys/dev/sound/isa/sb16.c | 19 | ||||
-rw-r--r-- | sys/dev/sound/isa/sb8.c | 19 |
3 files changed, 39 insertions, 18 deletions
diff --git a/sys/dev/sound/isa/sb.c b/sys/dev/sound/isa/sb.c index 7a0c1f1..12aced9 100644 --- a/sys/dev/sound/isa/sb.c +++ b/sys/dev/sound/isa/sb.c @@ -39,6 +39,8 @@ #include <dev/sound/isa/sb.h> #include <dev/sound/chip.h> +#define ESS_BUFFSIZE (65536 - 256) + /* channel interface */ static void *sbchan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir); static int sbchan_setdir(void *data, int dir); @@ -50,9 +52,7 @@ static int sbchan_getptr(void *data); static pcmchan_caps *sbchan_getcaps(void *data); /* channel interface for ESS */ -#ifdef notyet static void *esschan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir); -#endif static int esschan_setdir(void *data, int dir); static int esschan_setformat(void *data, u_int32_t format); static int esschan_setspeed(void *data, u_int32_t speed); @@ -127,7 +127,7 @@ static pcm_channel sb_chantemplate = { }; static pcm_channel ess_chantemplate = { - sbchan_init, + esschan_init, esschan_setdir, esschan_setformat, esschan_setspeed, @@ -888,13 +888,20 @@ sbchan_getcaps(void *data) return (ch->buffer->chan >= 4)? &sb16_hcaps : &sb16_lcaps; } /* channel interface for ESS18xx */ -#ifdef notyet static void * esschan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir) { - /* the same as sbchan_init()? */ + struct sb_info *sb = devinfo; + struct sb_chinfo *ch = (dir == PCMDIR_PLAY)? &sb->pch : &sb->rch; + + ch->parent = sb; + ch->channel = c; + ch->buffer = b; + ch->buffer->bufsize = ESS_BUFFSIZE; + if (chn_allocbuf(ch->buffer, sb->parent_dmat) == -1) return NULL; + ch->buffer->chan = rman_get_start(sb->drq1); + return ch; } -#endif static int esschan_setdir(void *data, int dir) diff --git a/sys/dev/sound/isa/sb16.c b/sys/dev/sound/isa/sb16.c index 7a0c1f1..12aced9 100644 --- a/sys/dev/sound/isa/sb16.c +++ b/sys/dev/sound/isa/sb16.c @@ -39,6 +39,8 @@ #include <dev/sound/isa/sb.h> #include <dev/sound/chip.h> +#define ESS_BUFFSIZE (65536 - 256) + /* channel interface */ static void *sbchan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir); static int sbchan_setdir(void *data, int dir); @@ -50,9 +52,7 @@ static int sbchan_getptr(void *data); static pcmchan_caps *sbchan_getcaps(void *data); /* channel interface for ESS */ -#ifdef notyet static void *esschan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir); -#endif static int esschan_setdir(void *data, int dir); static int esschan_setformat(void *data, u_int32_t format); static int esschan_setspeed(void *data, u_int32_t speed); @@ -127,7 +127,7 @@ static pcm_channel sb_chantemplate = { }; static pcm_channel ess_chantemplate = { - sbchan_init, + esschan_init, esschan_setdir, esschan_setformat, esschan_setspeed, @@ -888,13 +888,20 @@ sbchan_getcaps(void *data) return (ch->buffer->chan >= 4)? &sb16_hcaps : &sb16_lcaps; } /* channel interface for ESS18xx */ -#ifdef notyet static void * esschan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir) { - /* the same as sbchan_init()? */ + struct sb_info *sb = devinfo; + struct sb_chinfo *ch = (dir == PCMDIR_PLAY)? &sb->pch : &sb->rch; + + ch->parent = sb; + ch->channel = c; + ch->buffer = b; + ch->buffer->bufsize = ESS_BUFFSIZE; + if (chn_allocbuf(ch->buffer, sb->parent_dmat) == -1) return NULL; + ch->buffer->chan = rman_get_start(sb->drq1); + return ch; } -#endif static int esschan_setdir(void *data, int dir) diff --git a/sys/dev/sound/isa/sb8.c b/sys/dev/sound/isa/sb8.c index 7a0c1f1..12aced9 100644 --- a/sys/dev/sound/isa/sb8.c +++ b/sys/dev/sound/isa/sb8.c @@ -39,6 +39,8 @@ #include <dev/sound/isa/sb.h> #include <dev/sound/chip.h> +#define ESS_BUFFSIZE (65536 - 256) + /* channel interface */ static void *sbchan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir); static int sbchan_setdir(void *data, int dir); @@ -50,9 +52,7 @@ static int sbchan_getptr(void *data); static pcmchan_caps *sbchan_getcaps(void *data); /* channel interface for ESS */ -#ifdef notyet static void *esschan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir); -#endif static int esschan_setdir(void *data, int dir); static int esschan_setformat(void *data, u_int32_t format); static int esschan_setspeed(void *data, u_int32_t speed); @@ -127,7 +127,7 @@ static pcm_channel sb_chantemplate = { }; static pcm_channel ess_chantemplate = { - sbchan_init, + esschan_init, esschan_setdir, esschan_setformat, esschan_setspeed, @@ -888,13 +888,20 @@ sbchan_getcaps(void *data) return (ch->buffer->chan >= 4)? &sb16_hcaps : &sb16_lcaps; } /* channel interface for ESS18xx */ -#ifdef notyet static void * esschan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir) { - /* the same as sbchan_init()? */ + struct sb_info *sb = devinfo; + struct sb_chinfo *ch = (dir == PCMDIR_PLAY)? &sb->pch : &sb->rch; + + ch->parent = sb; + ch->channel = c; + ch->buffer = b; + ch->buffer->bufsize = ESS_BUFFSIZE; + if (chn_allocbuf(ch->buffer, sb->parent_dmat) == -1) return NULL; + ch->buffer->chan = rman_get_start(sb->drq1); + return ch; } -#endif static int esschan_setdir(void *data, int dir) |