Deleted Added
full compact
31c31
< * $FreeBSD: head/sys/dev/sound/isa/sb16.c 68414 2000-11-07 00:38:59Z cg $
---
> * $FreeBSD: head/sys/dev/sound/isa/sb16.c 70134 2000-12-18 01:36:41Z cg $
38a39,40
> #include "mixer_if.h"
>
42,52d43
< /* channel interface */
< static void *sb16chan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir);
< static int sb16chan_setformat(void *data, u_int32_t format);
< static int sb16chan_setspeed(void *data, u_int32_t speed);
< static int sb16chan_setblocksize(void *data, u_int32_t blocksize);
< static int sb16chan_trigger(void *data, int go);
< static int sb16chan_getptr(void *data);
< static pcmchan_caps *sb16chan_getcaps(void *data);
< static int sb16chan_reset(void *data);
< static int sb16chan_resetdone(void *data);
<
76,94d66
< static pcm_channel sb_chantemplate = {
< sb16chan_init,
< NULL,
< sb16chan_setformat,
< sb16chan_setspeed,
< sb16chan_setblocksize,
< sb16chan_trigger,
< sb16chan_getptr,
< sb16chan_getcaps,
< NULL, /* free */
< sb16chan_reset, /* reset */
< sb16chan_resetdone, /* resetdone */
< NULL, /* nop3 */
< NULL, /* nop4 */
< NULL, /* nop5 */
< NULL, /* nop6 */
< NULL, /* nop7 */
< };
<
121d92
< static int sb_dspready(struct sb_info *sb);
132,144d102
< static int sb16mix_init(snd_mixer *m);
< static int sb16mix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right);
< static int sb16mix_setrecsrc(snd_mixer *m, u_int32_t src);
<
< static snd_mixer sb16_mixer = {
< "SoundBlaster 16 mixer",
< sb16mix_init,
< NULL,
< NULL,
< sb16mix_set,
< sb16mix_setrecsrc,
< };
<
181,186d138
< sb_dspready(struct sb_info *sb)
< {
< return ((sb_rd(sb, SBDSP_STATUS) & 0x80) == 0);
< }
<
< static int
192,194c144,148
< if (sb_dspready(sb)) {
< sb_wr(sb, SBDSP_CMD, val);
< return 1;
---
> if ((sb_rd(sb, SBDSP_STATUS) & 0x80))
> DELAY((i > 100)? 1000 : 10);
> else {
> sb_wr(sb, SBDSP_CMD, val);
> return 1;
196d149
< if (i > 10) DELAY((i > 100)? 1000 : 10);
400a354,361
> static kobj_method_t sb16mix_mixer_methods[] = {
> KOBJMETHOD(mixer_init, sb16mix_init),
> KOBJMETHOD(mixer_set, sb16mix_set),
> KOBJMETHOD(mixer_setrecsrc, sb16mix_setrecsrc),
> { 0, 0 }
> };
> MIXER_DECLARE(sb16mix_mixer);
>
629c590
< sb16chan_init(void *devinfo, snd_dbuf *b, pcm_channel *c, int dir)
---
> sb16chan_init(kobj_t obj, void *devinfo, snd_dbuf *b, pcm_channel *c, int dir)
647c608
< sb16chan_setformat(void *data, u_int32_t format)
---
> sb16chan_setformat(kobj_t obj, void *data, u_int32_t format)
660c621
< sb16chan_setspeed(void *data, u_int32_t speed)
---
> sb16chan_setspeed(kobj_t obj, void *data, u_int32_t speed)
669c630
< sb16chan_setblocksize(void *data, u_int32_t blocksize)
---
> sb16chan_setblocksize(kobj_t obj, void *data, u_int32_t blocksize)
678c639
< sb16chan_trigger(void *data, int go)
---
> sb16chan_trigger(kobj_t obj, void *data, int go)
697c658
< sb16chan_getptr(void *data)
---
> sb16chan_getptr(kobj_t obj, void *data)
705c666
< sb16chan_getcaps(void *data)
---
> sb16chan_getcaps(kobj_t obj, void *data)
717c678
< sb16chan_reset(void *data)
---
> sb16chan_resetdone(kobj_t obj, void *data)
719d679
< /*
722,724d681
< */
< return 0;
< }
726,731d682
< static int
< sb16chan_resetdone(void *data)
< {
< struct sb_chinfo *ch = data;
< struct sb_info *sb = ch->parent;
<
736a688,700
> static kobj_method_t sb16chan_methods[] = {
> KOBJMETHOD(channel_init, sb16chan_init),
> KOBJMETHOD(channel_resetdone, sb16chan_resetdone),
> KOBJMETHOD(channel_setformat, sb16chan_setformat),
> KOBJMETHOD(channel_setspeed, sb16chan_setspeed),
> KOBJMETHOD(channel_setblocksize, sb16chan_setblocksize),
> KOBJMETHOD(channel_trigger, sb16chan_trigger),
> KOBJMETHOD(channel_getptr, sb16chan_getptr),
> KOBJMETHOD(channel_getcaps, sb16chan_getcaps),
> { 0, 0 }
> };
> CHANNEL_DECLARE(sb16chan);
>
783c747
< if (mixer_init(dev, &sb16_mixer, sb))
---
> if (mixer_init(dev, &sb16mix_mixer_class, sb))
815,816c779,780
< pcm_addchan(dev, PCMDIR_REC, &sb_chantemplate, sb);
< pcm_addchan(dev, PCMDIR_PLAY, &sb_chantemplate, sb);
---
> pcm_addchan(dev, PCMDIR_REC, &sb16chan_class, sb);
> pcm_addchan(dev, PCMDIR_PLAY, &sb16chan_class, sb);