svn commit: r193640 - in head/sys: conf dev/sound dev/sound/isa
dev/sound/macio dev/sound/midi dev/sound/pci
dev/sound/pci/hda dev/sound/pcm dev/sound/sbus dev/sound/usb
modules/sound/sound sys tools
Ariff Abdullah
ariff at FreeBSD.org
Sun Jun 7 19:12:10 UTC 2009
Author: ariff
Date: Sun Jun 7 19:12:08 2009
New Revision: 193640
URL: http://svn.freebsd.org/changeset/base/193640
Log:
Sound Mega-commit. Expect further cleanup until code freeze.
For a slightly thorough explaination, please refer to
[1] http://people.freebsd.org/~ariff/SOUND_4.TXT.html .
Summary of changes includes:
1 Volume Per-Channel (vpc). Provides private / standalone volume control
unique per-stream pcm channel without touching master volume / pcm.
Applications can directly use SNDCTL_DSP_[GET|SET][PLAY|REC]VOL, or for
backwards compatibility, SOUND_MIXER_PCM through the opened dsp device
instead of /dev/mixer. Special "bypass" mode is enabled through
/dev/mixer which will automatically detect if the adjustment is made
through /dev/mixer and forward its request to this private volume
controller. Changes to this volume object will not interfere with
other channels.
Requirements:
- SNDCTL_DSP_[GET|SET][PLAY|REC]_VOL are newer ioctls (OSSv4) which
require specific application modifications (preferred).
- No modifications required for using bypass mode, so applications
like mplayer or xmms should work out of the box.
Kernel hints:
- hint.pcm.%d.vpc (0 = disable vpc).
Kernel sysctls:
- hw.snd.vpc_mixer_bypass (default: 1). Enable or disable /dev/mixer
bypass mode.
- hw.snd.vpc_autoreset (default: 1). By default, closing/opening
/dev/dsp will reset the volume back to 0 db gain/attenuation.
Setting this to 0 will preserve its settings across device
closing/opening.
- hw.snd.vpc_reset (default: 0). Panic/reset button to reset all
volume settings back to 0 db.
- hw.snd.vpc_0db (default: 45). 0 db relative to linear mixer value.
2 High quality fixed-point Bandlimited SINC sampling rate converter,
based on Julius O'Smith's Digital Audio Resampling -
http://ccrma.stanford.edu/~jos/resample/. It includes a filter design
script written in awk (the clumsiest joke I've ever written)
- 100% 32bit fixed-point, 64bit accumulator.
- Possibly among the fastest (if not fastest) of its kind.
- Resampling quality is tunable, either runtime or during kernel
compilation (FEEDER_RATE_PRESETS).
- Quality can be further customized during kernel compilation by
defining FEEDER_RATE_PRESETS in /etc/make.conf.
Kernel sysctls:
- hw.snd.feeder_rate_quality.
0 - Zero-order Hold (ZOH). Fastest, bad quality.
1 - Linear Interpolation (LINEAR). Slightly slower than ZOH,
better quality but still does not eliminate aliasing.
2 - (and above) - Sinc Interpolation(SINC). Best quality. SINC
quality always start from 2 and above.
Rough quality comparisons:
- http://people.freebsd.org/~ariff/z_comparison/
3 Bit-perfect mode. Bypasses all feeder/dsp effects. Pure sound will be
directly fed into the hardware.
4 Parametric (compile time) Software Equalizer (Bass/Treble mixer). Can
be customized by defining FEEDER_EQ_PRESETS in /etc/make.conf.
5 Transparent/Adaptive Virtual Channel. Now you don't have to disable
vchans in order to make digital format pass through. It also makes
vchans more dynamic by choosing a better format/rate among all the
concurrent streams, which means that dev.pcm.X.play.vchanformat/rate
becomes sort of optional.
6 Exclusive Stream, with special open() mode O_EXCL. This will "mute"
other concurrent vchan streams and only allow a single channel with
O_EXCL set to keep producing sound.
Other Changes:
* most feeder_* stuffs are compilable in userland. Let's not
speculate whether we should go all out for it (save that for
FreeBSD 16.0-RELEASE).
* kobj signature fixups, thanks to Andriy Gapon <avg at freebsd.org>
* pull out channel mixing logic out of vchan.c and create its own
feeder_mixer for world justice.
* various refactoring here and there, for good or bad.
* activation of few more OSSv4 ioctls() (see [1] above).
* opt_snd.h for possible compile time configuration:
(mostly for debugging purposes, don't try these at home)
SND_DEBUG
SND_DIAGNOSTIC
SND_FEEDER_MULTIFORMAT
SND_FEEDER_FULL_MULTIFORMAT
SND_FEEDER_RATE_HP
SND_PCM_64
SND_OLDSTEREO
Manual page updates are on the way.
Tested by: joel, Olivier SMEDTS <olivier at gid0 d org>, too many
unsung / unnamed heroes.
Added:
head/sys/dev/sound/pcm/feeder_chain.c (contents, props changed)
head/sys/dev/sound/pcm/feeder_eq.c (contents, props changed)
head/sys/dev/sound/pcm/feeder_format.c (contents, props changed)
head/sys/dev/sound/pcm/feeder_matrix.c (contents, props changed)
head/sys/dev/sound/pcm/feeder_mixer.c (contents, props changed)
head/sys/dev/sound/pcm/g711.h (contents, props changed)
head/sys/dev/sound/pcm/intpcm.h (contents, props changed)
head/sys/dev/sound/pcm/matrix.h (contents, props changed)
head/sys/dev/sound/pcm/matrix_map.h (contents, props changed)
head/sys/dev/sound/pcm/pcm.h (contents, props changed)
head/sys/dev/sound/pcm/sndstat.h (contents, props changed)
head/sys/tools/feeder_eq_mkfilter.awk (contents, props changed)
head/sys/tools/feeder_rate_mkfilter.awk (contents, props changed)
head/sys/tools/snd_fxdiv_gen.awk (contents, props changed)
Deleted:
head/sys/dev/sound/pcm/fake.c
head/sys/dev/sound/pcm/feeder_fmt.c
Modified:
head/sys/conf/files
head/sys/conf/options
head/sys/dev/sound/clone.c
head/sys/dev/sound/driver.c
head/sys/dev/sound/isa/ad1816.c
head/sys/dev/sound/isa/ess.c
head/sys/dev/sound/isa/gusc.c
head/sys/dev/sound/isa/mss.c
head/sys/dev/sound/isa/sb16.c
head/sys/dev/sound/isa/sb8.c
head/sys/dev/sound/isa/sbc.c
head/sys/dev/sound/isa/sndbuf_dma.c
head/sys/dev/sound/macio/aoa.c
head/sys/dev/sound/macio/davbus.c
head/sys/dev/sound/macio/i2s.c
head/sys/dev/sound/macio/snapper.c
head/sys/dev/sound/macio/tumbler.c
head/sys/dev/sound/midi/midi.c
head/sys/dev/sound/midi/mpu401.c
head/sys/dev/sound/midi/sequencer.c
head/sys/dev/sound/midi/sequencer.h
head/sys/dev/sound/pci/als4000.c
head/sys/dev/sound/pci/atiixp.c
head/sys/dev/sound/pci/aureal.c
head/sys/dev/sound/pci/cmi.c
head/sys/dev/sound/pci/cs4281.c
head/sys/dev/sound/pci/csa.c
head/sys/dev/sound/pci/csapcm.c
head/sys/dev/sound/pci/ds1.c
head/sys/dev/sound/pci/emu10k1.c
head/sys/dev/sound/pci/emu10kx-midi.c
head/sys/dev/sound/pci/emu10kx-pcm.c
head/sys/dev/sound/pci/emu10kx.c
head/sys/dev/sound/pci/envy24.c
head/sys/dev/sound/pci/envy24ht.c
head/sys/dev/sound/pci/es137x.c
head/sys/dev/sound/pci/fm801.c
head/sys/dev/sound/pci/hda/hdac.c
head/sys/dev/sound/pci/ich.c
head/sys/dev/sound/pci/maestro.c
head/sys/dev/sound/pci/maestro3.c
head/sys/dev/sound/pci/neomagic.c
head/sys/dev/sound/pci/solo.c
head/sys/dev/sound/pci/spicds.c
head/sys/dev/sound/pci/t4dwave.c
head/sys/dev/sound/pci/via8233.c
head/sys/dev/sound/pci/via82c686.c
head/sys/dev/sound/pci/vibes.c
head/sys/dev/sound/pcm/ac97.c
head/sys/dev/sound/pcm/ac97_patch.c
head/sys/dev/sound/pcm/buffer.c
head/sys/dev/sound/pcm/buffer.h
head/sys/dev/sound/pcm/channel.c
head/sys/dev/sound/pcm/channel.h
head/sys/dev/sound/pcm/channel_if.m
head/sys/dev/sound/pcm/dsp.c
head/sys/dev/sound/pcm/dsp.h
head/sys/dev/sound/pcm/feeder.c
head/sys/dev/sound/pcm/feeder.h
head/sys/dev/sound/pcm/feeder_rate.c
head/sys/dev/sound/pcm/feeder_volume.c
head/sys/dev/sound/pcm/mixer.c
head/sys/dev/sound/pcm/mixer.h
head/sys/dev/sound/pcm/sndstat.c
head/sys/dev/sound/pcm/sound.c
head/sys/dev/sound/pcm/sound.h
head/sys/dev/sound/pcm/vchan.c
head/sys/dev/sound/pcm/vchan.h
head/sys/dev/sound/sbus/cs4231.c
head/sys/dev/sound/unit.c
head/sys/dev/sound/usb/uaudio.c
head/sys/dev/sound/usb/uaudio.h
head/sys/dev/sound/usb/uaudio_pcm.c
head/sys/dev/sound/version.h
head/sys/modules/sound/sound/Makefile
head/sys/sys/soundcard.h
Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/conf/files Sun Jun 7 19:12:08 2009 (r193640)
@@ -65,6 +65,21 @@ p17v-alsa%diked.h optional snd_emu10kx
compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/p17v-alsa.h p17v-alsa%diked.h" \
no-obj no-implicit-rule before-depend \
clean "p17v-alsa%diked.h"
+feeder_eq_gen.h optional sound \
+ dependency "$S/tools/feeder_eq_mkfilter.awk" \
+ compile-with "${AWK} -f $S/tools/feeder_eq_mkfilter.awk -- ${FEEDER_EQ_PRESETS} > feeder_eq_gen.h" \
+ no-obj no-implicit-rule before-depend \
+ clean "feeder_eq_gen.h"
+feeder_rate_gen.h optional sound \
+ dependency "$S/tools/feeder_rate_mkfilter.awk" \
+ compile-with "${AWK} -f $S/tools/feeder_rate_mkfilter.awk -- ${FEEDER_RATE_PRESETS} > feeder_rate_gen.h" \
+ no-obj no-implicit-rule before-depend \
+ clean "feeder_rate_gen.h"
+snd_fxdiv_gen.h optional sound \
+ dependency "$S/tools/snd_fxdiv_gen.awk" \
+ compile-with "${AWK} -f $S/tools/snd_fxdiv_gen.awk -- > snd_fxdiv_gen.h" \
+ no-obj no-implicit-rule before-depend \
+ clean "snd_fxdiv_gen.h"
miidevs.h optional miibus | mii \
dependency "$S/tools/miidevs2h.awk $S/dev/mii/miidevs" \
compile-with "${AWK} -f $S/tools/miidevs2h.awk $S/dev/mii/miidevs" \
@@ -1433,16 +1448,28 @@ dev/sound/pci/hda/hdac.c optional snd_hd
dev/sound/pcm/ac97.c optional sound
dev/sound/pcm/ac97_if.m optional sound
dev/sound/pcm/ac97_patch.c optional sound
-dev/sound/pcm/buffer.c optional sound
+dev/sound/pcm/buffer.c optional sound \
+ dependency "snd_fxdiv_gen.h"
dev/sound/pcm/channel.c optional sound
dev/sound/pcm/channel_if.m optional sound
dev/sound/pcm/dsp.c optional sound
-dev/sound/pcm/fake.c optional sound
dev/sound/pcm/feeder.c optional sound
-dev/sound/pcm/feeder_fmt.c optional sound
+dev/sound/pcm/feeder_chain.c optional sound
+dev/sound/pcm/feeder_eq.c optional sound \
+ dependency "feeder_eq_gen.h" \
+ dependency "snd_fxdiv_gen.h"
dev/sound/pcm/feeder_if.m optional sound
-dev/sound/pcm/feeder_rate.c optional sound
-dev/sound/pcm/feeder_volume.c optional sound
+dev/sound/pcm/feeder_format.c optional sound \
+ dependency "snd_fxdiv_gen.h"
+dev/sound/pcm/feeder_matrix.c optional sound \
+ dependency "snd_fxdiv_gen.h"
+dev/sound/pcm/feeder_mixer.c optional sound \
+ dependency "snd_fxdiv_gen.h"
+dev/sound/pcm/feeder_rate.c optional sound \
+ dependency "feeder_rate_gen.h" \
+ dependency "snd_fxdiv_gen.h"
+dev/sound/pcm/feeder_volume.c optional sound \
+ dependency "snd_fxdiv_gen.h"
dev/sound/pcm/mixer.c optional sound
dev/sound/pcm/mixer_if.m optional sound
dev/sound/pcm/sndstat.c optional sound
Modified: head/sys/conf/options
==============================================================================
--- head/sys/conf/options Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/conf/options Sun Jun 7 19:12:08 2009 (r193640)
@@ -830,3 +830,12 @@ VIMAGE_GLOBALS opt_global.h
# Common Flash Interface (CFI) options
CFI_SUPPORT_STRATAFLASH opt_cfi.h
CFI_ARMEDANDDANGEROUS opt_cfi.h
+
+# Sound options
+SND_DEBUG opt_snd.h
+SND_DIAGNOSTIC opt_snd.h
+SND_FEEDER_MULTIFORMAT opt_snd.h
+SND_FEEDER_FULL_MULTIFORMAT opt_snd.h
+SND_FEEDER_RATE_HP opt_snd.h
+SND_PCM_64 opt_snd.h
+SND_OLDSTEREO opt_snd.h
Modified: head/sys/dev/sound/clone.c
==============================================================================
--- head/sys/dev/sound/clone.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/clone.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -33,6 +33,10 @@
#include <sys/malloc.h>
#include <sys/proc.h>
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#if defined(SND_DIAGNOSTIC) || defined(SND_DEBUG)
#include <dev/sound/pcm/sound.h>
#endif
@@ -88,9 +92,9 @@ struct snd_clone {
#define SND_CLONE_ASSERT(x, y) do { \
if (!(x)) \
panic y; \
-} while(0)
+} while (0)
#else
-#define SND_CLONE_ASSERT(x...) KASSERT(x)
+#define SND_CLONE_ASSERT(...) KASSERT(__VA_ARGS__)
#endif
/*
Modified: head/sys/dev/sound/driver.c
==============================================================================
--- head/sys/dev/sound/driver.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/driver.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -26,6 +26,10 @@
* $FreeBSD$
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
static int
@@ -38,7 +42,7 @@ snd_modevent(module_t mod, int type, voi
case MOD_UNLOAD:
break;
default:
- return (EOPNOTSUPP);
+ return (ENOTSUP);
break;
}
return 0;
Modified: head/sys/dev/sound/isa/ad1816.c
==============================================================================
--- head/sys/dev/sound/isa/ad1816.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/ad1816.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -26,6 +26,10 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
#include <dev/sound/isa/ad1816.h>
@@ -62,14 +66,14 @@ struct ad1816_info {
};
static u_int32_t ad1816_fmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
- AFMT_MU_LAW,
- AFMT_STEREO | AFMT_MU_LAW,
- AFMT_A_LAW,
- AFMT_STEREO | AFMT_A_LAW,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
+ SND_FORMAT(AFMT_MU_LAW, 1, 0),
+ SND_FORMAT(AFMT_MU_LAW, 2, 0),
+ SND_FORMAT(AFMT_A_LAW, 1, 0),
+ SND_FORMAT(AFMT_A_LAW, 2, 0),
0
};
@@ -269,7 +273,7 @@ ad1816mix_set(struct snd_mixer *m, unsig
return left | (right << 8);
}
-static int
+static u_int32_t
ad1816mix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
struct ad1816_info *ad1816 = mix_getdevinfo(m);
@@ -303,7 +307,7 @@ static kobj_method_t ad1816mixer_methods
KOBJMETHOD(mixer_init, ad1816mix_init),
KOBJMETHOD(mixer_set, ad1816mix_set),
KOBJMETHOD(mixer_setrecsrc, ad1816mix_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(ad1816mixer);
@@ -315,23 +319,19 @@ ad1816chan_init(kobj_t obj, void *devinf
struct ad1816_info *ad1816 = devinfo;
struct ad1816_chinfo *ch = (dir == PCMDIR_PLAY)? &ad1816->pch : &ad1816->rch;
+ ch->dir = dir;
ch->parent = ad1816;
ch->channel = c;
ch->buffer = b;
if (sndbuf_alloc(ch->buffer, ad1816->parent_dmat, 0, ad1816->bufsize) != 0)
return NULL;
- return ch;
-}
-static int
-ad1816chan_setdir(kobj_t obj, void *data, int dir)
-{
- struct ad1816_chinfo *ch = data;
- struct ad1816_info *ad1816 = ch->parent;
+ sndbuf_dmasetup(ch->buffer, (dir == PCMDIR_PLAY) ? ad1816->drq1 :
+ ad1816->drq2);
+ if (SND_DMA(ch->buffer))
+ sndbuf_dmasetdir(ch->buffer, dir);
- sndbuf_dmasetup(ch->buffer, (dir == PCMDIR_PLAY)? ad1816->drq1 : ad1816->drq2);
- ch->dir = dir;
- return 0;
+ return ch;
}
static int
@@ -351,7 +351,7 @@ ad1816chan_setformat(kobj_t obj, void *d
ad1816_write(ad1816, 10, 0x0000);
ad1816_write(ad1816, 11, 0x0000);
}
- switch (format & ~AFMT_STEREO) {
+ switch (AFMT_ENCODING(format)) {
case AFMT_A_LAW:
fmt = AD1816_ALAW;
break;
@@ -372,7 +372,7 @@ ad1816chan_setformat(kobj_t obj, void *d
fmt = AD1816_U8;
break;
}
- if (format & AFMT_STEREO) fmt |= AD1816_STEREO;
+ if (AFMT_CHANNEL(format) > 1) fmt |= AD1816_STEREO;
io_wr(ad1816, reg, fmt);
ad1816_unlock(ad1816);
#if 0
@@ -382,7 +382,7 @@ ad1816chan_setformat(kobj_t obj, void *d
#endif
}
-static int
+static u_int32_t
ad1816chan_setspeed(kobj_t obj, void *data, u_int32_t speed)
{
struct ad1816_chinfo *ch = data;
@@ -395,7 +395,7 @@ ad1816chan_setspeed(kobj_t obj, void *da
return speed;
}
-static int
+static u_int32_t
ad1816chan_setblocksize(kobj_t obj, void *data, u_int32_t blocksize)
{
struct ad1816_chinfo *ch = data;
@@ -456,7 +456,7 @@ ad1816chan_trigger(kobj_t obj, void *dat
return 0;
}
-static int
+static u_int32_t
ad1816chan_getptr(kobj_t obj, void *data)
{
struct ad1816_chinfo *ch = data;
@@ -471,14 +471,13 @@ ad1816chan_getcaps(kobj_t obj, void *dat
static kobj_method_t ad1816chan_methods[] = {
KOBJMETHOD(channel_init, ad1816chan_init),
- KOBJMETHOD(channel_setdir, ad1816chan_setdir),
KOBJMETHOD(channel_setformat, ad1816chan_setformat),
KOBJMETHOD(channel_setspeed, ad1816chan_setspeed),
KOBJMETHOD(channel_setblocksize, ad1816chan_setblocksize),
KOBJMETHOD(channel_trigger, ad1816chan_trigger),
KOBJMETHOD(channel_getptr, ad1816chan_getptr),
KOBJMETHOD(channel_getcaps, ad1816chan_getcaps),
- { 0, 0 }
+ KOBJMETHOD_END
};
CHANNEL_DECLARE(ad1816chan);
Modified: head/sys/dev/sound/isa/ess.c
==============================================================================
--- head/sys/dev/sound/isa/ess.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/ess.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -29,6 +29,10 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
#include <dev/sound/isa/sb.h>
@@ -50,28 +54,28 @@ SND_DECLARE_FILE("$FreeBSD$");
#define ESS18XX_NEWSPEED
static u_int32_t ess_pfmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
- AFMT_S8,
- AFMT_STEREO | AFMT_S8,
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
- AFMT_U16_LE,
- AFMT_STEREO | AFMT_U16_LE,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
+ SND_FORMAT(AFMT_S8, 1, 0),
+ SND_FORMAT(AFMT_S8, 2, 0),
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
+ SND_FORMAT(AFMT_U16_LE, 1, 0),
+ SND_FORMAT(AFMT_U16_LE, 2, 0),
0
};
static struct pcmchan_caps ess_playcaps = {6000, 48000, ess_pfmt, 0};
static u_int32_t ess_rfmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
- AFMT_S8,
- AFMT_STEREO | AFMT_S8,
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
- AFMT_U16_LE,
- AFMT_STEREO | AFMT_U16_LE,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
+ SND_FORMAT(AFMT_S8, 1, 0),
+ SND_FORMAT(AFMT_S8, 2, 0),
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
+ SND_FORMAT(AFMT_U16_LE, 1, 0),
+ SND_FORMAT(AFMT_U16_LE, 2, 0),
0
};
@@ -458,7 +462,7 @@ ess_setupch(struct ess_info *sc, int ch,
{
int play = (dir == PCMDIR_PLAY)? 1 : 0;
int b16 = (fmt & AFMT_16BIT)? 1 : 0;
- int stereo = (fmt & AFMT_STEREO)? 1 : 0;
+ int stereo = (AFMT_CHANNEL(fmt) > 1)? 1 : 0;
int unsign = (fmt == AFMT_U8 || fmt == AFMT_U16_LE)? 1 : 0;
u_int8_t spdval, fmtval;
@@ -583,7 +587,7 @@ esschan_setformat(kobj_t obj, void *data
return 0;
}
-static int
+static u_int32_t
esschan_setspeed(kobj_t obj, void *data, u_int32_t speed)
{
struct ess_chinfo *ch = data;
@@ -597,7 +601,7 @@ esschan_setspeed(kobj_t obj, void *data,
return ch->spd;
}
-static int
+static u_int32_t
esschan_setblocksize(kobj_t obj, void *data, u_int32_t blocksize)
{
struct ess_chinfo *ch = data;
@@ -630,7 +634,7 @@ esschan_trigger(kobj_t obj, void *data,
return 0;
}
-static int
+static u_int32_t
esschan_getptr(kobj_t obj, void *data)
{
struct ess_chinfo *ch = data;
@@ -654,7 +658,7 @@ static kobj_method_t esschan_methods[] =
KOBJMETHOD(channel_trigger, esschan_trigger),
KOBJMETHOD(channel_getptr, esschan_getptr),
KOBJMETHOD(channel_getcaps, esschan_getcaps),
- { 0, 0 }
+ KOBJMETHOD_END
};
CHANNEL_DECLARE(esschan);
@@ -741,7 +745,7 @@ essmix_set(struct snd_mixer *m, unsigned
return left | (right << 8);
}
-static int
+static u_int32_t
essmix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
struct ess_info *sc = mix_getdevinfo(m);
@@ -776,7 +780,7 @@ static kobj_method_t essmixer_methods[]
KOBJMETHOD(mixer_init, essmix_init),
KOBJMETHOD(mixer_set, essmix_set),
KOBJMETHOD(mixer_setrecsrc, essmix_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(essmixer);
Modified: head/sys/dev/sound/isa/gusc.c
==============================================================================
--- head/sys/dev/sound/isa/gusc.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/gusc.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -34,7 +34,11 @@
#include <machine/resource.h>
#include <machine/bus.h>
#include <sys/rman.h>
-#include <sys/soundcard.h>
+
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
#include <dev/sound/chip.h>
#include "bus_if.h"
@@ -301,11 +305,9 @@ static int
gusc_attach(device_t dev)
{
sc_p scp;
- int unit;
void *ih;
scp = device_get_softc(dev);
- unit = device_get_unit(dev);
bzero(scp, sizeof(*scp));
@@ -580,16 +582,14 @@ alloc_resource(sc_p scp)
static int
release_resource(sc_p scp)
{
- int i, lid, flags;
+ int i, lid;
device_t dev;
- flags = 0;
if (isa_get_vendorid(scp->dev))
lid = isa_get_logicalid(scp->dev);
- else {
+ else
lid = LOGICALID_NOPNP;
- flags = device_get_flags(scp->dev);
- }
+
switch(lid) {
case LOGICALID_PCM:
case LOGICALID_NOPNP: /* XXX Non-PnP */
Modified: head/sys/dev/sound/isa/mss.c
==============================================================================
--- head/sys/dev/sound/isa/mss.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/mss.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -27,6 +27,10 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
SND_DECLARE_FILE("$FreeBSD$");
@@ -128,34 +132,34 @@ static int pnpmss_attach(device_t dev)
static driver_intr_t opti931_intr;
static u_int32_t mss_fmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
- AFMT_MU_LAW,
- AFMT_STEREO | AFMT_MU_LAW,
- AFMT_A_LAW,
- AFMT_STEREO | AFMT_A_LAW,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
+ SND_FORMAT(AFMT_MU_LAW, 1, 0),
+ SND_FORMAT(AFMT_MU_LAW, 2, 0),
+ SND_FORMAT(AFMT_A_LAW, 1, 0),
+ SND_FORMAT(AFMT_A_LAW, 2, 0),
0
};
static struct pcmchan_caps mss_caps = {4000, 48000, mss_fmt, 0};
static u_int32_t guspnp_fmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
- AFMT_A_LAW,
- AFMT_STEREO | AFMT_A_LAW,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
+ SND_FORMAT(AFMT_A_LAW, 1, 0),
+ SND_FORMAT(AFMT_A_LAW, 2, 0),
0
};
static struct pcmchan_caps guspnp_caps = {4000, 48000, guspnp_fmt, 0};
static u_int32_t opti931_fmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
0
};
static struct pcmchan_caps opti931_caps = {4000, 48000, opti931_fmt, 0};
@@ -520,7 +524,7 @@ mssmix_set(struct snd_mixer *m, unsigned
return left | (right << 8);
}
-static int
+static u_int32_t
mssmix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
struct mss_info *mss = mix_getdevinfo(m);
@@ -535,7 +539,7 @@ static kobj_method_t mssmix_mixer_method
KOBJMETHOD(mixer_init, mssmix_init),
KOBJMETHOD(mixer_set, mssmix_set),
KOBJMETHOD(mixer_setrecsrc, mssmix_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(mssmix_mixer);
@@ -604,7 +608,7 @@ ymmix_set(struct snd_mixer *m, unsigned
return left | (right << 8);
}
-static int
+static u_int32_t
ymmix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
struct mss_info *mss = mix_getdevinfo(m);
@@ -618,7 +622,7 @@ static kobj_method_t ymmix_mixer_methods
KOBJMETHOD(mixer_init, ymmix_init),
KOBJMETHOD(mixer_set, ymmix_set),
KOBJMETHOD(mixer_setrecsrc, ymmix_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(ymmix_mixer);
@@ -997,7 +1001,7 @@ static int
mss_format(struct mss_chinfo *ch, u_int32_t format)
{
struct mss_info *mss = ch->parent;
- int i, arg = format & ~AFMT_STEREO;
+ int i, arg = AFMT_ENCODING(format);
/*
* The data format uses 3 bits (just 2 on the 1848). For each
@@ -1014,7 +1018,7 @@ mss_format(struct mss_chinfo *ch, u_int3
ch->fmt = format;
for (i = 0; i < 8; i++) if (arg == fmts[i]) break;
arg = i << 1;
- if (format & AFMT_STEREO) arg |= 1;
+ if (AFMT_CHANNEL(format) > 1) arg |= 1;
arg <<= 4;
ad_enter_MCE(mss);
ad_write(mss, 8, (ad_read(mss, 8) & 0x0f) | arg);
@@ -1035,7 +1039,7 @@ mss_trigger(struct mss_chinfo *ch, int g
int retry, wr, cnt, ss;
ss = 1;
- ss <<= (ch->fmt & AFMT_STEREO)? 1 : 0;
+ ss <<= (AFMT_CHANNEL(ch->fmt) > 1)? 1 : 0;
ss <<= (ch->fmt & AFMT_16BIT)? 1 : 0;
wr = (ch->dir == PCMDIR_PLAY)? 1 : 0;
@@ -1170,12 +1174,12 @@ msschan_setformat(kobj_t obj, void *data
return 0;
}
-static int
+static u_int32_t
msschan_setspeed(kobj_t obj, void *data, u_int32_t speed)
{
struct mss_chinfo *ch = data;
struct mss_info *mss = ch->parent;
- int r;
+ u_int32_t r;
mss_lock(mss);
r = mss_speed(ch, speed);
@@ -1184,7 +1188,7 @@ msschan_setspeed(kobj_t obj, void *data,
return r;
}
-static int
+static u_int32_t
msschan_setblocksize(kobj_t obj, void *data, u_int32_t blocksize)
{
struct mss_chinfo *ch = data;
@@ -1211,7 +1215,7 @@ msschan_trigger(kobj_t obj, void *data,
return 0;
}
-static int
+static u_int32_t
msschan_getptr(kobj_t obj, void *data)
{
struct mss_chinfo *ch = data;
@@ -1247,7 +1251,7 @@ static kobj_method_t msschan_methods[] =
KOBJMETHOD(channel_trigger, msschan_trigger),
KOBJMETHOD(channel_getptr, msschan_getptr),
KOBJMETHOD(channel_getcaps, msschan_getcaps),
- { 0, 0 }
+ KOBJMETHOD_END
};
CHANNEL_DECLARE(msschan);
Modified: head/sys/dev/sound/isa/sb16.c
==============================================================================
--- head/sys/dev/sound/isa/sb16.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/sb16.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -29,6 +29,10 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
#include <dev/sound/isa/sb.h>
@@ -44,24 +48,24 @@ SND_DECLARE_FILE("$FreeBSD$");
#define PLAIN_SB16(x) ((((x)->bd_flags) & (BD_F_SB16|BD_F_SB16X)) == BD_F_SB16)
static u_int32_t sb16_fmt8[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
0
};
static struct pcmchan_caps sb16_caps8 = {5000, 45000, sb16_fmt8, 0};
static u_int32_t sb16_fmt16[] = {
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
0
};
static struct pcmchan_caps sb16_caps16 = {5000, 45000, sb16_fmt16, 0};
static u_int32_t sb16x_fmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
- AFMT_S16_LE,
- AFMT_STEREO | AFMT_S16_LE,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
+ SND_FORMAT(AFMT_S16_LE, 1, 0),
+ SND_FORMAT(AFMT_S16_LE, 2, 0),
0
};
static struct pcmchan_caps sb16x_caps = {5000, 49000, sb16x_fmt, 0};
@@ -366,7 +370,7 @@ sb16mix_set(struct snd_mixer *m, unsigne
return left | (right << 8);
}
-static int
+static u_int32_t
sb16mix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
struct sb_info *sb = mix_getdevinfo(m);
@@ -420,7 +424,7 @@ static kobj_method_t sb16mix_mixer_metho
KOBJMETHOD(mixer_init, sb16mix_init),
KOBJMETHOD(mixer_set, sb16mix_set),
KOBJMETHOD(mixer_setrecsrc, sb16mix_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(sb16mix_mixer);
@@ -633,7 +637,7 @@ sb_setup(struct sb_info *sb)
v |= (ch->fmt & AFMT_16BIT)? DSP_DMA16 : DSP_DMA8;
sb_cmd(sb, v);
- v = (ch->fmt & AFMT_STEREO)? DSP_F16_STEREO : 0;
+ v = (AFMT_CHANNEL(ch->fmt) > 1)? DSP_F16_STEREO : 0;
v |= (ch->fmt & AFMT_SIGNED)? DSP_F16_SIGNED : 0;
sb_cmd2(sb, v, l);
sndbuf_dma(ch->buffer, PCMTRIG_START);
@@ -658,7 +662,7 @@ sb_setup(struct sb_info *sb)
v |= (ch->fmt & AFMT_16BIT)? DSP_DMA16 : DSP_DMA8;
sb_cmd(sb, v);
- v = (ch->fmt & AFMT_STEREO)? DSP_F16_STEREO : 0;
+ v = (AFMT_CHANNEL(ch->fmt) > 1)? DSP_F16_STEREO : 0;
v |= (ch->fmt & AFMT_SIGNED)? DSP_F16_SIGNED : 0;
sb_cmd2(sb, v, l);
sndbuf_dma(ch->buffer, PCMTRIG_START);
@@ -700,7 +704,7 @@ sb16chan_setformat(kobj_t obj, void *dat
return 0;
}
-static int
+static u_int32_t
sb16chan_setspeed(kobj_t obj, void *data, u_int32_t speed)
{
struct sb_chinfo *ch = data;
@@ -709,7 +713,7 @@ sb16chan_setspeed(kobj_t obj, void *data
return speed;
}
-static int
+static u_int32_t
sb16chan_setblocksize(kobj_t obj, void *data, u_int32_t blocksize)
{
struct sb_chinfo *ch = data;
@@ -737,7 +741,7 @@ sb16chan_trigger(kobj_t obj, void *data,
return 0;
}
-static int
+static u_int32_t
sb16chan_getptr(kobj_t obj, void *data)
{
struct sb_chinfo *ch = data;
@@ -777,7 +781,7 @@ static kobj_method_t sb16chan_methods[]
KOBJMETHOD(channel_trigger, sb16chan_trigger),
KOBJMETHOD(channel_getptr, sb16chan_getptr),
KOBJMETHOD(channel_getcaps, sb16chan_getcaps),
- { 0, 0 }
+ KOBJMETHOD_END
};
CHANNEL_DECLARE(sb16chan);
Modified: head/sys/dev/sound/isa/sb8.c
==============================================================================
--- head/sys/dev/sound/isa/sb8.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/sb8.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -29,6 +29,10 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
#include <dev/sound/isa/sb.h>
@@ -43,7 +47,7 @@ SND_DECLARE_FILE("$FreeBSD$");
#define SB_DEFAULT_BUFSZ 4096
static u_int32_t sb_fmt[] = {
- AFMT_U8,
+ SND_FORMAT(AFMT_U8, 1, 0),
0
};
static struct pcmchan_caps sb200_playcaps = {4000, 23000, sb_fmt, 0};
@@ -52,8 +56,8 @@ static struct pcmchan_caps sb201_playcap
static struct pcmchan_caps sb201_reccaps = {4000, 15000, sb_fmt, 0};
static u_int32_t sbpro_fmt[] = {
- AFMT_U8,
- AFMT_STEREO | AFMT_U8,
+ SND_FORMAT(AFMT_U8, 1, 0),
+ SND_FORMAT(AFMT_U8, 2, 0),
0
};
static struct pcmchan_caps sbpro_playcaps = {4000, 44100, sbpro_fmt, 0};
@@ -372,7 +376,7 @@ sbpromix_set(struct snd_mixer *m, unsign
return left | (right << 8);
}
-static int
+static u_int32_t
sbpromix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
struct sb_info *sb = mix_getdevinfo(m);
@@ -395,7 +399,7 @@ static kobj_method_t sbpromix_mixer_meth
KOBJMETHOD(mixer_init, sbpromix_init),
KOBJMETHOD(mixer_set, sbpromix_set),
KOBJMETHOD(mixer_setrecsrc, sbpromix_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(sbpromix_mixer);
@@ -453,7 +457,7 @@ sbmix_set(struct snd_mixer *m, unsigned
return left | (left << 8);
}
-static int
+static u_int32_t
sbmix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
return 0;
@@ -463,7 +467,7 @@ static kobj_method_t sbmix_mixer_methods
KOBJMETHOD(mixer_init, sbmix_init),
KOBJMETHOD(mixer_set, sbmix_set),
KOBJMETHOD(mixer_setrecsrc, sbmix_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(sbmix_mixer);
@@ -496,7 +500,7 @@ sb_speed(struct sb_chinfo *ch)
{
struct sb_info *sb = ch->parent;
int play = (ch->dir == PCMDIR_PLAY)? 1 : 0;
- int stereo = (ch->fmt & AFMT_STEREO)? 1 : 0;
+ int stereo = (AFMT_CHANNEL(ch->fmt) > 1)? 1 : 0;
int speed, tmp, thresh, max;
u_char tconst;
@@ -537,7 +541,7 @@ sb_start(struct sb_chinfo *ch)
{
struct sb_info *sb = ch->parent;
int play = (ch->dir == PCMDIR_PLAY)? 1 : 0;
- int stereo = (ch->fmt & AFMT_STEREO)? 1 : 0;
+ int stereo = (AFMT_CHANNEL(ch->fmt) > 1)? 1 : 0;
int l = ch->blksz;
u_char i;
@@ -614,7 +618,7 @@ sbchan_setformat(kobj_t obj, void *data,
return 0;
}
-static int
+static u_int32_t
sbchan_setspeed(kobj_t obj, void *data, u_int32_t speed)
{
struct sb_chinfo *ch = data;
@@ -623,7 +627,7 @@ sbchan_setspeed(kobj_t obj, void *data,
return sb_speed(ch);
}
-static int
+static u_int32_t
sbchan_setblocksize(kobj_t obj, void *data, u_int32_t blocksize)
{
struct sb_chinfo *ch = data;
@@ -648,7 +652,7 @@ sbchan_trigger(kobj_t obj, void *data, i
return 0;
}
-static int
+static u_int32_t
sbchan_getptr(kobj_t obj, void *data)
{
struct sb_chinfo *ch = data;
@@ -677,7 +681,7 @@ static kobj_method_t sbchan_methods[] =
KOBJMETHOD(channel_trigger, sbchan_trigger),
KOBJMETHOD(channel_getptr, sbchan_getptr),
KOBJMETHOD(channel_getcaps, sbchan_getcaps),
- { 0, 0 }
+ KOBJMETHOD_END
};
CHANNEL_DECLARE(sbchan);
Modified: head/sys/dev/sound/isa/sbc.c
==============================================================================
--- head/sys/dev/sound/isa/sbc.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/sbc.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -24,6 +24,10 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/chip.h>
#include <dev/sound/pcm/sound.h>
#include <dev/sound/isa/sb.h>
Modified: head/sys/dev/sound/isa/sndbuf_dma.c
==============================================================================
--- head/sys/dev/sound/isa/sndbuf_dma.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/isa/sndbuf_dma.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -24,6 +24,10 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
#include <isa/isavar.h>
Modified: head/sys/dev/sound/macio/aoa.c
==============================================================================
--- head/sys/dev/sound/macio/aoa.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/macio/aoa.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -43,8 +43,14 @@
#include <machine/bus.h>
#include <sys/rman.h>
#include <dev/ofw/ofw_bus.h>
+
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
#include <dev/sound/macio/aoa.h>
+
#include "mixer_if.h"
struct aoa_dma {
@@ -138,7 +144,7 @@ aoa_dma_delete(struct aoa_dma *dma)
free(dma, M_DEVBUF);
}
-static int
+static u_int32_t
aoa_chan_setblocksize(kobj_t obj, void *data, u_int32_t blocksz)
{
struct aoa_dma *dma = data;
@@ -186,13 +192,13 @@ aoa_chan_setformat(kobj_t obj, void *dat
{
DPRINTF(("aoa_chan_setformat: format = %u\n", format));
- if (format != (AFMT_STEREO | AFMT_S16_BE))
+ if (format != SND_FORMAT(AFMT_S16_BE, 2, 0))
return (EINVAL);
return (0);
}
-static int
+static u_int32_t
aoa_chan_setspeed(kobj_t obj, void *data, u_int32_t speed)
{
DPRINTF(("aoa_chan_setspeed: speed = %u\n", speed));
@@ -200,7 +206,7 @@ aoa_chan_setspeed(kobj_t obj, void *data
return (44100);
}
-static int
+static u_int32_t
aoa_chan_getptr(kobj_t obj, void *data)
{
struct aoa_dma *dma = data;
@@ -332,7 +338,7 @@ aoa_interrupt(void *xsc)
}
static u_int32_t sc_fmt[] = {
- AFMT_S16_BE | AFMT_STEREO,
+ SND_FORMAT(AFMT_S16_BE, 2, 0),
0
};
static struct pcmchan_caps aoa_caps = {44100, 44100, sc_fmt, 0};
@@ -352,7 +358,7 @@ static kobj_method_t aoa_chan_methods[]
KOBJMETHOD(channel_trigger, aoa_chan_trigger),
KOBJMETHOD(channel_getptr, aoa_chan_getptr),
KOBJMETHOD(channel_getcaps, aoa_chan_getcaps),
- { 0, 0 }
+ KOBJMETHOD_END
};
CHANNEL_DECLARE(aoa_chan);
Modified: head/sys/dev/sound/macio/davbus.c
==============================================================================
--- head/sys/dev/sound/macio/davbus.c Sun Jun 7 18:53:25 2009 (r193639)
+++ head/sys/dev/sound/macio/davbus.c Sun Jun 7 19:12:08 2009 (r193640)
@@ -40,7 +40,13 @@
#include <sys/rman.h>
#include <dev/ofw/ofw_bus.h>
+
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_snd.h"
+#endif
+
#include <dev/sound/pcm/sound.h>
+
#include <dev/sound/macio/aoa.h>
#include <dev/sound/macio/davbusreg.h>
@@ -115,7 +121,7 @@ static void burgundy_set_outputs(struct
static u_int burgundy_read_status(struct davbus_softc *d, u_int status);
static int burgundy_set(struct snd_mixer *m, unsigned dev, unsigned left,
unsigned right);
-static int burgundy_setrecsrc(struct snd_mixer *m, u_int32_t src);
+static u_int32_t burgundy_setrecsrc(struct snd_mixer *m, u_int32_t src);
static kobj_method_t burgundy_mixer_methods[] = {
KOBJMETHOD(mixer_init, burgundy_init),
@@ -123,7 +129,7 @@ static kobj_method_t burgundy_mixer_meth
KOBJMETHOD(mixer_reinit, burgundy_reinit),
KOBJMETHOD(mixer_set, burgundy_set),
KOBJMETHOD(mixer_setrecsrc, burgundy_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
MIXER_DECLARE(burgundy_mixer);
@@ -293,7 +299,7 @@ burgundy_set(struct snd_mixer *m, unsign
return (0);
}
-static int
+static u_int32_t
burgundy_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
return (0);
@@ -311,7 +317,7 @@ static void screamer_set_outputs(struct
static u_int screamer_read_status(struct davbus_softc *d, u_int status);
static int screamer_set(struct snd_mixer *m, unsigned dev, unsigned left,
unsigned right);
-static int screamer_setrecsrc(struct snd_mixer *m, u_int32_t src);
+static u_int32_t screamer_setrecsrc(struct snd_mixer *m, u_int32_t src);
static kobj_method_t screamer_mixer_methods[] = {
KOBJMETHOD(mixer_init, screamer_init),
@@ -319,7 +325,7 @@ static kobj_method_t screamer_mixer_meth
KOBJMETHOD(mixer_reinit, screamer_reinit),
KOBJMETHOD(mixer_set, screamer_set),
KOBJMETHOD(mixer_setrecsrc, screamer_setrecsrc),
- { 0, 0 }
+ KOBJMETHOD_END
};
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-head
mailing list