diff options
author | cg <cg@FreeBSD.org> | 2000-09-01 20:09:24 +0000 |
---|---|---|
committer | cg <cg@FreeBSD.org> | 2000-09-01 20:09:24 +0000 |
commit | a6b7de97e3e709e699c0638c9ff07e8fc3477772 (patch) | |
tree | ba5ec2ebf628be720fad52ae78db04a46cc46680 /sys/dev/sound/isa | |
parent | e95936f6ddf2411361330abe8f44903c01b42fe5 (diff) | |
download | FreeBSD-src-a6b7de97e3e709e699c0638c9ff07e8fc3477772.zip FreeBSD-src-a6b7de97e3e709e699c0638c9ff07e8fc3477772.tar.gz |
change mixer api slightly
change channel interface - kobj implementation coming soonish
make pcm_makelinks not panic if modular
add pcm_unregister()
these changes support newpcm kld unloading, but this is only implemented
by ds1.c
Diffstat (limited to 'sys/dev/sound/isa')
-rw-r--r-- | sys/dev/sound/isa/ad1816.c | 20 | ||||
-rw-r--r-- | sys/dev/sound/isa/ess.c | 20 | ||||
-rw-r--r-- | sys/dev/sound/isa/mss.c | 29 | ||||
-rw-r--r-- | sys/dev/sound/isa/sb.c | 20 | ||||
-rw-r--r-- | sys/dev/sound/isa/sb16.c | 20 | ||||
-rw-r--r-- | sys/dev/sound/isa/sb8.c | 20 |
6 files changed, 89 insertions, 40 deletions
diff --git a/sys/dev/sound/isa/ad1816.c b/sys/dev/sound/isa/ad1816.c index ec7a61e..3cebbe3 100644 --- a/sys/dev/sound/isa/ad1816.c +++ b/sys/dev/sound/isa/ad1816.c @@ -67,10 +67,11 @@ static int ad1816mix_init(snd_mixer *m); static int ad1816mix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right); static int ad1816mix_setrecsrc(snd_mixer *m, u_int32_t src); static snd_mixer ad1816_mixer = { - "ad1816 mixer", - ad1816mix_init, - ad1816mix_set, - ad1816mix_setrecsrc, + "ad1816 mixer", + ad1816mix_init, + NULL, + ad1816mix_set, + ad1816mix_setrecsrc, }; static devclass_t pcm_devclass; @@ -108,6 +109,14 @@ static pcm_channel ad1816_chantemplate = { ad1816chan_trigger, ad1816chan_getptr, ad1816chan_getcaps, + NULL, /* free */ + NULL, /* nop1 */ + NULL, /* nop2 */ + NULL, /* nop3 */ + NULL, /* nop4 */ + NULL, /* nop5 */ + NULL, /* nop6 */ + NULL, /* nop7 */ }; #define AD1816_MUTE 31 /* value for mute */ @@ -566,7 +575,6 @@ static int ad1816_attach(device_t dev) { struct ad1816_info *ad1816; - snddev_info *d = device_get_softc(dev); void *ih; char status[SND_STATUSLEN]; @@ -581,7 +589,7 @@ ad1816_attach(device_t dev) if (!ad1816_alloc_resources(ad1816, dev)) goto no; ad1816_init(ad1816, dev); - mixer_init(d, &ad1816_mixer, ad1816); + mixer_init(dev, &ad1816_mixer, ad1816); bus_setup_intr(dev, ad1816->irq, INTR_TYPE_TTY, ad1816_intr, ad1816, &ih); if (bus_dma_tag_create(/*parent*/NULL, /*alignment*/2, /*boundary*/0, /*lowaddr*/BUS_SPACE_MAXADDR_24BIT, diff --git a/sys/dev/sound/isa/ess.c b/sys/dev/sound/isa/ess.c index 2252cd9..abef688 100644 --- a/sys/dev/sound/isa/ess.c +++ b/sys/dev/sound/isa/ess.c @@ -92,6 +92,14 @@ static pcm_channel ess_chantemplate = { esschan_trigger, esschan_getptr, esschan_getcaps, + NULL, /* free */ + NULL, /* nop1 */ + NULL, /* nop2 */ + NULL, /* nop3 */ + NULL, /* nop4 */ + NULL, /* nop5 */ + NULL, /* nop6 */ + NULL, /* nop7 */ }; struct ess_info; @@ -139,10 +147,11 @@ static int essmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right) static int essmix_setrecsrc(snd_mixer *m, u_int32_t src); static snd_mixer ess_mixer = { - "ESS mixer", - essmix_init, - essmix_set, - essmix_setrecsrc, + "ESS mixer", + essmix_init, + NULL, + essmix_set, + essmix_setrecsrc, }; static devclass_t pcm_devclass; @@ -365,7 +374,6 @@ ess_alloc_resources(struct ess_info *sc, device_t dev) static int ess_doattach(device_t dev, struct ess_info *sc) { - snddev_info *d = device_get_softc(dev); void *ih; char status[SND_STATUSLEN], buf[64]; int ver; @@ -374,7 +382,7 @@ ess_doattach(device_t dev, struct ess_info *sc) goto no; if (ess_reset_dsp(sc)) goto no; - mixer_init(d, &ess_mixer, sc); + mixer_init(dev, &ess_mixer, sc); sc->duplex = 0; sc->newspeed = 0; diff --git a/sys/dev/sound/isa/mss.c b/sys/dev/sound/isa/mss.c index 71f9dd5..93347c5 100644 --- a/sys/dev/sound/isa/mss.c +++ b/sys/dev/sound/isa/mss.c @@ -108,20 +108,22 @@ static int mssmix_init(snd_mixer *m); static int mssmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right); static int mssmix_setrecsrc(snd_mixer *m, u_int32_t src); static snd_mixer mss_mixer = { - "MSS mixer", - mssmix_init, - mssmix_set, - mssmix_setrecsrc, + "MSS mixer", + mssmix_init, + NULL, + mssmix_set, + mssmix_setrecsrc, }; static int ymmix_init(snd_mixer *m); static int ymmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right); static int ymmix_setrecsrc(snd_mixer *m, u_int32_t src); static snd_mixer yamaha_mixer = { - "OPL3-SAx mixer", - ymmix_init, - ymmix_set, - ymmix_setrecsrc, + "OPL3-SAx mixer", + ymmix_init, + NULL, + ymmix_set, + ymmix_setrecsrc, }; static devclass_t pcm_devclass; @@ -178,6 +180,14 @@ static pcm_channel mss_chantemplate = { msschan_trigger, msschan_getptr, msschan_getcaps, + NULL, /* free */ + NULL, /* nop1 */ + NULL, /* nop2 */ + NULL, /* nop3 */ + NULL, /* nop4 */ + NULL, /* nop5 */ + NULL, /* nop6 */ + NULL, /* nop7 */ }; #define MD_AD1848 0x91 @@ -862,7 +872,6 @@ ymf_test(device_t dev, struct mss_info *mss) static int mss_doattach(device_t dev, struct mss_info *mss) { - snddev_info *d = device_get_softc(dev); void *ih; int flags = device_get_flags(dev); char status[SND_STATUSLEN]; @@ -902,7 +911,7 @@ mss_doattach(device_t dev, struct mss_info *mss) io_wr(mss, 0, bits); printf("drq/irq conf %x\n", io_rd(mss, 0)); } - mixer_init(d, (mss->bd_id == MD_YM0020)? &yamaha_mixer : &mss_mixer, mss); + mixer_init(dev, (mss->bd_id == MD_YM0020)? &yamaha_mixer : &mss_mixer, mss); switch (mss->bd_id) { case MD_OPTI931: bus_setup_intr(dev, mss->irq, INTR_TYPE_TTY, opti931_intr, mss, &ih); diff --git a/sys/dev/sound/isa/sb.c b/sys/dev/sound/isa/sb.c index d975311..21c3e6f 100644 --- a/sys/dev/sound/isa/sb.c +++ b/sys/dev/sound/isa/sb.c @@ -107,6 +107,14 @@ static pcm_channel sb_chantemplate = { sbchan_trigger, sbchan_getptr, sbchan_getcaps, + NULL, /* free */ + NULL, /* nop1 */ + NULL, /* nop2 */ + NULL, /* nop3 */ + NULL, /* nop4 */ + NULL, /* nop5 */ + NULL, /* nop6 */ + NULL, /* nop7 */ }; struct sb_info; @@ -152,10 +160,11 @@ static int sbmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right); static int sbmix_setrecsrc(snd_mixer *m, u_int32_t src); static snd_mixer sb_mixer = { - "SoundBlaster mixer", - sbmix_init, - sbmix_set, - sbmix_setrecsrc, + "SoundBlaster mixer", + sbmix_init, + NULL, + sbmix_set, + sbmix_setrecsrc, }; static devclass_t pcm_devclass; @@ -412,7 +421,6 @@ sb16_swap(void *v, int dir) static int sb_doattach(device_t dev, struct sb_info *sb) { - snddev_info *d = device_get_softc(dev); void *ih; char status[SND_STATUSLEN]; int bs = DSP_BUFFSIZE; @@ -421,7 +429,7 @@ sb_doattach(device_t dev, struct sb_info *sb) goto no; if (sb_reset_dsp(sb)) goto no; - mixer_init(d, &sb_mixer, sb); + mixer_init(dev, &sb_mixer, sb); bus_setup_intr(dev, sb->irq, INTR_TYPE_TTY, sb_intr, sb, &ih); if ((sb->bd_flags & BD_F_SB16) && !(sb->bd_flags & BD_F_SB16X)) diff --git a/sys/dev/sound/isa/sb16.c b/sys/dev/sound/isa/sb16.c index d975311..21c3e6f 100644 --- a/sys/dev/sound/isa/sb16.c +++ b/sys/dev/sound/isa/sb16.c @@ -107,6 +107,14 @@ static pcm_channel sb_chantemplate = { sbchan_trigger, sbchan_getptr, sbchan_getcaps, + NULL, /* free */ + NULL, /* nop1 */ + NULL, /* nop2 */ + NULL, /* nop3 */ + NULL, /* nop4 */ + NULL, /* nop5 */ + NULL, /* nop6 */ + NULL, /* nop7 */ }; struct sb_info; @@ -152,10 +160,11 @@ static int sbmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right); static int sbmix_setrecsrc(snd_mixer *m, u_int32_t src); static snd_mixer sb_mixer = { - "SoundBlaster mixer", - sbmix_init, - sbmix_set, - sbmix_setrecsrc, + "SoundBlaster mixer", + sbmix_init, + NULL, + sbmix_set, + sbmix_setrecsrc, }; static devclass_t pcm_devclass; @@ -412,7 +421,6 @@ sb16_swap(void *v, int dir) static int sb_doattach(device_t dev, struct sb_info *sb) { - snddev_info *d = device_get_softc(dev); void *ih; char status[SND_STATUSLEN]; int bs = DSP_BUFFSIZE; @@ -421,7 +429,7 @@ sb_doattach(device_t dev, struct sb_info *sb) goto no; if (sb_reset_dsp(sb)) goto no; - mixer_init(d, &sb_mixer, sb); + mixer_init(dev, &sb_mixer, sb); bus_setup_intr(dev, sb->irq, INTR_TYPE_TTY, sb_intr, sb, &ih); if ((sb->bd_flags & BD_F_SB16) && !(sb->bd_flags & BD_F_SB16X)) diff --git a/sys/dev/sound/isa/sb8.c b/sys/dev/sound/isa/sb8.c index d975311..21c3e6f 100644 --- a/sys/dev/sound/isa/sb8.c +++ b/sys/dev/sound/isa/sb8.c @@ -107,6 +107,14 @@ static pcm_channel sb_chantemplate = { sbchan_trigger, sbchan_getptr, sbchan_getcaps, + NULL, /* free */ + NULL, /* nop1 */ + NULL, /* nop2 */ + NULL, /* nop3 */ + NULL, /* nop4 */ + NULL, /* nop5 */ + NULL, /* nop6 */ + NULL, /* nop7 */ }; struct sb_info; @@ -152,10 +160,11 @@ static int sbmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right); static int sbmix_setrecsrc(snd_mixer *m, u_int32_t src); static snd_mixer sb_mixer = { - "SoundBlaster mixer", - sbmix_init, - sbmix_set, - sbmix_setrecsrc, + "SoundBlaster mixer", + sbmix_init, + NULL, + sbmix_set, + sbmix_setrecsrc, }; static devclass_t pcm_devclass; @@ -412,7 +421,6 @@ sb16_swap(void *v, int dir) static int sb_doattach(device_t dev, struct sb_info *sb) { - snddev_info *d = device_get_softc(dev); void *ih; char status[SND_STATUSLEN]; int bs = DSP_BUFFSIZE; @@ -421,7 +429,7 @@ sb_doattach(device_t dev, struct sb_info *sb) goto no; if (sb_reset_dsp(sb)) goto no; - mixer_init(d, &sb_mixer, sb); + mixer_init(dev, &sb_mixer, sb); bus_setup_intr(dev, sb->irq, INTR_TYPE_TTY, sb_intr, sb, &ih); if ((sb->bd_flags & BD_F_SB16) && !(sb->bd_flags & BD_F_SB16X)) |